トークモード
トークモードは連続音声会話ループです:
- 音声をリスニング
- トランスクリプトをモデルに送信(メインセッション、chat.send)
- レスポンスを待機
- ElevenLabs 経由で発話(ストリーミング再生)
動作(macOS)
- トークモードが有効な間、常時表示のオーバーレイ。
- リスニング → 思考中 → 発話中のフェーズ遷移。
- 短い一時停止(無音ウィンドウ)で、現在のトランスクリプトが送信されます。
- 返信は WebChat に書き込まれます(入力と同じ)。
- 音声での割り込み(デフォルトでオン): アシスタントが話している間にユーザーが話し始めると、再生を停止し、次のプロンプトの割り込みタイムスタンプをメモします。
返信内の音声ディレクティブ
アシスタントは返信の前に単一の JSON 行を付けて音声を制御できます:
{"voice":"<voice-id>","once":true}
ルール:
- 最初の空でない行のみ。
- 不明なキーは無視されます。
- once: true は現在の返信にのみ適用されます。
- once なしの場合、音声はトークモードの新しいデフォルトになります。
- JSON 行は TTS 再生前に削除されます。
サポートされているキー:
- voice / voice_id / voiceId
- model / model_id / modelId
- speed、rate(WPM)、stability、similarity、style、speakerBoost
- seed、normalize、lang、output_format、latency_tier
- once
設定(~/.openclaw/openclaw.json)
{
"talk": {
"voiceId": "elevenlabs_voice_id",
"modelId": "eleven_v3",
"outputFormat": "mp3_44100_128",
"apiKey": "elevenlabs_api_key",
"interruptOnSpeech": true
}
}
デフォルト:
- interruptOnSpeech: true
- voiceId: ELEVENLABS_VOICE_ID / SAG_VOICE_ID にフォールバック(または API キーが利用可能な場合は最初の ElevenLabs 音声)
- modelId: 未設定の場合は eleven_v3 にデフォルト
- apiKey: ELEVENLABS_API_KEY にフォールバック(または利用可能な場合はゲートウェイシェルプロファイル)
- outputFormat: macOS/iOS では pcm_44100 にデフォルト、Android では pcm_24000(MP3 ストリーミングを強制するには mp3_* を設定)
macOS UI
- メニューバートグル: トーク
- 設定タブ: トークモードグループ(音声 ID + 割り込みトグル)
- オーバーレイ:
- リスニング: マイクレベルでクラウドがパルス
- 思考中: 沈むアニメーション
- 発話中: 放射状のリング
- クラウドをクリック: 発話を停止
- X をクリック: トークモードを終了
注意
- 音声 + マイク権限が必要です。
- セッションキー main に対して chat.send を使用します。
- TTS は ELEVENLABS_API_KEY で ElevenLabs ストリーミング API を使用し、macOS/iOS/Android で低レイテンシのための増分再生を行います。
- eleven_v3 の stability は 0.0、0.5、または 1.0 に検証されます。他のモデルは 0..1 を受け入れます。
- 設定時、latency_tier は 0..4 に検証されます。
- Android は低レイテンシの AudioTrack ストリーミングのために pcm_16000、pcm_22050、pcm_24000、pcm_44100 出力フォーマットをサポートしています。