项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 1266
技术标签
使用教程
ℹ 本教程由 AI 依据该项目 README 整理,个别步骤可能需要按你的环境微调。
环境要求
- Apple Silicon 设备(Mac 或 iOS),项目专为 Apple Silicon 打造
- Swift / Xcode 工具链,用于 Swift Package Manager 集成
- 首次使用需要联网,从 HuggingFace 下载模型权重
- (可选)国内网络环境需准备 HuggingFace 镜像地址
安装与启动步骤
-
1确认设备与工具链
speech-swift 面向 Mac 和 iOS,且只在 Apple Silicon 上本地运行。请确认使用 Apple Silicon 设备并已安装 Xcode / Swift 工具链。
-
2添加 SPM 依赖
在项目的 Package.swift 中把 speech-swift 以分支 main 的方式加进依赖列表。注意这里用 branch: "main"。
.package(url: "https://github.com/soniqo/speech-swift", branch: "main") -
3声明所需模块
每个模型都是独立的 SPM library,按需引入即可,不用的模块不会增加体积。下面以流式 ASR 和可选 UI 为例。
.product(name: "ParakeetStreamingASR", package: "speech-swift"), .product(name: "SpeechUI", package: "speech-swift"), // optional SwiftUI views -
4三行代码转写音频
导入模块后调用 fromPretrained() 加载模型,再用 transcribeAudio 把 16kHz 音频采样转成文本。
import ParakeetStreamingASR let model = try await ParakeetStreamingASRModel.fromPretrained() let text = try model.transcribeAudio(audioSamples, sampleRate: 16000) -
5接入实时流式识别
调用 transcribeStream 逐段获取识别结果,partial.isFinal 为 true 表示该句已最终确定,否则是临时结果。
for await partial in model.transcribeStream(audio: samples, sampleRate: 16000) { print(partial.isFinal ? "FINAL: \(partial.text)" : "... \(partial.text)") } -
6配置国内镜像
如果 huggingface.co 访问慢或被墙,设置 HF_ENDPOINT 环境变量改用镜像站点下载模型权重。
export HF_ENDPOINT=https://hf-mirror.com
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
HF_ENDPOINT | 否 | 指定 HuggingFace 镜像地址,加快权重下载 | https://hf-mirror.com |
QWEN3_CACHE_DIR | 否 | 覆盖 CLI 默认的模型权重缓存目录 | /your/path/qwen3-cache |
cacheDir: | 否 | Swift API 中覆盖权重缓存目录的参数 | cacheDir: /your/path/qwen3-cache |
offlineMode | 否 | 权重已缓存时跳过联网,所有 fromPretrained() 入口都支持 | offlineMode: true |
如何确认成功
首次调用 fromPretrained() 会下载权重并缓存,随后 transcribeAudio 能返回识别文本且控制台无报错,即表示接入成功。
常见问题
Q:模型权重下载到哪里?
A:首次使用时会从 HuggingFace 下载并缓存到 ~/Library/Caches/qwen3-speech/,可用 QWEN3_CACHE_DIR(CLI)或 cacheDir:(Swift API)覆盖。
Q:国内下载很慢或失败怎么办?
A:设置环境变量 HF_ENDPOINT 指向镜像,例如 export HF_ENDPOINT=https://hf-mirror.com 后再运行下载。
Q:可以完全离线使用吗?
A:可以。权重已经缓存后,给所有 fromPretrained() 入口传 offlineMode: true 即可跳过网络请求。
Q:怎么只引入需要的能力?
A:每个模型都是独立的 SPM library(如 Qwen3ASR、KokoroTTS、SpeechVAD 等),在 Package.swift 里只声明用到的 product 即可,不用的不会引入。
Q:有现成的命令行工具吗?
A:README 中 Installation 章节为空,未给出 CLI 安装命令;顶部徽章指向 Homebrew 公式 speech,具体安装方式请以官网文档为准。
注意事项
- README 的 Installation 章节为空,本文步骤基于 Quick start 与缓存配置章节,完整说明请查阅官网 soniqo.audio 与 docs/inference/cache-and-offline.md。
- 全部推理在设备端完成:无需云端、无需 API Key,音频数据不会离开设备。
- 代码示例中的音频变量(audioSamples / samples)需由你通过 AVFoundation 等自行采集,采样率按示例传 16000。
- iOS 沙盒容器中的缓存路径与 macOS 不同,详见 docs/inference/cache-and-offline.md。
核心亮点
- 基于 MLX 和 CoreML,充分利用 Apple Silicon 神经引擎,推理速度快
- 覆盖 ASR、TTS、VAD、说话人分离等完整语音链路,开箱即用
- 纯 Swift 实现,与 iOS/macOS 生态深度集成,开发体验友好
不足之处
- 仅支持 Apple Silicon 设备,无法在旧款 Intel Mac 或非苹果平台使用
- 文档和示例相对较少,社区生态尚在成长中
适用场景
- 开发离线语音助手或智能家居控制应用
- 构建实时会议记录与说话人分离工具
- 为无障碍应用提供本地语音识别与合成能力
替代项目
whisper.cpp、Vosk、Sherpa-ONNX
上一篇:StreamSpeech
同类项目推荐
speech-to-phrase
开源
本地跑,只认你定义的短语,又快又准。
Fast and personalized local speech-to-text
yapsnap
开源
一条命令,把视频音频转成文字,不用显卡不用云
Transcribe any video URL or audio file into plaintext. No GPU. No cloud. One command···
PyAutoSRT
开源
拖入视频,自动生成原文+翻译字幕
PySimpleGUI based DESKTOP APP to AUTO GENERATE SUBTITLE FILE (using free Google Spee···
stt-server
开源
WebSocket 实时语音转文字,边说边出字,可换 ASR 后端
Real-time speech-to-text WebSocket server with pluggable ASR backends, energy-based ···
WhisperLive
开源
让 Whisper 实时转写,直播字幕、会议记录秒出
A nearly-live implementation of OpenAI's Whisper.
easy-whisper-ui
开源
点点鼠标,把录音批量转成文字
Easy to use interface for the Whisper model optimized for all GPUs!
MiMo-V2.5-ASR
开源
多语言方言嘈杂环境也能转写的语音识别模型
Robust Speech Recognition Across Languages, Dialects, and Complex Acoustic Scenarios
Confucius4-R2T2
开源
边说边转文字,低延迟还不掉准确率
Confucius4-R2T2: A Low Latency and High Accuracy Real-Time Speech Recognition Model
SpeechKITT
开源
几行代码给网页加上语音识别按钮
A flexible GUI for Speech Recognition
