Talk 模式有两种运行形态:

  • 原生 Talk(macOS/iOS/Android):本地语音识别 + Gateway chat + talk.speak TTS
  • 浏览器 Talk:通过 talk.client.create(WebRTC/provider-websocket)或 talk.session.create(gateway-relay)

原生 Talk 循环(macOS)

  1. 监听语音
  2. 将转录发送到模型(通过活跃 session)
  3. 等待响应
  4. 通过配置的 Talk provider 播放(talk.speak)

行为特性:

  • 短暂停顿(静音窗口)后发送当前转录
  • 回复写入 WebChat(与打字相同)
  • 打断检测(默认开启):用户说话时停止播放

语音指令(回复前缀)

{ "voice": "<voice-id>", "once": true }
  • 仅第一个非空行有效
  • once: true:仅对当前回复生效
  • 不带 once:成为 Talk 模式的新默认声音

配置示例

{
  talk: {
    provider: "elevenlabs",
    providers: {
      elevenlabs: {
        voiceId: "elevenlabs_voice_id",
        modelId: "eleven_v3",
        apiKey: "elevenlabs_api_key"
      }
    },
    silenceTimeoutMs: 1500,
    interruptOnSpeech: true,
    realtime: {
      provider: "openai",
      providers: {
        openai: { model: "gpt-realtime-2", voice: "cedar" }
      },
      brain: "agent-consult",
      transport: "webrtc"
    }
  }
}

关键配置项

配置项默认值说明
interruptOnSpeechtrue用户说话时打断播放
silenceTimeoutMsmacOS/Android: 700ms, iOS: 900ms静音后发送转录的等待时间
provider—活跃 TTS provider(elevenlabs/mlx/system)
realtime.brain—agent-consult/direct-tools/none

平台 UI

  • macOS:菜单栏 Talk 切换,覆盖层显示 Listening/Thinking/Speaking 状态
  • Android:Voice 标签页 Talk 切换,与手动 Mic 互斥

相关页面