トークモード

トークモードは連続音声会話ループです:

  1. 音声をリスニング
  2. トランスクリプトをモデルに送信(メインセッション、chat.send)
  3. レスポンスを待機
  4. ElevenLabs 経由で発話(ストリーミング再生)

動作(macOS)

  • トークモードが有効な間、常時表示のオーバーレイ
  • リスニング → 思考中 → 発話中のフェーズ遷移。
  • 短い一時停止(無音ウィンドウ)で、現在のトランスクリプトが送信されます。
  • 返信は WebChat に書き込まれます(入力と同じ)。
  • 音声での割り込み(デフォルトでオン): アシスタントが話している間にユーザーが話し始めると、再生を停止し、次のプロンプトの割り込みタイムスタンプをメモします。

返信内の音声ディレクティブ

アシスタントは返信の前に単一の JSON 行を付けて音声を制御できます:

{"voice":"<voice-id>","once":true}

ルール:

  • 最初の空でない行のみ。
  • 不明なキーは無視されます。
  • once: true は現在の返信にのみ適用されます。
  • once なしの場合、音声はトークモードの新しいデフォルトになります。
  • JSON 行は TTS 再生前に削除されます。

サポートされているキー:

  • voice / voice_id / voiceId
  • model / model_id / modelId
  • speedrate(WPM)、stabilitysimilaritystylespeakerBoost
  • seednormalizelangoutput_formatlatency_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_v3stability0.00.5、または 1.0 に検証されます。他のモデルは 0..1 を受け入れます。
  • 設定時、latency_tier0..4 に検証されます。
  • Android は低レイテンシの AudioTrack ストリーミングのために pcm_16000pcm_22050pcm_24000pcm_44100 出力フォーマットをサポートしています。