- 音声を聞き取る
- transcript を model に送る(main session、
chat.send) - 応答を待つ
- ElevenLabs による TTS で読み上げる(streaming playback)
挙動(macOS)
- Talk mode が有効な間は 常時表示の overlay が出る
- フェーズは Listening → Thinking → Speaking と遷移する
- 短い無音区間(silence window)で、現在の transcript を送信する
- 応答は WebChat に書き込まれる(手入力した場合と同じ)
- 音声割り込み(デフォルト on): assistant が話している最中にユーザーが話し始めた場合、再生を停止し、次の prompt 用に interruption timestamp を記録する
応答内の voice directive
assistant は、音声制御のために応答先頭へ 1 行の JSON を付けられます。- 対象になるのは最初の非空行だけ
- 不明な key は無視される
once: trueは現在の応答だけに適用されるonceがない場合、その voice は Talk mode の新しいデフォルトになる- JSON 行は TTS 再生前に取り除かれる
voice/voice_id/voiceIdmodel/model_id/modelIdspeed、rate(WPM)、stability、similarity、style、speakerBoostseed、normalize、lang、output_format、latency_tieronce
設定(~/.openclaw/openclaw.json)
interruptOnSpeech:truesilenceTimeoutMs: 未設定時は platform ごとのデフォルト無音待機時間を使う(700 ms on macOS and Android, 900 ms on iOS)voiceId:ELEVENLABS_VOICE_ID/SAG_VOICE_IDにフォールバックし、API key がある場合は最初の ElevenLabs voice も候補になるmodelId: 未設定時はeleven_v3apiKey:ELEVENLABS_API_KEY、または利用可能であれば gateway shell profile にフォールバックするoutputFormat: macOS / iOS はpcm_44100、Android はpcm_24000がデフォルト(MP3 streaming を強制したい場合はmp3_*を指定)
macOS UI
- メニューバーの toggle: Talk
- Config タブ: Talk Mode グループ(voice id + interrupt toggle)
- Overlay:
- Listening: 雲の pulse と mic level 表示
- Thinking: 沈み込む animation
- Speaking: 放射状の ring
- 雲をクリック: 読み上げ停止
- X をクリック: Talk mode 終了
注意点
- Speech と Microphone の権限が必要です
chat.sendを session keymainに対して使います- TTS は
ELEVENLABS_API_KEYを使った ElevenLabs streaming API と、macOS / iOS / Android 上の incremental playback により低遅延化されています eleven_v3のstabilityは0.0、0.5、1.0のいずれかに制限されます。他の model は0..1を受け付けますlatency_tierは設定時に0..4の範囲で検証されます- Android は低遅延 AudioTrack streaming 向けに
pcm_16000、pcm_22050、pcm_24000、pcm_44100の output format をサポートします