> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wednesdayai.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Realtime voice

> Set up real-time voice conversations for WednesdayAI users.

Realtime voice enables spoken conversations with the AI. Audio is captured, transcribed, processed, and synthesized back to speech in real time.

## Requirements

* A realtime voice provider plugin (e.g. `@wednesdayai/voice-openai`)
* A channel with voice support (currently: Discord voice channels)

## Quick start

<Steps>
  <Step title="Install a voice provider plugin">
    ```bash theme={"dark"}
    openclaw plugins install @wednesdayai/voice-openai
    ```
  </Step>

  <Step title="Configure the provider">
    ```yaml theme={"dark"}
    plugins:
      voice-openai:
        apiKey: ""   # or OPENAI_API_KEY
        model: "gpt-4o-realtime-preview"
        voice: "alloy"
    ```
  </Step>

  <Step title="Enable voice on a channel">
    ```yaml theme={"dark"}
    channels:
      discord:
        voice:
          enabled: true
          provider: "voice-openai"
    ```
  </Step>

  <Step title="Restart the gateway">
    ```bash theme={"dark"}
    openclaw restart
    ```
  </Step>
</Steps>

## Configuration reference

```yaml theme={"dark"}
channels:
  discord:
    voice:
      enabled: false
      provider: ""
      vad:
        sensitivity: 0.5    # 0–1; higher = less noise-sensitive
        silenceMs: 800      # ms of silence to end a turn
      maxSessionMinutes: 60
      requirePermission: false
```

| Key                 | Type    | Default | Description                                          |
| ------------------- | ------- | ------- | ---------------------------------------------------- |
| `enabled`           | boolean | `false` | Enable voice for this channel                        |
| `provider`          | string  | —       | Voice provider plugin name                           |
| `vad.sensitivity`   | number  | `0.5`   | Voice activity detection sensitivity (0–1)           |
| `vad.silenceMs`     | integer | `800`   | Silence duration to end a turn                       |
| `maxSessionMinutes` | integer | `60`    | Auto-end sessions after this duration (0 = no limit) |
| `requirePermission` | boolean | `false` | Restrict to users with the `voice` permission        |

## Session observability

Active voice sessions are observable three ways, no restart needed:

* **Status RPC** — `talk.realtime.status` (requires the `operator.read` scope) returns every active gateway-relay session with provider, owning connection, start time, duration, and audio bytes in/out.
* **Relay events** — the gateway broadcasts `talk.realtime.relay` events to the owning connection: `ready`, `transcript` (user/assistant, partial or final), `toolCall`, `vadBargeIn`, `clear`, `mark`, `audio`, `error`, and `close` with a close reason.
* **Gateway logs** — the `gateway/talk-realtime-relay` subsystem logs each relay session end with its id, duration, close reason, and audio byte counts (`journalctl --user -u openclaw-gateway` on Linux).

Relay sessions expire after 30 minutes, are capped at 2 per connection and 64 per gateway.

## Troubleshooting

Run `openclaw doctor --check voice` to diagnose configuration issues.
