快速开始

speech-swift 为 Apple Silicon 上的 macOS 和 iOS 提供端侧 AI 语音处理。模型通过 MLX(Metal GPU)和 CoreML(Neural Engine)在本地运行。

环境要求

安装

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)
SpeechVADVAD(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 VAD5.7 MB峰值约 20 MB
Silero VAD v51.2 MB峰值约 5 MB
WeSpeaker ResNet3425 MB峰值约 50 MB
DeepFilterNet3(FP16)4.2 MB峰值约 10 MB

下一步