CLIリファレンス
audioバイナリは、すべての音声処理タスクのメインエントリーポイントです。make buildでビルド後、.build/release/audioから実行します。
transcribe
音声ファイルをテキストに文字起こしします。
audio transcribe <file> [options]
| オプション | デフォルト | 説明 |
|---|---|---|
<file> | 文字起こしする音声ファイル(WAV、M4A、MP3、CAF) | |
--engine | qwen3 | ASRエンジン: qwen3、qwen3-coreml、parakeet、または omnilingual |
--model, -m | 0.6B | モデルバリアント: 0.6B、1.7B、またはHuggingFace完全モデルID(qwen3のみ) |
--language | 言語ヒント(オプション、omnilingualでは無視) | |
--window | 10 | [omnilingual] CoreMLウィンドウサイズ(秒): 5 または 10 |
--backend | coreml | [omnilingual] バックエンド: coreml(Neural Engine)または mlx(Metal GPU) |
--variant | 300M | [omnilingual mlx] サイズ: 300M、1B、3B、または 7B |
--bits | 4 | [omnilingual mlx] 量子化ビット: 4 または 8 |
--stream | VAD付きストリーミング文字起こしを有効化 | |
--max-segment | 10 | 最大セグメント長(秒、streaming時) |
--partial | 発話中に部分結果を出力(streaming時) |
例:
# 基本的な文字起こし
audio transcribe recording.wav
# より大きなモデルを使用
audio transcribe recording.wav --model 1.7B
# CoreMLエンコーダー(Neural Engine + MLXデコーダー)
audio transcribe recording.wav --engine qwen3-coreml
# Parakeet(CoreML)エンジンを使用
audio transcribe recording.wav --engine parakeet
# Omnilingual(CoreML、1,672言語)
audio transcribe recording.wav --engine omnilingual # 10秒ウィンドウ
audio transcribe recording.wav --engine omnilingual --window 5 # 5秒ウィンドウ
# Omnilingual(MLX、最大40秒まで任意の長さ)
audio transcribe recording.wav --engine omnilingual --backend mlx # 300M @ 4-bit
audio transcribe recording.wav --engine omnilingual --backend mlx --variant 1B # 1B @ 4-bit
audio transcribe recording.wav --engine omnilingual --backend mlx --variant 3B --bits 8 # 3B @ 8-bit
audio transcribe recording.wav --engine omnilingual --backend mlx --variant 7B # 7B @ 4-bit
# VAD付きストリーミング
audio transcribe recording.wav --stream --partial
align
単語レベルの強制整列 — すべての単語の正確なタイムスタンプを取得します。
audio align <file> [options]
| オプション | デフォルト | 説明 |
|---|---|---|
<file> | 音声ファイル | |
--text, -t | 整列するテキスト(省略時は最初に文字起こし) | |
--model, -m | 0.6B | 文字起こし用ASRモデル: 0.6B、1.7B、または完全ID |
--aligner-model | 強制整列モデルID | |
--language | 言語ヒント |
例:
# 自動文字起こし後に整列
audio align recording.wav
# 既知のテキストで整列
audio align recording.wav --text "Can you guarantee that the replacement part will be shipped tomorrow?"
speak
音声合成。
audio speak "<text>" [options]
| オプション | デフォルト | 説明 |
|---|---|---|
<text> | 合成するテキスト(--batch-file使用時はオプション) | |
--engine | qwen3 | TTSエンジン: qwen3 または cosyvoice |
--output, -o | output.wav | 出力WAVファイルパス |
--language | english | 言語。--speaker設定時は省略すると話者のネイティブ方言を使用します。 |
--stream | ストリーミング合成を有効化 | |
--voice-sample | 音声クローン用のリファレンス音声(qwen3とcosyvoiceの両エンジンで動作) | |
--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 |
例:
# 基本的なTTS
audio speak "Hello, world!" --output hello.wav
# 音声クローン(Qwen3-TTS)
audio speak "Hello in your voice" --voice-sample reference.wav -o cloned.wav
# 音声クローン(CosyVoice)
audio speak "Hello in your voice" --engine cosyvoice --voice-sample reference.wav -o cloned.wav
# CosyVoice多言語
audio speak "Hallo Welt" --engine cosyvoice --language german -o hallo.wav
# マルチ話者対話
audio speak "[S1] Hello there! [S2] Hey, how are you?" \
--engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o dialogue.wav
# インライン感情/スタイルタグ
audio speak "(excited) Wow, amazing! (sad) But I have to go..." \
--engine cosyvoice -o emotion.wav
# 組み合わせ: 対話 + 感情 + 音声クローン
audio speak "[S1] (happy) Great news! [S2] (surprised) Really?" \
--engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o combined.wav
# カスタムスタイル指示
audio speak "Hello world" --engine cosyvoice --cosy-instruct "Speak cheerfully" -o cheerful.wav
# ストリーミング合成
audio speak "Long text here..." --stream
# ファイルからバッチ合成
audio speak --batch-file texts.txt --batch-size 4
kokoro
Neural Engine(CoreML)上でKokoro-82Mを使用する軽量音声合成。非自己回帰型 — 単一のforward pass、約45msのレイテンシ。
audio 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
audio kokoro "Hello, world!" --voice af_heart -o hello.wav
# フランス語のボイス
audio kokoro "Bonjour le monde" --voice ff_siwis --language fr -o bonjour.wav
# 全50ボイスを一覧表示
audio kokoro --list-voices
respond
PersonaPlex 7Bを使用したfull-duplex音声間対話。
audio 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 | 早期停止前の連続低エントロピーステップ数 |
例:
# 基本的な音声間変換
audio respond --input question.wav
# コンパイル済みtransformerで女性ボイスを使用
audio respond -i question.wav --voice NATF1 --compile
# レスポンスをstreamingし、transcriptを表示
audio respond -i question.wav --stream --transcript --verbose
vad
Pyannoteセグメンテーションを使用したオフラインの音声区間検出。
audio vad <file> [options]
| オプション | 説明 |
|---|---|
<file> | 解析する音声ファイル |
--model, -m | HuggingFaceモデルID |
--onset | 開始閾値(発話開始) |
--offset | 終了閾値(発話終了) |
--min-speech | 最小発話時間(秒) |
--min-silence | 最小無音時間(秒) |
--json | JSON形式で出力 |
vad-stream
Silero VAD v5を使用したストリーミング音声区間検出。32msチャンクで音声を処理します。
audio vad-stream <file> [options]
| オプション | 説明 |
|---|---|
<file> | 解析する音声ファイル |
--engine | VADエンジン: mlx(デフォルト)または coreml |
--model, -m | HuggingFaceモデルID(エンジンに基づいて自動選択) |
--onset | 開始閾値 |
--offset | 終了閾値 |
--min-speech | 最小発話時間(秒) |
--min-silence | 最小無音時間(秒) |
--json | JSON形式で出力 |
diarize
話者ダイアライゼーション — 誰がいつ話したかを識別します。
audio diarize <file> [options]
| オプション | デフォルト | 説明 |
|---|---|---|
<file> | 解析する音声ファイル | |
--engine | pyannote | ダイアライゼーションエンジン: pyannote(セグメンテーション + 話者チェイニング)または sortformer(エンドツーエンドCoreML) |
--target-speaker | 対象話者抽出用の登録音声(pyannoteのみ) | |
--embedding-engine | mlx | 話者embeddingエンジン: mlx または coreml(pyannoteのみ) |
--vad-filter | Silero VADで事前フィルタ(pyannoteのみ) | |
--rttm | RTTM形式で出力 | |
--json | JSON形式で出力 | |
--score-against | DER計算用のリファレンスRTTMファイル |
例:
# 基本的なダイアライゼーション(pyannote、デフォルト)
audio diarize meeting.wav
# エンドツーエンドSortformer(CoreML、Neural Engine)
audio diarize meeting.wav --engine sortformer
# 評価用のRTTM出力
audio diarize meeting.wav --rttm
# 対象話者抽出(pyannoteのみ)
audio diarize meeting.wav --target-speaker enrollment.wav
# リファレンスに対してスコアリング
audio diarize meeting.wav --score-against reference.rttm
embed-speaker
音声から話者embeddingベクトルを抽出します。
audio embed-speaker <file> [options]
| オプション | 説明 |
|---|---|
<file> | 話者の声を含む音声ファイル |
--engine | 推論エンジン: mlx(デフォルト)、coreml(WeSpeaker 256次元)、または camplusplus(CAM++ CoreML 192次元) |
--json | JSON形式で出力 |
denoise
Neural Engine上のDeepFilterNet3を使用して背景ノイズを除去します。
audio denoise <file> [options]
| オプション | デフォルト | 説明 |
|---|---|---|
<file> | 入力音声ファイル | |
--output, -o | input_clean.wav | 出力ファイルパス |
--model, -m | HuggingFaceモデルID |
例:
audio denoise noisy-recording.wav -o clean.wav