Speech Swift:专为 Apple Silicon 打造的本地 AI 语音工具包

探索 Speech Swift,一个开源工具包,利用 MLX 和 CoreML 在 Apple Silicon 上实现 ASR、TTS、语音到语音、VAD 和说话人分离。

什么是 Speech Swift?

Speech Swift 是一个专为 Apple Silicon(M 系列芯片和神经网络引擎)设计的开源 AI 语音工具包。它将一系列全面的语音功能——自动语音识别(ASR)、文本转语音(TTS)、语音到语音翻译、语音活动检测(VAD)、说话人分离等——直接带到你的 Mac 或 iOS 设备上。所有处理都在本地进行,无需云依赖、无需 API 密钥,数据不会离开你的设备。

为什么本地语音处理很重要

在设备上运行语音模型具有几个关键优势:

  • 隐私:音频数据永远不会离开你的设备,消除了对基于云的录音或转录的担忧。
  • 低延迟:本地推理消除了网络往返,实现了实时流式传输和交互式语音代理。
  • 离线能力:无需互联网连接即可工作,非常适合旅行、偏远地区或安全环境。
  • 成本:无需 API 使用费或云计算成本。

关键能力和模型

Speech Swift 组织成模块化的 Swift Package Manager(SPM)目标,因此你只需导入所需的部分。以下是主要能力组的细分:

语音转文本(ASR)

  • Qwen3-ASR:支持 52 种语言的语音转文本,具有混合 MLX 和 CoreML 后端。提供 0.6B 和 1.7B 参数大小。
  • WhisperASR:OpenAI 的 Whisper Large-v3 Turbo 的原生 CoreML 实现,针对神经网络引擎进行了优化。
  • Parakeet TDT:NVIDIA 的 FastConformer 与 TDT 解码器,通过 CoreML 支持 25 种欧洲语言。
  • Omnilingual ASR:Meta 基于 wav2vec2 的模型,覆盖 32 种文字中的 1,672 种语言,提供 CoreML(300M)和 MLX(300M/1B/3B/7B)变体。在 iPhone 16 Pro 上实现 0.28 RTF。
  • 流式听写:具有部分结果和话语结束检测的实时听写(Parakeet-EOU-120M),在 iPhone 16 Pro 上实现 0.04 RTF。
  • Nemotron 流式:NVIDIA 的低延迟流式 ASR,具有原生标点和大写功能,提供多语言(40 种语言区域)和仅英语变体。

文本转语音(TTS)

  • Qwen3-TTS:高质量流式 TTS,支持自定义说话人,10 种语言。
  • CosyVoice TTS:流式 TTS,具有语音克隆、多说话人对话和情感标签(9 种语言)。
  • VoxCPM2:48 kHz 录音室品质 TTS,具有语音克隆和指令驱动的语音设计(2B 参数,MLX bf16/int8,30 种语言)。
  • IndexTTS2:基于参考语音的原生 MLX 语音克隆(1.5B 级,英语和普通话)。
  • F5-TTS:基于短参考剪辑的零样本语音克隆(DiT 流匹配 + Vocos,MLX fp16,24 kHz)。
  • Higgs TTS 3:对话式 TTS,具有零样本语音克隆和内联情感/风格/音效/韵律标签(Boson Higgs TTS 3,Qwen3-4B 骨干,MLX bf16,100+ 种语言)。
  • Kokoro TTS:轻量级本地 TTS(82M 参数,CoreML/神经网络引擎,54 种声音,iOS 就绪,10 种语言),在 iPhone 16 Pro 上实现 0.08 RTF。
  • VibeVoice TTS:长格式/多说话人 TTS,用于长达 90 分钟的播客/有声书合成(Microsoft VibeVoice Realtime-0.5B + 1.5B,MLX,英语和中文)。
  • Magpie TTS:NVIDIA 的多语言 TTS(357M 参数,MLX INT8 或 CoreML INT8,9 种语言,5 个内置说话人)。
  • Supertonic TTS:本地流匹配 TTS(99M 参数,CoreML/神经网络引擎,31 种语言,10 种声音,44.1 kHz),在 iPhone 16 Pro 上实现 0.15 RTF。
  • Chatterbox TTS:多语言 TTS,具有零样本语音克隆(Resemble AI,MLX fp16,23 种运行时语言)。
  • OmniVoice TTS:非自回归扩散 TTS,具有零样本语音克隆(k2-fsa,Qwen3 骨干,MLX,600+ 种语言,Apache-2.0)。
  • Indic-Mio:印地语/印度语 TTS,具有内联情感标记和可选的参考语音克隆(MLX,24 kHz)。

大语言模型和翻译

  • Qwen3Chat:具有流式令牌的本地 LLM 聊天(Qwen3.5-0.8B MLX/CoreML,以及 Qwen3 4B 和 Gemma 4 E2B/E4B MLX 后端)。
  • FunctionGemma:用于结构化函数/工具调用的本地 LLM(Gemma 3 270M,CoreML 8 位调色板,神经网络引擎,M5 Pro 上约 252 tok/s,iPhone 16 Pro 上 128 tok/s)。
  • MADLAD-400:跨 400+ 种语言的多对多翻译(3B,MLX INT4 + INT8,T5 v1.1,Apache 2.0)。

语音到语音和语音代理

  • Hibiki Zero-3B:流式语音到语音翻译(法语/西班牙语/葡萄牙语/德语到英语,MLX INT4 + INT8,Kyutai Moshi/Mimi 堆栈)。
  • PersonaPlex:全双工语音到语音(7B 参数,音频输入 → 音频输出,18 种语音预设)。
  • Audio2Face-3D:用于虚拟形象的语音驱动面部动画(NVIDIA Audio2Face-3D v2.3 Mark,301 个面部系数,MLX)。

增强、分离和音频生成

  • DeepFilterNet3:实时噪声抑制(2.1M 参数,48 kHz)。
  • 源分离:通过 HTDemucs(Demucs v4)和 Open-Unmix(4 个音轨:人声、鼓、贝斯、其他)进行音乐源分离。
  • MAGNeT:文本到音乐生成(Meta MAGNeT Small 300M / Medium 1.5B,MLX INT8,32 kHz 下 30 秒片段)。
  • Stable Audio 3:文本到音频/音乐生成(Stable Audio 3 Medium,MLX INT8/INT4,44.1 kHz 立体声,可变长度)。
  • FlashSR:音频超分辨率(FlashSR ICASSP 2025,MLX,48 kHz 单声道,1 步蒸馏扩散)。

话轮检测、说话人分离和说话人身份

  • 唤醒词:本地关键词检测(KWS Zipformer 3M,CoreML,26 倍实时,可配置关键词列表)。
  • VAD:语音活动检测(Silero 流式,Pyannote 离线,FireRedVAD 100+ 种语言)。
  • 说话人分离:谁在何时说话(Pyannote 流水线,Sortformer 端到端在神经网络引擎上)。
  • 说话人嵌入:WeSpeaker ResNet34(256 维),CAM++(192 维)。

入门指南

通过 Swift Package Manager 安装

将包添加到你的 Package.swift

.package(url: "https://github.com/soniqo/speech-swift", branch: "main")

然后只导入你需要的模块:

.product(name: "ParakeetStreamingASR", package: "speech-swift"),
.product(name: "SpeechUI", package: "speech-swift"), // 可选的 SwiftUI 视图

用 3 行代码转录音频

import ParakeetStreamingASR

let model = try await ParakeetStreamingASRModel.fromPretrained()
let text = try model.transcribeAudio(audioSamples, sampleRate: 16000)

带部分结果的实时流式传输

for await partial in model.transcribeStream(audio: samples, sampleRate: 16000) {
    print(partial.isFinal ? "FINAL: \(partial.text)" : "... \(partial.text)")
}

SwiftUI 听写视图

import SwiftUI
import ParakeetStreamingASR
import SpeechUI

@MainActor
struct DictateView: View {
    @State private var store = TranscriptionStore()

    var body: some View {
        TranscriptionView(finals: store.finalLines, currentPartial: store.currentPartial)
            .task {
                let model = try? await ParakeetStreamingASRModel.fromPretrained()
                guard let model else { return }
                for await p in model.transcribeStream(audio: samples, sampleRate: 16000) {
                    store.apply(text: p.text, isFinal: p.isFinal)
                }
            }
    }
}

文本转语音

import Qwen3TTS
import AudioCommon

let model = try await Qwen3TTSModel.fromPretrained()
let audio = model.synthesize(text: "Hello world", language: "english")
try WAVWriter.write(samples: audio, sampleRate: 24000, to: outputURL)

语音活动检测

import SpeechVAD

let vad = try await SileroVADModel.fromPretrained()
let segments = vad.detectSpeech(audio: samples, sampleRate: 16000)
for s in segments { print("\(s.startTime)s → \(s.endTime)s") }

说话人分离

import SpeechVAD

let diarizer = try await DiarizationPipeline.fromPretrained()
let segments = diarizer.diarize(audio: samples, sampleRate: 16000)
for s in segments { print("Speaker \(s.speakerId): \(s.startTime)s - \(s.endTime)s") }

架构与设计

Speech Swift 被拆分为每个模型一个 SPM 目标,因此使用者只需为他们导入的内容付费。共享基础设施位于 AudioCommon(协议、音频 I/O、HuggingFace 下载器、SentencePieceModel)和 MLXCommon(权重加载、QuantizedLinear 辅助函数、SDPA 多头注意力辅助函数)中。

模型权重和缓存

模型权重在首次使用时从 HuggingFace 下载,并缓存到 ~/Library/Caches/qwen3-speech/。你可以通过 QWEN3_CACHE_DIR(CLI)或 cacheDir:(Swift API)覆盖此设置。所有 fromPretrained() 入口点也接受 offlineMode: true,以便在权重已缓存时跳过网络。

对于中国大陆用户(或任何 huggingface.co 速度慢或被屏蔽的地方),你可以通过设置 HF_ENDPOINT 从镜像获取,例如 export HF_ENDPOINT=https://hf-mirror.com

要求

  • Swift 6+,Xcode 16+(带有 Metal 工具链)
  • macOS 15+(Sequoia)或 iOS 18+
  • Apple Silicon(M1/M2/M3/M4)

macOS 15 / iOS 18 的最低要求来自 MLState——Apple 的持久 ANE 状态 API,由 CoreML 流水线(Qwen3-ASR、Qwen3-Chat、Qwen3-TTS)使用,以在令牌步骤之间将 KV 缓存保留在神经网络引擎上。

性能基准测试

Speech Swift 在 docs/benchmarks/ios-coreml.md 中包含 iPhone 16 Pro 上的本地 CoreML 基准测试(RTF、令牌/秒、峰值内存)。关键亮点:

  • Parakeet-EOU-120M:iPhone 16 Pro 上 0.04 RTF(流式听写)
  • Omnilingual ASR (300M):iPhone 16 Pro 上 0.28 RTF
  • Kokoro-82M:iPhone 16 Pro 上 0.08 RTF(TTS)
  • Supertonic-3 (99M):iPhone 16 Pro 上 0.15 RTF(TTS)
  • FunctionGemma (270M):M5 Pro 上约 252 tok/s,iPhone 16 Pro 上 128 tok/s

使用场景

  • 语音代理:构建完全在设备上运行、具有实时语音到语音功能的对话式 AI 助手。
  • 转录:用于会议、讲座或媒体内容的高精度多语言转录。
  • 语音生成:为无障碍、内容创作或语音克隆应用生成自然语音。
  • 音频增强:清理嘈杂的录音、分离音频源或恢复退化的语音。

社区与资源

许可证

Apache 2.0

结论

Speech Swift 代表了 Apple Silicon 上本地 AI 语音处理的一个重要里程碑。通过将 MLX 和 CoreML 的强大功能与模块化、对开发者友好的 Swift 包相结合,它开启了一类新的保护隐私、低延迟的语音应用。无论你是在构建语音助手、转录工具还是创意音频应用,Speech Swift 都提供了你所需的构建块——全部在你的 Mac 或 iPhone 上本地运行。

来源

soniqo/speech-swift: AI speech toolkit for Apple Silicon — ASR, TTS, speech-to-speech, VAD, and diarization powered by MLX and CoreML