アーキテクチャ

speech-swiftは、共有プロトコル、独立したモデルモジュール、統一されたCLIを備えたモジュール化されたSwiftパッケージとして構成されています。すべての推論はMLX(Metal GPU)またはCoreML(Neural Engine)を使用してオンデバイスで実行されます。

モジュール依存関係グラフ

                    ┌──────────┐
                    │ AudioCLI │  (エントリポイント)
                    └────┬─────┘
                         │
                  ┌──────┴──────┐
                  │ AudioCLILib │  (コマンド)
                  └──────┬──────┘
                         │
       ┌─────────┬───────┼───────┬──────────┬──────────────┐
       │         │       │       │          │              │
  ┌────┴───┐ ┌──┴──┐ ┌──┴──┐ ┌─┴────┐ ┌───┴────┐ ┌──────┴───────┐
  │Qwen3ASR│ │Qwen3│ │Cosy │ │Perso-│ │Speech- │ │  Speech-     │
  │Parakeet│ │ TTS │ │Voice│ │naPlex│ │  VAD   │ │Enhancement   │
  └────┬───┘ └──┬──┘ └──┬──┘ └──┬───┘ └───┬───┘ └──────┬───────┘
       │        │       │       │         │             │
       └────────┴───────┼───────┴─────────┘             │
                        │                               │
                 ┌──────┴──────┐                        │
                 │ Qwen3Common │  (共有レイヤー)        │
                 └──────┬──────┘                        │
                        │                               │
                 ┌──────┴──────┐                        │
                 │ AudioCommon │ ◄──────────────────────┘
                 └─────────────┘  (プロトコル、音声I/O)

推論バックエンド

バックエンドハードウェアモデル
MLX Metal GPU Qwen3-ASR、Qwen3-TTS、CosyVoice3、Qwen3.5-Chat、PersonaPlex、Omnilingual ASR (300M / 1B / 3B / 7B)、Pyannote、Silero VAD、WeSpeaker
CoreML Neural Engine Qwen3-ASRエンコーダー(ハイブリッド)、Parakeet TDT、Parakeet EOUストリーミング、Omnilingual ASR 300M、Kokoro-82M、Qwen3.5-Chat(オプション)、Sortformerダイアライゼーション、DeepFilterNet3、Silero VAD(オプション)、WeSpeaker(オプション)
Accelerate CPU (SIMD) 音声前処理(STFT、mel、FFT)、信号処理

モデルウェイト形式

MLXモデルは4ビットまたは8ビット量子化(グループサイズ64)のsafetensors形式を使用します。CoreMLモデルは.mlmodelcコンパイル済み形式を使用します。scripts/内の変換スクリプトがPyTorchチェックポイントから変換します。

モデルパラメーター量子化ディスク上のサイズ
Qwen3-ASR 0.6B (MLX)約600M4ビット / 8ビット680 MB / 1.0 GB
Qwen3-ASR 0.6B (CoreML)約186M(エンコーダー)INT8約180 MB
Qwen3-ASR 1.7B (MLX)約1.7B4ビット / 8ビット2.1 GB / 3.2 GB
Parakeet-TDT 0.6B (CoreML)約600MINT8500 MB
Parakeet-EOU 120M (CoreML)約120MINT8約120 MB
Omnilingual-ASR-CTC 300M (CoreML)326MINT8312 MB
Omnilingual-ASR-CTC 300M (MLX)326M4ビット / 8ビット193 MB / 342 MB
Omnilingual-ASR-CTC 1B (MLX)1.01B4ビット / 8ビット549 MB / 1006 MB
Omnilingual-ASR-CTC 3B (MLX)約3B4ビット / 8ビット1.71 GB / 3.16 GB
Omnilingual-ASR-CTC 7B (MLX)約7B4ビット / 8ビット3.55 GB / 6.63 GB
Qwen3-ForcedAligner 0.6B (MLX)約600M4ビット / 8ビット979 MB / 1.4 GB
Qwen3-ForcedAligner 0.6B (CoreML)約600MINT4 / INT8630 MB / 1.0 GB
Qwen3-TTS 0.6B (MLX)約600M4ビット / 8ビット1.7 GB / 2.4 GB
Qwen3-TTS 1.7B (MLX)約1.7B4ビット / 8ビット3.2 GB / 4.8 GB
CosyVoice3 0.5B (MLX)約500M4ビットLLM約1.2 GB
Kokoro-82M (CoreML)82MINT8(1バケット)約89 MB
Qwen3.5-Chat 0.8B (MLX)約800MINT4418 MB
Qwen3.5-Chat 0.8B (CoreML)約800MINT8981 MB
PersonaPlex 7B (MLX)約7B4ビット / 8ビット4.9 GB / 9.1 GB
Pyannote VAD (MLX)約1.49Mfloat32約5.7 MB
Silero VAD v5約309Kfloat32約1.2 MB (MLX & CoreML)
WeSpeaker ResNet34約6.6Mfloat32約25 MB (MLX & CoreML)
Sortformer (CoreML)float16約50 MB
DeepFilterNet3 (CoreML)約2.1MFP16約4.2 MB

パフォーマンス最適化

音声処理

すべての音声I/OはFloat32 PCMを使用します。内部リサンプリングによって形式変換が処理されます。

モデル想定サンプリングレート形式
Qwen3-ASR16 kHzモノラル Float32
Qwen3-TTS24 kHz出力モノラル Float32
CosyVoice324 kHz出力モノラル Float32
Kokoro-82M24 kHz出力モノラル Float32
PersonaPlex24 kHz I/Oモノラル Float32
Pyannote VAD16 kHzモノラル Float32
Silero VAD16 kHzモノラル Float32
WeSpeaker16 kHzモノラル Float32
DeepFilterNet348 kHzモノラル Float32

ソース構造

Sources/
  AudioCommon/            共有プロトコル、音声I/O、HuggingFaceダウンローダー、
                          SentencePieceModel(protobufリーダー)
  MLXCommon/              MLXユーティリティ:ウェイトローディング、QuantizedLinearヘルパー、
                          SDPAマルチヘッドアテンションヘルパー、metalバジェット
  Qwen3Common/            共有モデルコンポーネント(KVキャッシュ、RoPE、量子化)
  Qwen3ASR/               Qwen3-ASR 音声認識
  ParakeetASR/            Parakeet TDT 音声認識 (CoreML)
  ParakeetStreamingASR/   Parakeet EOU 120M ストリーミングディクテーション (CoreML)
  OmnilingualASR/         Meta wav2vec2 + CTC、1,672言語
                          (CoreML 300M + MLX 300M / 1B / 3B / 7B)
  Qwen3TTS/               Qwen3-TTS 音声合成
  CosyVoiceTTS/           CosyVoice3 音声合成
  KokoroTTS/              Kokoro-82M 音声合成 (CoreML)
  Qwen3Chat/              Qwen3.5-0.8B オンデバイスLLMチャット (MLX + CoreML)
  PersonaPlex/            PersonaPlex 音声間変換
  SpeechVAD/              VAD (Silero + Pyannote)、ダイアライゼーション、話者embedding
  SpeechEnhancement/      DeepFilterNet3 ノイズ抑制 (CoreML)
  AudioCLILib/            CLIコマンド実装
  AudioCLI/               CLIエントリポイント

scripts/              モデル変換 (PyTorch → MLX/CoreML)、ベンチマーク
Tests/                ユニットと統合テスト
Examples/             デモアプリ (PersonaPlexDemo, SpeechDemo)