快速开始
speech-swift 为 Apple Silicon 上的 macOS 和 iOS 提供端侧 AI 语音处理。模型通过 MLX(Metal GPU)和 CoreML(Neural Engine)在本地运行。
环境要求
- macOS 14+(Sonoma 或更新版本)
- Apple Silicon(M1、M2、M3、M4 系列)
- Xcode 15.4+ / Swift 6.0+
- 最低 8 GB 内存(较大模型建议 16 GB)
安装
Swift Package Manager
将 speech-swift 添加到你的 Package.swift 依赖中:
dependencies: [
.package(url: "https://github.com/soniqo/speech-swift", from: "0.0.9")
]
然后按需将所需模块添加到你的 target:
.target(
name: "MyApp",
dependencies: [
.product(name: "Qwen3ASR", package: "speech-swift"),
.product(name: "Qwen3TTS", package: "speech-swift"),
.product(name: "SpeechVAD", package: "speech-swift"),
// ... add any modules you need
]
)
可用模块
| 模块 | 说明 |
|---|---|
Qwen3ASR | 语音转文字(Qwen3-ASR) |
ParakeetASR | 语音转文字(Parakeet TDT,CoreML) |
Qwen3TTS | 文本转语音(Qwen3-TTS) |
CosyVoiceTTS | 文本转语音(CosyVoice3,多语种) |
KokoroTTS | 文本转语音(Kokoro-82M,CoreML,iOS 就绪) |
Qwen3Chat | 端侧 LLM 对话(Qwen3.5-0.8B,MLX + CoreML) |
PersonaPlex | 语音到语音(PersonaPlex 7B) |
SpeechVAD | VAD(Silero + Pyannote)、说话人分离、说话人 embedding |
SpeechEnhancement | 降噪(DeepFilterNet3,CoreML) |
AudioCommon | 共享协议、音频 I/O、HuggingFace 下载器 |
从源码构建
克隆仓库并构建:
git clone https://github.com/soniqo/speech-swift.git
cd speech-swift
make build
重要
make build 会自动编译 MLX Metal 着色器库。如果没有它,由于 JIT 着色器编译,GPU 推理速度会慢约 5 倍。
快速开始:音频转写
CLI
# Transcribe a WAV file
.build/release/audio transcribe recording.wav
Swift API
import Qwen3ASR
let model = try await Qwen3ASRModel.loadFromHub()
let result = try await model.transcribe(audioFile: "recording.wav")
print(result.text)
模型在首次使用时会自动从 HuggingFace 下载,并缓存在 ~/Library/Caches/qwen3-speech/。
快速开始:文本转语音
CLI
# Generate speech
.build/release/audio speak "Hello, world!" --output hello.wav
Swift API
import Qwen3TTS
let model = try await Qwen3TTSModel.loadFromHub()
let audio = try await model.speak("Hello, world!")
try audio.write(to: "hello.wav")
模型下载
所有模型在首次使用时从 HuggingFace 下载。大致大小:
| 模型 | 大小 | RAM 占用 |
|---|---|---|
| Qwen3-ASR 0.6B(4 位) | 680 MB | 峰值约 2.2 GB |
| Qwen3-ASR 0.6B(8 位) | 1.0 GB | 峰值约 2.5 GB |
| Qwen3-ASR 1.7B(4 位) | 2.1 GB | 峰值约 4 GB |
| Parakeet-TDT(CoreML INT8) | 500 MB | 峰值约 600 MB |
| Qwen3-TTS 0.6B(4 位) | 1.7 GB | 峰值约 2 GB |
| Qwen3-TTS 1.7B(4 位) | 3.2 GB | 峰值约 4 GB |
| CosyVoice3(4 位 LLM) | 1.2 GB | 峰值约 1.5 GB |
| Kokoro-82M(CoreML INT8) | 89 MB | 峰值约 200 MB |
| Qwen3.5-Chat 0.8B(INT4 MLX) | 418 MB | 峰值约 700 MB |
| Qwen3.5-Chat 0.8B(INT8 CoreML) | 981 MB | 峰值约 1.2 GB |
| PersonaPlex 7B(8 位)推荐 | 9.1 GB | 峰值约 11 GB |
| PersonaPlex 7B(4 位) | 4.9 GB | 峰值约 6.5 GB |
| Pyannote VAD | 5.7 MB | 峰值约 20 MB |
| Silero VAD v5 | 1.2 MB | 峰值约 5 MB |
| WeSpeaker ResNet34 | 25 MB | 峰值约 50 MB |
| DeepFilterNet3(FP16) | 4.2 MB | 峰值约 10 MB |
下一步
- CLI 参考 —— 所有可用命令与选项
- Qwen3-ASR 指南 —— 详细的语音转文字文档
- Qwen3-TTS 指南 —— 详细的文本转语音文档
- API 与协议 —— 共享协议和类型