VoiceChat のツール呼び出しと性能に関する最新情報は英語版を参照してください。
CLIリファレンス
Breeze TTS 2 · BreezeTTS
英語・中国語の音声合成。声のデザイン、参照音声のクローンと演出、ストリーミングに対応(MLX BF16/8-bit、24 kHz、研究・非商用ライセンス).
speech speak "The quick brown fox jumps over the lazy dog." --engine breeze \
--instruct "A clear, calm English narrator." --stream -o design.wav--breeze-model-id:aufklarer/Breeze-TTS-2-MLX-8bit--breeze-bundle-dir--breeze-cache-limit-mib: プロセス全体の再利用可能な MLX キャッシュ上限(MiB、省略可)。0 でキャッシュを無効にします。--breeze-reference-text--breeze-temperature:0.9--breeze-top-k:50--breeze-top-p:1--breeze-cfg-scale:4--breeze-max-frames:750--breeze-seed:42--first-chunk-frames:3--chunk-frames:25
Apple ネイティブランタイム · PocketTTS
PocketTTS は speech-swift に CoreML のネイティブ音声合成を追加します。全段階の既定値は CPU のみです。英語の Alba プリセットは 24 kHz、1,920 サンプル(80 ミリ秒)ずつ音声を配信します。
speech speak "Hello world." --engine pocket --stream \
--pocket-bundle-dir /path/to/bundle --pocket-seed 42 -o hello.wav
# --pocket-model-id, --pocket-max-frames, --list-speakersspeech コマンドは、ローカルでの音声処理のエントリーポイントです。
Homebrew でインストール
Apple Silicon 搭載の Mac(macOS 15 以降)では、Homebrew で CLI をインストールできます。
brew install speech
speech --help
インストール済みの CLI を更新するには、brew upgrade speech を実行します。
別の方法:ソースからビルド
speech-swift のソースディレクトリで make build を実行し、.build/release/speech を使用します。必要な環境とビルド手順は、入門ガイドを参照してください。
transcribe
音声ファイルをテキストに文字起こしします。
speech transcribe <file> [options]
| オプション | デフォルト | 説明 |
|---|---|---|
<file> | 文字起こしする音声ファイル(WAV、M4A、MP3、CAF) | |
--engine | qwen3 | ASRエンジン: qwen3, qwen3-coreml, parakeet, nemotron, omnilingual, cohere, voxtral, moss, whisper |
--model, -m | 0.6B | モデルバリアント: 0.6B、1.7B、またはHuggingFace完全モデルID(qwen3のみ) [whisper]: default, turbo, or full CoreML HuggingFace repo ID.[cohere/voxtral]: INT5(デフォルト)、INT8、FP16、Hugging Face モデル ID、またはローカルディレクトリ. [moss coreml]: int8(既定)または fp16、[moss mlx]: int5(既定)または int8。互換性のある Hugging Face リポジトリ ID またはローカルディレクトリも指定できます。 |
--max-tokens | CoreML: 512MLX: 5120 | [moss] が生成する文字起こしトークンの最大数。 |
--kv-cache | fp16 | [moss mlx] 動的 KV キャッシュ精度:fp16 または int8。 |
--language | 言語ヒント(オプション、omnilingualでは無視) | |
--window | 10 | [omnilingual] CoreMLウィンドウサイズ(秒): 5 または 10 |
--backend | coreml | [omnilingual] バックエンド: coreml(Neural Engine)または mlx(Metal GPU)[moss] CoreML は固定 1,024-token 状態、MLX は動的 131,072-token コンテキストを使用します。 |
--variant | 300M | [omnilingual mlx] サイズ: 300M、1B、3B、または 7B |
--bits | 4 | [omnilingual mlx] 量子化ビット: 4 または 8 |
--stream | VAD付きストリーミング文字起こしを有効化 | |
--max-segment | 10 | 最大セグメント長(秒、streaming時) |
--partial | 発話中に部分結果を出力(streaming時) |
例:
# 基本的な文字起こし
speech transcribe recording.wav
# より大きなモデルを使用
speech transcribe recording.wav --model 1.7B
# CoreMLエンコーダー(Neural Engine + MLXデコーダー)
speech transcribe recording.wav --engine qwen3-coreml
# Parakeet(CoreML)エンジンを使用
speech transcribe recording.wav --engine parakeet
# Omnilingual(CoreML、1,672言語)
speech transcribe recording.wav --engine omnilingual # 10秒ウィンドウ
speech transcribe recording.wav --engine omnilingual --window 5 # 5秒ウィンドウ
# Omnilingual(MLX、最大40秒まで任意の長さ)
speech transcribe recording.wav --engine omnilingual --backend mlx # 300M @ 4-bit
speech transcribe recording.wav --engine omnilingual --backend mlx --variant 1B # 1B @ 4-bit
speech transcribe recording.wav --engine omnilingual --backend mlx --variant 3B --bits 8 # 3B @ 8-bit
speech transcribe recording.wav --engine omnilingual --backend mlx --variant 7B # 7B @ 4-bit
# Cohere Transcribe 2B (MLX、デフォルトは INT5)
speech transcribe recording.wav --engine cohere
speech transcribe recording.wav --engine cohere --model int8 --language de
# Voxtral Mini 3B (MLX、デフォルトは INT5)
speech transcribe recording.wav --engine voxtral
speech transcribe recording.wav --engine voxtral --model int8 --language fr
# MOSS Transcribe Diarize(CoreML 短形式)
speech transcribe recording.wav --engine moss
speech transcribe recording.wav --engine moss --model fp16
# MOSS Transcribe Diarize(MLX 128K オフラインコンテキスト、INT5 が既定)
speech transcribe meeting.wav --engine moss --backend mlx
speech transcribe meeting.wav --engine moss --backend mlx --model int8 --kv-cache int8
# Whisper Large-v3 Turbo (CoreML)
speech transcribe recording.wav --engine whisper
speech transcribe recording.wav --engine whisper --model turbo --language de
# VAD付きストリーミング
speech transcribe recording.wav --stream --partial
align
単語レベルの強制整列 — すべての単語の正確なタイムスタンプを取得します。
speech align <file> [options]
| オプション | デフォルト | 説明 |
|---|---|---|
<file> | 音声ファイル | |
--text, -t | 整列するテキスト(省略時は最初に文字起こし) | |
--model, -m | 0.6B | 文字起こし用ASRモデル: 0.6B、1.7B、または完全ID |
--aligner-model | 強制整列モデルID | |
--language | 言語ヒント |
例:
# 自動文字起こし後に整列
speech align recording.wav
# 既知のテキストで整列
speech align recording.wav --text "Can you guarantee that the replacement part will be shipped tomorrow?"
speak
音声合成。
speech speak "<text>" [options]
| オプション | デフォルト | 説明 |
|---|---|---|
<text> | 合成するテキスト(--batch-file使用時はオプション) | |
--engine | qwen3 | TTSエンジン: qwen3、cosyvoice、voxcpm2、indextts2、indic-mio、magpie、または magpie-coreml, moss-nano, fireredtts3, moss-voicegenerator |
--output, -o | output.wav | 出力WAVファイルパス |
--language | english | 言語。--speaker設定時は省略すると話者のネイティブ方言を使用します。 |
--stream | ストリーミング合成を有効化 | |
--voice-sample | 音声クローン用の参照音声(qwen3、cosyvoice、voxcpm2, f5, higgs, breeze、indextts2 で動作) | |
--verbose | 詳細なタイミング情報を表示 |
Qwen3-TTSオプション
| オプション | デフォルト | 説明 |
|---|---|---|
--model | base | モデルバリアント: base、customVoice、またはHF完全モデルID |
--speaker | 話者音声(--model customVoiceが必要) | |
--instruct | スタイル指示(CustomVoiceモデル) | |
--list-speakers | 利用可能な話者を一覧表示して終了 | |
--temperature | 0.3 | サンプリング温度 |
--top-k | 50 | top-kサンプリング |
--max-tokens | 500 | 最大トークン数(500 = 約40秒の音声) |
--batch-file | バッチ合成用の1行1テキストファイル | |
--batch-size | 4 | 並列生成の最大バッチサイズ |
--first-chunk-frames | 3 | ストリーム最初のchunkのコーデックフレーム数 |
--chunk-frames | 25 | ストリームchunkあたりのコーデックフレーム数 |
CosyVoice3オプション
| オプション | デフォルト | 説明 |
|---|---|---|
--speakers | マルチ話者対話の話者マッピング: s1=alice.wav,s2=bob.wav | |
--cosy-instruct | スタイル指示(デフォルトを上書き)。CosyVoice3の音声スタイルを制御します。 | |
--turn-gap | 0.2 | 対話ターン間の無音ギャップ(秒) |
--crossfade | 0.0 | ターン間のクロスフェードオーバーラップ(秒) |
--model-id | HuggingFaceモデルID |
IndexTTS2 オプション
IndexTTS2 は拡張 MLX バンドルを使う zero-shot 音声クローンエンジンです。--voice-sample が必須で、現在はバッチ合成のみです。
| オプション | デフォルト | 説明 |
|---|---|---|
--indextts2-model-id | aufklarer/IndexTTS2-MLX-fp16 | HuggingFace モデル ID。既定値は aufklarer/IndexTTS2-MLX-fp16。 |
--indextts2-bundle-dir | Hugging Face からダウンロードせず、ローカルの拡張バンドルを読み込みます。 | |
--indextts2-emotion-audio | 任意の感情/スタイル参照音声。既定では話者参照を使います。 | |
--indextts2-emotion | 任意のプリセットまたは 8 値の感情ベクトル。eager、happy、excited、calm など。 | |
--indextts2-emotion-weight | 1.0 | --indextts2-emotion をスケールします。話者同一性が重要な場合は控えめにします。 |
--indextts2-speaking-rate | 1.0 | 0.5 から 1.5 の話速倍率。1.0 より大きい値は高速です。 |
--indextts2-max-pause | 長い内部低エネルギーポーズの任意上限(秒)。 | |
--indextts2-s2mel-steps | 15 | S2Mel フローステップ数(デフォルト 15・聴感検証済み、25 で上流と完全一致) |
F5-TTS オプション
| オプション | デフォルト | 説明 |
|---|---|---|
--f5-reference-text | 参照書き起こし:--voice-sample の内容(必須) | |
--f5-steps | 16 | フローマッチングステップ数(デフォルト 16、最高忠実度は 32) |
--f5-cfg-strength | 2.0 | クラシファイアフリーガイダンス強度 |
--f5-sway | -1.0 | Sway サンプリング係数 |
--f5-speed | 1.0 | 話速倍率 |
--f5-seed | 0 | 再現可能な出力のためのシード |
--f5-target-rms | 0.1 | 参照音声の RMS 正規化ターゲット |
--f5-model-id | Hugging Face モデル ID | |
--f5-bundle-dir | ローカルディレクトリからバンドルを読み込む |
Higgs TTS 3 オプション
| オプション | デフォルト | 説明 |
|---|---|---|
--higgs-ref-text | 参照書き起こし:--voice-sample の内容(クローン品質が向上) | |
--higgs-temperature | 0.8 | サンプリング温度(デフォルト 0.8) |
--higgs-top-p | Nucleus サンプリングしきい値(デフォルト無効) | |
--higgs-top-k | Top-k サンプリング上限(デフォルト無効) | |
--higgs-max-new-tokens | 2048 | 生成する音声フレームの上限(毎秒 25 フレーム) |
--higgs-seed | 0 | 再現可能な出力のためのシード |
--higgs-model-id | Hugging Face モデル ID | |
--higgs-bundle-dir | ローカルディレクトリからバンドルを読み込む |
例:
# 基本的なTTS
speech speak "Hello, world!" --output hello.wav
# 音声クローン(Qwen3-TTS)
speech speak "Hello in your voice" --voice-sample reference.wav -o cloned.wav
# 音声クローン(CosyVoice)
speech speak "Hello in your voice" --engine cosyvoice --voice-sample reference.wav -o cloned.wav
# CosyVoice多言語
speech speak "Hallo Welt" --engine cosyvoice --language german -o hallo.wav
# マルチ話者対話
speech speak "[S1] Hello there! [S2] Hey, how are you?" \
--engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o dialogue.wav
# インライン感情/スタイルタグ
speech speak "(excited) Wow, amazing! (sad) But I have to go..." \
--engine cosyvoice -o emotion.wav
# 組み合わせ: 対話 + 感情 + 音声クローン
speech speak "[S1] (happy) Great news! [S2] (surprised) Really?" \
--engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o combined.wav
# カスタムスタイル指示
speech speak "Hello world" --engine cosyvoice --cosy-instruct "Speak cheerfully" -o cheerful.wav
# ストリーミング合成
speech speak "Long text here..." --stream
# ファイルからバッチ合成
speech speak --batch-file texts.txt --batch-size 4
指示付き TTS のオプション
実験的: ネイティブ SDK は main のソースからビルドしてください。Homebrew などのビルド済み CLI には、これらのエンジンがまだ含まれていない場合があります。
公開済み MLX バンドル: aufklarer/FireRedTTS3-Instruct-MLX-fp32 · aufklarer/MOSS-VoiceGenerator-MLX-bf16
テキスト引数、--instruct と、バンドルディレクトリまたは互換モデル ID のいずれか一つを指定します。参照音声、固定話者、バッチ入力には対応していません。
テキストと指示の各フィールドは 32,768 UTF-8 バイトまでです。テンプレートを含むレンダリング済み入力プロンプト全体は 4,096 トークン以内である必要があります。いずれかを超える入力は拒否されます。
FireRedTTS3-Instruct はモデルとデコーダーの Float32 重みを保持します。音声は一括で返るため --stream は省略してください。--language は英語・中国語の別名を受け付けます。生成上限に達した場合は、途切れた音声を成功として返さずエラーになります。
MOSS-VoiceGenerator は BF16 言語重みと FP32 合成コーデックを保持します。逐次 PCM には --stream を使います。--language は省略し、言語要件を --instruct に含めてください。終了時には全十六コードブックを出力し切ります。
指示追従の品質は未採点です。短文の測定は試験した構成のみを示し、既存モデルの遅延回帰の認定は未確定です。
| オプション | デフォルト | 説明 |
|---|---|---|
--fireredtts3-bundle-dir | — | 互換ローカルバンドル。モデル ID とどちらか一方を指定します。 |
--fireredtts3-model-id | — | 公開済みの互換 MLX バンドル ID。ローカルディレクトリとどちらか一方を指定します。 |
--fireredtts3-flow-steps | 10 | 音響パッチごとのフローステップ数。 |
--fireredtts3-max-patches | 400 | 生成上限。完了前に達するとエラーになります。 |
--moss-voicegenerator-bundle-dir | — | 互換ローカルバンドル。モデル ID とどちらか一方を指定します。 |
--moss-voicegenerator-model-id | — | 公開済みの互換 MLX バンドル ID。ローカルディレクトリとどちらか一方を指定します。 |
--moss-voicegenerator-max-frames | 750 | 生成上限。完了前に達するとエラーになります。 |
--moss-voicegenerator-chunk-frames | 3 | PCM チャンクあたりの完全なコーデックフレーム数(1–32)。 |
--seed | 2 / 42 | リクエストのシード。FireRedTTS3 は 2、MOSS-VoiceGenerator は 42 が既定です。 |
FireRedTTS3-Instruct · MOSS-VoiceGenerator
kokoro
Neural Engine(CoreML)上でKokoro-82Mを使用する軽量音声合成。非自己回帰型 — 単一のforward pass、約45msのレイテンシ。
speech kokoro "<text>" [options]
| オプション | デフォルト | 説明 |
|---|---|---|
<text> | 合成するテキスト | |
--voice | af_heart | ボイスプリセット(10言語にわたる50種類が利用可能) |
--language | en | 言語コード: en、es、fr、hi、it、ja、pt、zh、ko、de |
--output, -o | kokoro_output.wav | 出力WAVファイルパス |
--list-voices | 利用可能なすべてのボイスを一覧表示して終了 | |
--model, -m | HuggingFaceモデルID |
例:
# 基本的なKokoro TTS
speech kokoro "Hello, world!" --voice af_heart -o hello.wav
# フランス語のボイス
speech kokoro "Bonjour le monde" --voice ff_siwis --language fr -o bonjour.wav
# 全50ボイスを一覧表示
speech kokoro --list-voices
respond
PersonaPlex 7Bを使用したfull-duplex音声間対話。
speech respond [options]
| オプション | デフォルト | 説明 |
|---|---|---|
--input, -i | 入力音声WAVファイル(24kHzモノラル)(必須) | |
--output, -o | response.wav | 出力レスポンスWAVファイル |
--voice | NATM0 | ボイスプリセット(例: NATM0、NATF1、VARF0) |
--system-prompt | assistant | プリセット: assistant、focused、customer-service、teacher |
--system-prompt-text | カスタムシステムプロンプトテキスト(プリセットを上書き) | |
--max-steps | 200 | 12.5Hzでの最大生成ステップ(約16秒) |
--stream | 生成中に音声chunksを出力 | |
--compile | コンパイル済みtransformerを有効化(ウォームアップ + カーネル融合) | |
--list-voices | 利用可能なボイスプリセットを一覧表示 | |
--list-prompts | 利用可能なシステムプロンプトプリセットを一覧表示 | |
--transcript | モデルの内部モノローグテキストを出力 | |
--json | JSON形式で出力(transcript、レイテンシ、音声パス) | |
--verbose | 詳細なタイミング情報を表示 |
サンプリングの上書き
| オプション | デフォルト | 説明 |
|---|---|---|
--audio-temp | 0.8 | 音声サンプリング温度 |
--text-temp | 0.7 | テキストサンプリング温度 |
--audio-top-k | 250 | 音声top-k候補 |
--repetition-penalty | 1.2 | 音声反復ペナルティ(1.0 = 無効) |
--text-repetition-penalty | 1.2 | テキスト反復ペナルティ(1.0 = 無効) |
--repetition-window | 30 | 反復ペナルティウィンドウ(フレーム) |
--silence-early-stop | 15 | 早期停止前の無音フレーム(0 = 無効) |
--entropy-threshold | 0 | 早期停止用のテキストエントロピー閾値(0 = 無効) |
--entropy-window | 10 | 早期停止前の連続低エントロピーステップ数 |
例:
# 基本的な音声間変換
speech respond --input question.wav
# コンパイル済みtransformerで女性ボイスを使用
speech respond -i question.wav --voice NATF1 --compile
# レスポンスをstreamingし、transcriptを表示
speech respond -i question.wav --stream --transcript --verbose
voice-chat
NVIDIA Nemotron VoiceChat 11B を基盤に Soniqo とライブ全二重会話します。既定の protected-head INT5 bundle は初回利用時にダウンロードされ、マイクモードでは Apple AEC、ストリーミング RNN-T 字幕、分かりやすいリアルタイム指標、8→2→1 段階の適応音声精緻化、長い無音追いつき処理を避ける上限付き入力再同期が有効になります。
speech voice-chat [options]
| オプション | デフォルト | 説明 |
|---|---|---|
--model, -m | aufklarer/VoiceChat-11B-Perception-MLX-int5 | Hugging Face モデル ID または完全なローカル bundle。 |
--revision | main | Hub revision。 |
--system-prompt | system prompt を上書き。 | |
--mcp-config | MCP tool server 用の汎用 JSON 設定。 | |
--mcp-server | 設定済みすべて | server を1つ選択。複数回指定可能。 |
--mcp-write-policy | allow | 書き込み方針:即時実行の allow、モデルによる confirm、または deny。 |
--mcp-timeout-seconds | 15 | MCP tool call の timeout。server startup は最低60秒です。 |
--greet | モデルに先に挨拶させる。 | |
--no-aec | Apple の音響エコーキャンセルを無効化。 | |
--no-transcript | ライブ RNN-T ユーザー字幕を無効化。 | |
--no-rnnt-turn-taking | NVIDIA RNN-T ターン制御の安全フォールバックを無効化。 | |
--prebuffer-frames | 3 | 再生前にバッファする 80 ms 出力フレーム数。 |
--max-buffered-frames | 8 | 古い音声を破棄する前に待機できる 80 ms マイクフレーム数。 |
--max-seconds | 指定秒数後にライブ収録を停止。 | |
--input | マイクの代わりに音声ファイルを読み込む。 | |
--output, -o | 完全コンテキストの 22.05 kHz WAV を書き出す。 | |
--tail-seconds | 6 | ファイル入力後に追加する無音時間。 |
--force-turn-at-end | ファイル終端で BOS を強制。回帰テスト専用。 | |
--plain | 固定再描画ダッシュボードではなく追記形式で出力。 | |
--debug-timeline | 発話と生成音声の発音終了の相対時刻、およびモデルがデコードしたツール呼び出しのライフサイクルイベントを表示。 | |
--terminal-width | 120 | ターミナル表示幅。 |
--temperature | 0 | テキスト温度。0 は greedy。 |
--text-top-p | 1 | テキスト top-p。 |
--guidance | 0.2 | EAR-TTS guidance 強度。 |
--speech-top-p | 0.95 | EAR-TTS top-p。 |
--speech-noise | 0.001 | EAR-TTS sampling noise。 |
--speech-iterations | 8 | 1フレーム当たりの EAR-TTS MaskGIT 反復回数。 |
--realtime-speech-iterations | 2 | リアルタイム速度を守るため一時的に使う音声精緻化回数。 |
--live-speech-context-seconds | 20 | ライブ時に保持する直近の EAR-TTS 履歴。0 は全履歴を保持します。 |
例:
speech voice-chat
speech voice-chat --model /path/to/complete-bundle --prebuffer-frames 3
speech voice-chat --input question.wav --output response.wav
speech voice-chat --mcp-config Examples/VoiceChatMCP/apple-reminders.json
ファイルモードは音声ハードウェアを使わない再現可能な経路です。--force-turn-at-end は制御された回帰テスト専用で、自然なターン交替レイテンシとして報告しないでください。
Apple Reminders デモが公開するのは list_reminders、create_reminder、update_reminder だけで、リスト探索はアダプター内部です。1回のフラットな読み取りで全リストを扱い、更新では話された名前を非公開 ID に実行時解決します。ダッシュボードは関数デコード時間、token step、token/s を音声 RTF と分けて表示します。
vad
Pyannoteセグメンテーションを使用したオフラインの音声区間検出。
speech vad <file> [options]
| オプション | 説明 |
|---|---|
<file> | 解析する音声ファイル |
--model, -m | HuggingFaceモデルID |
--onset | 開始閾値(発話開始) |
--offset | 終了閾値(発話終了) |
--min-speech | 最小発話時間(秒) |
--min-silence | 最小無音時間(秒) |
--json | JSON形式で出力 |
vad-stream
Silero VAD v5を使用したストリーミング音声区間検出。32msチャンクで音声を処理します。
speech vad-stream <file> [options]
| オプション | 説明 |
|---|---|
<file> | 解析する音声ファイル |
--engine | VADエンジン: mlx(デフォルト)または coreml |
--model, -m | HuggingFaceモデルID(エンジンに基づいて自動選択) |
--onset | 開始閾値 |
--offset | 終了閾値 |
--min-speech | 最小発話時間(秒) |
--min-silence | 最小無音時間(秒) |
--json | JSON形式で出力 |
--smart-turn | セグメントを終了する前に各ポーズを Smart Turn で確認。文の途中のポーズは 1 つのセグメントに統合 |
--turn-threshold | Smart Turn の完了閾値(デフォルト 0.5) |
--turn-max-silence | 却下されたポーズのあと、いずれにせよセグメントを終了する無音の秒数(デフォルト 2.0) |
turn
Smart Turn v3.2(8M パラメータ、CoreML、23 言語)による発話終了検出。録音した発話の最後の 8 秒を採点し、話者が話し終えた確率、完了/未完了の判定、推論時間を表示します。
speech turn <file> [options]
| オプション | 説明 |
|---|---|
<file> | ユーザーの 1 発話を含む音声ファイル(任意のサンプルレート)。最後の 8 秒を使用 |
--threshold | この確率以上で発話を完了とみなす(デフォルト 0.5) |
--model, -m | HuggingFace モデル ID。デフォルトは aufklarer/Smart-Turn-v3.2-CoreML |
--model-dir | smart_turn.mlmodelc と config.json を含むローカルディレクトリ。ダウンロードをスキップ |
--json | JSON形式で出力 |
# Probability, verdict and inference time for one utterance
speech turn utterance.wav
# Custom threshold, JSON output
speech turn utterance.wav --threshold 0.7 --json
# Streaming VAD with Smart Turn confirming each pause
speech vad-stream call.wav --smart-turn --turn-threshold 0.6 --turn-max-silence 1.5
wake
KWS Zipformer を使用したオンデバイスのキーワード検出(3.49Mパラメータ、CoreML INT8、リアルタイムの26倍、英語のみ)。
speech wake <file> [options]
| オプション | 説明 |
|---|---|
<file> | 解析する音声ファイル |
--keywords | 1つ以上のキーワード。フォーマット:"hey soniqo"、"hey soniqo:0.15:0.5"、または "LIGHT UP|▁ L IGHT ▁UP:0.25:2.0"(sherpa-onnx形式の明示的なBPEピース) |
--keywords-file | キーワードファイル、1行1エントリ |
--model, -m | HuggingFaceモデルID。デフォルト:aufklarer/KWS-Zipformer-3M-CoreML-INT8 |
--json | JSON形式で出力 |
diarize
話者ダイアライゼーション — 誰がいつ話したかを識別します。
speech diarize <file> [options]
| オプション | デフォルト | 説明 |
|---|---|---|
<file> | 解析する音声ファイル | |
--engine | pyannote | ダイアライゼーションエンジン: pyannote、community1(CoreML + ネイティブPLDA/VBx)、またはsortformer |
--community1-compute-units | ane | Community-1 CoreMLの計算ユニット: ane、cpu、gpu、all |
--num-speakers | Community-1の既知の正確な話者数 | |
--min-speakers | 1 | Community-1の最小話者数 |
--max-speakers | Community-1の最大話者数 | |
--target-speaker | 対象話者抽出用の登録音声(pyannoteのみ) | |
--embedding-engine | mlx | 話者embeddingエンジン: mlx または coreml(pyannoteのみ) |
--vad-filter | Silero VADで事前フィルタ(pyannoteのみ) | |
--rttm | RTTM形式で出力 | |
--json | JSON形式で出力 | |
--score-against | DER計算用のリファレンスRTTMファイル |
例:
# 基本的なダイアライゼーション(pyannote、デフォルト)
speech diarize meeting.wav
# エンドツーエンドSortformer(CoreML、Neural Engine)
speech diarize meeting.wav --engine sortformer
# 評価用のRTTM出力
speech diarize meeting.wav --rttm
# 対象話者抽出(pyannoteのみ)
speech diarize meeting.wav --target-speaker enrollment.wav
# リファレンスに対してスコアリング
speech diarize meeting.wav --score-against reference.rttm
embed-speaker
音声から話者embeddingベクトルを抽出します。
speech embed-speaker <file> [options]
| オプション | 説明 |
|---|---|
<file> | 話者の声を含む音声ファイル |
--engine | WeSpeaker 256次元は mlx(デフォルト)または coreml、永続的な話者識別 CoreML 192次元は redimnet2、CAM++ CoreML 192次元は camplusplus |
--json | JSON形式で出力 |
language-id
音声ファイルの話し言葉を識別します。
speech language-id <file> [options]
| オプション | 説明 |
|---|---|
<file> | 分類する音声ファイル |
--engine | 推論エンジン:mlx または coreml |
--model | Hugging Face モデル ID を上書き |
--top | 表示する言語候補数 |
--json | 結果を JSON で出力 |
speech language-id recording.wav --top 5
speech language-id recording.wav --engine coreml --json
denoise
Neural Engine上のDeepFilterNet3を使用して背景ノイズを除去します。
speech denoise <file> [options]
| オプション | デフォルト | 説明 |
|---|---|---|
<file> | 入力音声ファイル | |
--output, -o | input_clean.wav | 出力ファイルパス |
--model, -m | HuggingFaceモデルID |
例:
speech denoise noisy-recording.wav -o clean.wav
compose
Generate 30 s of music from a text prompt using MAGNeT on MLX.
speech compose <prompt> [options]
| Option | Default | Description |
|---|---|---|
<prompt> | Text prompt describing the music to generate (e.g. "happy rock") | |
--output, -o | magnet.wav | Output WAV path (32 kHz mono) |
--variant | small-int4 | Model variant: small-int4, small-int8, medium-int4, or medium-int8. Resolves to aufklarer/MAGNeT-{Small,Medium}-30secs-MLX-{4,8}bit. |
--temperature | 3.0 | Sampling temperature, annealed linearly per stage. |
--top-p | 0.9 | Nucleus sampling threshold. |
--cfg-max | 10.0 | Max classifier-free guidance coefficient. |
--cfg-min | 1.0 | Min CFG coefficient (annealed alongside the mask schedule). |
--steps | 20,10,10,10 | Comma-separated decoding iterations per codebook (4 values). |
--seed | Random seed for reproducible output. |
Examples:
# Default: small-int4, ~10 s wall on M-series for a 30 s clip
speech compose "happy rock" -o happy_rock.wav
# Larger model — better prompt following, slower
speech compose "lo-fi hip hop with mellow piano" --variant medium-int4 -o lofi.wav
# Reproducible
speech compose "energetic EDM with synth lead" --seed 42 -o edm.wav
transcribe-batch
音声ディレクトリを一括で文字起こし。モデルの読み込みは 1 回だけです。
speech transcribe-batch <input-dir> [options]
| オプション | デフォルト | 説明 |
|---|---|---|
<input-dir> | 文字起こし対象の音声ファイルディレクトリ(WAV、FLAC など) | |
--output-dir | 書き起こしの出力ディレクトリ | |
--engine | qwen3 | ASR エンジン(transcribe と同じ値) |
--jsonl | 結果を JSON lines で出力(1 ファイル 1 行) |
restore
Sidon で音声を復元(ノイズ除去+残響除去)— CoreML、48 kHz 出力。
speech restore <audio-file> [options]
| オプション | デフォルト | 説明 |
|---|---|---|
--output, -o | input_restored.wav | 出力 WAV ファイルパス(48 kHz) |
--variant | fp16 | 精度 / バンドルのバリアント |
--compute-units | 両ステージの Core ML 配置: ane、gpu、cpu、all(既定: ボコーダー gpu、予測器は自動) |
separate
楽曲をステムに分離(vocals、drums、bass、other)。
speech separate <input> [options]
| オプション | デフォルト | 説明 |
|---|---|---|
--stems | vocals,drums,bass,other | 抽出するステム:vocals、drums、bass、other |
--engine | umx | エンジン:umx(デフォルト)または htdemucs(高品質) |
--output-dir | 書き起こしの出力ディレクトリ |
upsample
FlashSR による音声超解像 — 1 ステップ蒸留 AudioSR、48 kHz 出力。
speech upsample <audio-file> [options]
| オプション | デフォルト | 説明 |
|---|---|---|
--output, -o | hr.wav | 出力 WAV ファイルパス(48 kHz) |
--variant | int4 | 精度 / バンドルのバリアント |
--seed | 再現可能な出力のためのシード |
qwen3-tts-coreml
Swift は 0.6B/256 と 1.7B/1024 のバンドルに対応し、既定は引き続き 0.6B です。実験的な 1.7B は既定で CPU を使用し、--speaker-embedding で事前作成した 2048 チャンネルの Float32 .npy 話者埋め込みを指定する必要があります。GPU/ANE と iOS は別途検証が必要です。
speech qwen3-tts-coreml "<text>" [options]
| オプション | デフォルト | 説明 |
|---|---|---|
--output, -o | output.wav | 出力 WAV ファイルパス |
--language | english | 出力言語 |
--model | Hugging Face モデル ID | |
--model-directory | — | ローカルのコンパイル済みモデルバンドル。--model のダウンロードより優先されます。 |
--speaker-embedding | — | モデルの幅(1024 または 2048)に一致する Float32 .npy 話者埋め込み。 |
vibevoice
Microsoft VibeVoice でテキスト読み上げ(MLX)。
speech vibevoice "<text>" --voice-cache <cache> [options]
| オプション | デフォルト | 説明 |
|---|---|---|
--voice-cache, -v | vibevoice-encode-voice で作成したボイスキャッシュ(必須) | |
--steps | DPM-Solver の推論ステップ数(多いほど高品質) | |
--cfg | 1.3 | クラシファイアフリーガイダンス強度 |
--long-form | 長文向けのチャンク分割ロングフォーム合成 |
vibevoice-encode-voice
参照録音と書き起こしから VibeVoice ボイスキャッシュを作成。
speech vibevoice-encode-voice <input> "<transcript>" [options]
| オプション | デフォルト | 説明 |
|---|---|---|
<input> | 参照音声ファイル | |
<transcript> | 参照音声の書き起こし(英語のみ) | |
--output, -o | 出力ボイスキャッシュ(.safetensors) |
translate
MADLAD-400 でテキストをターゲット言語へ翻訳(MLX)。
speech translate "<text>" --to <lang> [options]
| オプション | デフォルト | 説明 |
|---|---|---|
--to, -t | ターゲット言語コード(ISO 639-1、例:es、zh、ja) | |
--stream | デコードしながらストリーミング出力 | |
--model | Hugging Face モデル ID |
⚠ Translation out of date — the Clef CLI section awaits translation. English reference.
clef
Choose from allowed answers using Clef-flash locally on Apple Silicon. Development preview.
speech clef decide request.json
speech clef decide request.json --model-dir /path/to/Clef-flash-9B-MLX-4bit
speech clef decide request.json --offline --max-tokens 4096The request contains text in state and an ordered questions array. Each field has an id and a type: choice with a choices map, noul for true/false, or score with ordered levels. Output is JSON with probabilities, selected answers, token count, model-load time, and decision time.
By default, the command downloads aufklarer/Clef-flash-9B-MLX-4bit. Use --model-dir for existing files or --offline for the cache. The token limit defaults to 4096 and accepts 1–16384. See the Clef guide for a complete request and measured memory use.
gliner
GLiNER2.5-Decide (MLX) で、指定したラベルによるテキスト分類とエンティティ抽出を行います。開発プレビュー版で、まだリリースには含まれていません。テキストを省略すると stdin から読み込みます。
speech gliner classify "<text>" --labels <a,b,c> [options]
speech gliner extract "<text>" --labels <a,b,c> [options]
| オプション | デフォルト | 説明 |
|---|---|---|
--variant | int8 | ダウンロードする公開済み重み:fp32、fp16、int8 |
--model | Hugging Face リポジトリの上書き | |
--model-dir | ダウンロードせずにローカルのモデルディレクトリを使用 | |
--labels | カンマ区切りの候補ラベル(1〜255 個、重複不可) | |
--description | label=text 形式のラベル説明。複数指定可 | |
--task | action | スキーマプロンプトに入れるタスク名(classify のみ) |
--threshold | 0.5 | スパンの最小スコア(extract のみ) |
--evaluate-layers | エンコーダを層ごとに評価し、ピークメモリを抑える | |
--json | 全ラベルの確率、または UTF-16 オフセット付きスパンと処理時間を JSON で出力 |
avatar-motion
音声から NVIDIA Audio2Face-3D のアバターモーション係数フレームを生成。
speech avatar-motion <input> [options]
| オプション | デフォルト | 説明 |
|---|---|---|
--output, -o | avatar-motion.jsonl | 出力 JSONL ファイルパス |
--model | …James-MLX | アバターのアイデンティティバンドル(デフォルト James、他に Claire と Mark) |
--verbose | タイミングとフレーム数を表示 |
MOSS-TTS-Nano
--voice-sample で音声をクローンできます。参照音声の文字起こしは不要です。モノラル参照はステレオ化し、48 kHz にリサンプリングして 80 ms 境界まで補完します。一度符号化した参照コードは複数のリクエストで再利用できます。
speech speak "Hello world." --engine moss-nano -o hello.wav
speech speak "The weather is nice today." --engine moss-nano \
--voice-sample reference.wav --moss-nano-seed 1 -o cloned.wav
speech speak "Hello world." --engine moss-nano --stream --play -o streamed.wav--moss-nano-model | aufklarer/MOSS-TTS-Nano-100M-CoreML | モデルリポジトリまたはローカルディレクトリ |
--moss-nano-compute-units | cpu | cpu または gpu |
--moss-nano-max-frames | 300 | 最大 80 ms フレーム数。自然終了が必要 |
--moss-nano-seed | 0 | 再現可能な Swift サンプリングシード |
Voxtral TTS
Voxtral 4B TTS 2603 は VoxtralTTS モジュールを通じて Apple Silicon 上でローカルに動作し、20 のプリセット音声、9 言語、24 kHz のモノラル音声に対応します。
speech speak "Hello, welcome to Voxtral." --engine voxtral --voxtral-voice casual_male --stream --voxtral-chunk-frames 3 -o hello.wav
speech speak --engine voxtral --list-speakers
speech speak "Bonjour." --engine voxtral --voxtral-voice fr_female --voxtral-max-frames 500 --voxtral-seed 0 -o bonjour.wavプリセット音声のみ対応し、参照音声からのクローンには対応していません。SDK、CLI、WebSocket、HTTP PCM で生成中の音声を出力できます。入力テキストは最初に全文を渡します。モデル重みのライセンスは CC BY-NC 4.0 です。
Fish Audio Drama 3
Drama 3 の実験的なネイティブ MLX 対応を FishAudioDrama3Model で利用できます。350 億パラメータのハイブリッド注意 MoE、時系列音声タワー、Fish DAC コーデックで 44.1 kHz モノラル音声を生成します。4 ビットのチェックポイントは Apple M5 Pro で、テキストのみの生成、参照音声のクローン、CLI 出力の波形と独立した ASR 検証に合格しました。8 ビットと BF16 は未検証です。
既定のメモリモードは balanced です。各処理段階の境界で未使用の MLX キャッシュが 512 MiB を超えると解放します。総メモリ使用量の上限ではありません。グローバルなアロケーター制限は変更しません。--fish-drama3-memory-mode unrestricted または memoryOptions: .unrestricted を指定すると、事前読み込みと従来のキャッシュ動作を使用します。
テキストのみの生成では参照音声エンコーダーの重み 794.4 MiB の読み込みを遅延します。最初の参照音声エンコード時に読み込み、その後は保持するため、それまでは codec.safetensors を利用可能にしてください。計算済みの参照コードにはエンコーダーは不要です。
入力テキストは全文を渡します。声のクローンには参照音声と正確な書き起こしが必要です。話者タグ 0–15 とインライン感情制御に対応します。generateStreaming、generateStream、--stream で PCM ストリーミングに対応します。既定のチャンクは 3 コーデックフレームで、約 139 ms の音声です。長文の自動分割とテキストの逐次入力は未対応です。フレーム上限に達するとエラーになります。
speech speak "Hello from Drama 3." --engine fish-drama3 --fish-drama3-bundle-dir /path/to/bundle -o hello.wav
speech speak "Hello from Drama 3." --engine fish-drama3 --stream --fish-drama3-chunk-frames 3 -o streamed.wav
speech speak "Hello in the reference voice." --engine fish-drama3 --voice-sample reference.wav --fish-drama3-reference-text "The exact reference transcript." --seed 42 -o cloned.wavimport FishAudioTTS
let model = try await FishAudioDrama3Model.fromBundle(bundleURL, memoryOptions: .balanced)
let pcm = try await model.generate(text: "Hello from Drama 3.", options: .init(seed: 42))| オプション | 既定値 |
|---|---|
--fish-drama3-model-id | mlx-community/fish-audio-drama-3-4bit |
--fish-drama3-bundle-dir | — |
--fish-drama3-reference-text | — |
--fish-drama3-max-frames | 2048 |
--fish-drama3-temperature | 1 |
--fish-drama3-top-k | 30 |
--fish-drama3-top-p | 0.9 |
--voice-sample | — |
--seed | 0 |
--stream | false |
--fish-drama3-chunk-frames | 3 |
--fish-drama3-memory-mode | balanced |
Fish Audio を使用しています。バンドルには Community License と NOTICE が含まれます。