

















@@ -1172,8 +1172,7 @@ Auto-join example:
11721172 discord: {
11731173 voice: {
11741174 enabled: true,
1175- mode: "stt-tts",
1176- model: "openai/gpt-5.4-mini",
1175+ model: "openai-codex/gpt-5.5",
11771176 autoJoin: [
11781177 {
11791178 guildId: "123456789012345678",
@@ -1184,12 +1183,10 @@ Auto-join example:
11841183 decryptionFailureTolerance: 24,
11851184 connectTimeoutMs: 30000,
11861185 reconnectGraceMs: 15000,
1187-tts: {
1186+realtime: {
11881187 provider: "openai",
1189- openai: {
1190- model: "gpt-4o-mini-tts",
1191- voice: "cedar",
1192- },
1188+ model: "gpt-realtime-2",
1189+ voice: "cedar",
11931190 },
11941191 },
11951192 },
@@ -1199,10 +1196,11 @@ Auto-join example:
1199119612001197Notes:
120111981202-- `voice.tts` overrides `messages.tts` for voice playback only.
1203-- `voice.mode` controls the conversation path: `stt-tts` keeps the existing batch STT plus TTS flow, `talk-buffer` uses a realtime voice shell for turn timing/transcription/playback while the OpenClaw agent produces the answer, and `bidi` lets the realtime model converse directly while exposing `openclaw_agent_consult` for the OpenClaw brain.
1199+- `voice.tts` overrides `messages.tts` for `stt-tts` voice playback only. Realtime modes use `voice.realtime.voice`.
1200+- `voice.mode` controls the conversation path. The default is `agent-proxy`: a realtime voice shell handles turn timing, transcription, interruption, and playback, while the routed OpenClaw agent produces the answer with the same session/tool permissions as a typed Discord prompt from that speaker. `stt-tts` keeps the older batch STT plus TTS flow. `bidi` lets the realtime model converse directly while exposing `openclaw_agent_consult` for the OpenClaw brain.
12041201- `voice.agentSession` controls which OpenClaw conversation receives voice turns. Leave it unset for the voice channel's own session, or set `{ mode: "target", target: "channel:<text-channel-id>" }` to make the voice channel act as the microphone/speaker extension of an existing Discord text channel session such as `#maintainers`.
12051202- `voice.model` overrides the OpenClaw agent brain for Discord voice responses and realtime consults. Leave it unset to inherit the routed agent model. It is separate from `voice.realtime.model`.
1203+- `agent-proxy` routes speech through `discord-voice`, which preserves normal owner/tool authorization for the speaker and target session but hides the agent `tts` tool because Discord voice owns playback.
12061204- In `stt-tts` mode, STT uses `tools.media.audio`; `voice.model` does not affect transcription.
12071205- In realtime modes, `voice.realtime.provider`, `voice.realtime.model`, and `voice.realtime.voice` configure the realtime audio session. For OpenAI Realtime 2 plus the Codex brain, use `voice.realtime.model: "gpt-realtime-2"` and `voice.model: "openai-codex/gpt-5.5"`.
12081206- `voice.realtime.bargeIn` controls whether Discord speaker-start events interrupt active realtime playback. If unset, it follows the realtime provider's input-audio interruption setting.
@@ -1234,16 +1232,20 @@ STT plus TTS pipeline:
12341232- `voice.model`, when set, overrides only the response LLM for this voice-channel turn.
12351233- `voice.tts` is merged over `messages.tts`; streaming-capable providers feed the player directly, otherwise the resulting audio file is played in the joined channel.
123612341237-Default voice-channel session example:
1235+Default agent-proxy voice-channel session example:
1238123612391237```json5
12401238{
12411239 channels: {
12421240 discord: {
12431241 voice: {
12441242 enabled: true,
1245- mode: "stt-tts",
1246- model: "openai/gpt-5.4-mini",
1243+ model: "openai-codex/gpt-5.5",
1244+ realtime: {
1245+ provider: "openai",
1246+ model: "gpt-realtime-2",
1247+ voice: "cedar",
1248+ },
12471249 },
12481250 },
12491251 },
@@ -1252,20 +1254,22 @@ Default voice-channel session example:
1252125412531255With no `voice.agentSession` block, each voice channel gets its own routed OpenClaw session. For example, `/vc join channel:234567890123456789` talks to the session for that Discord voice channel.
125412561255-Realtime talk-buffer example:
1257+Legacy STT plus TTS example:
1256125812571259```json5
12581260{
12591261 channels: {
12601262 discord: {
12611263 voice: {
12621264 enabled: true,
1263- mode: "talk-buffer",
1264- model: "openai-codex/gpt-5.5",
1265-realtime: {
1265+ mode: "stt-tts",
1266+ model: "openai/gpt-5.4-mini",
1267+tts: {
12661268 provider: "openai",
1267- model: "gpt-realtime-2",
1268- voice: "cedar",
1269+ openai: {
1270+ model: "gpt-4o-mini-tts",
1271+ voice: "cedar",
1272+ },
12691273 },
12701274 },
12711275 },
@@ -1304,7 +1308,7 @@ Voice as an extension of an existing Discord channel session:
13041308 discord: {
13051309 voice: {
13061310 enabled: true,
1307- mode: "bidi",
1311+ mode: "agent-proxy",
13081312 model: "openai-codex/gpt-5.5",
13091313 agentSession: {
13101314 mode: "target",
@@ -1314,16 +1318,14 @@ Voice as an extension of an existing Discord channel session:
13141318 provider: "openai",
13151319 model: "gpt-realtime-2",
13161320 voice: "cedar",
1317- toolPolicy: "safe-read-only",
1318- consultPolicy: "always",
13191321 },
13201322 },
13211323 },
13221324 },
13231325}
13241326```
132513271326-In this mode the bot joins the configured voice channel, but OpenClaw agent turns use the target channel's normal routed session and agent. The realtime voice session speaks the returned result back into the voice channel. The supervisor agent can still use normal message tools according to its tool policy, including sending a separate Discord message if that is the right action.
1328+In `agent-proxy` mode the bot joins the configured voice channel, but OpenClaw agent turns use the target channel's normal routed session and agent. The realtime voice session speaks the returned result back into the voice channel. The supervisor agent can still use normal message tools according to its tool policy, including sending a separate Discord message if that is the right action.
1327132913281330Useful target forms:
13291331此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。