はじめに

speech-swiftは、Apple Silicon上のmacOSおよびiOS向けにオンデバイスAI音声処理を提供します。モデルはMLX(Metal GPU)とCoreML(Neural Engine)を使用してローカルで動作します。

動作要件

インストール

Swift Package Manager

Package.swiftの依存関係にspeech-swiftを追加します。

dependencies: [
    .package(url: "https://github.com/soniqo/speech-swift", from: "0.0.9")
]

次に、必要なモジュールをターゲットに追加します。

.target(
    name: "MyApp",
    dependencies: [
        .product(name: "Qwen3ASR", package: "speech-swift"),
        .product(name: "Qwen3TTS", package: "speech-swift"),
        .product(name: "SpeechVAD", package: "speech-swift"),
        // ... 必要なモジュールを追加
    ]
)

利用可能なモジュール

モジュール説明
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

# WAVファイルを文字起こし
.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

# 音声を生成
.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-bit)680 MBピーク 約2.2 GB
Qwen3-ASR 0.6B (8-bit)1.0 GBピーク 約2.5 GB
Qwen3-ASR 1.7B (4-bit)2.1 GBピーク 約4 GB
Parakeet-TDT (CoreML INT8)500 MBピーク 約600 MB
Qwen3-TTS 0.6B (4-bit)1.7 GBピーク 約2 GB
Qwen3-TTS 1.7B (4-bit)3.2 GBピーク 約4 GB
CosyVoice3 (4-bit 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-bit) 推奨9.1 GBピーク 約11 GB
PersonaPlex 7B (4-bit)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

次のステップ