An Azure service that integrates speech processing into apps and services.
The behavior is consistent with known migration and protocol differences between the Realtime Preview and Realtime GA APIs. Several GA-specific requirements can cause the session to terminate as soon as audio starts, even if parameters appear correct.
Key areas to verify and correct before opening a support ticket:
- Use the GA endpoint format
- GA no longer accepts date-based
api-versionor theapi-versionquery parameter. - WebSocket endpoint must be:
wss://<resource>.openai.azure.com/openai/v1/realtime - If the connection is still using something like:
the service can fail or behave unexpectedly. Removewss://<resource>.openai.azure.com/openai/realtime?api-version=2025-04-01-previewapi-versionand ensure/openai/v1is present.
- Update protocol and event names for GA If a custom client was built against the Preview protocol, several event names and message formats changed and must be updated. Using old event names can cause the server to close the session when audio starts.
Important GA changes:
-
session.updatenow requires atypefield:-
"realtime"for speech-to-speech -
"transcription"for realtime audio transcription Example:
If{ "type": "session.update", "session": { "type": "realtime", "model": "gpt-realtime" // other config } }typeis missing, the server can reject the configuration and terminate. -
- Event name changes:
-
response.text.delta→response.output_text.delta -
response.audio.delta→response.output_audio.delta -
response.audio_transcript.delta→response.output_audio_transcript.delta
-
- Assistant message content types changed:
-
type: "text"→type: "output_text" -
type: "audio"→type: "output_audio"
-
- All conversation item events now include
object: "realtime.item".
Ensure all event handlers, message builders, and parsing logic are updated to these GA names and shapes. If the client still sends or expects Preview event types, the conversation can appear to “terminate” when audio is sent.
- Remove Preview-only headers
- Do not send the
OpenAI-Betaheader in any GA requests. Keeping this header from Preview code can cause protocol issues.
- Audio format and transport checks Even if this worked in Preview, confirm that the audio being sent still matches GA expectations:
- PCM 16-bit (
pcm16) - Mono
- 24 kHz sample rate
- For JSON transport, audio chunks must be base64-encoded and reasonably small (around 100 ms per chunk). Oversized or malformed chunks can cause the server to close the connection.
- SDK and client implementation
- GA protocol is only supported in the official OpenAI SDKs and in custom clients that fully implement the GA protocol.
- For .NET, GA requires OpenAI .NET SDK version
2.9.0or later. Earlier versions do not support the GA Realtime protocol and can fail when audio starts.
- When to open an Azure support ticket After verifying all of the following:
- Endpoint uses
/openai/v1and noapi-versionquery parameter. - No
OpenAI-Betaheader is sent. -
session.updateincludessession.typeset correctly ("realtime"or"transcription"). - All event names and content types are updated to GA (
response.output_*andoutput_*content types). - Audio format and chunking match the documented requirements.
- A supported SDK version or a correctly updated custom client is used.
If the session still terminates immediately when speaking, collect:
- Exact endpoint URL (with resource and path, redacting keys)
- Region and deployment name
- Timestamps and correlation IDs if available
- Example
session.updatepayload - A small example of the audio payload
Then open an Azure support ticket, as this may indicate a service-side issue with the Realtime GA model.
References:
- Migration from Preview to GA version of Realtime API
- Use the GPT Realtime API for speech and audio (programming-language-csharp)
- Use the GPT Realtime API for speech and audio (programming-language-python)
- Use the GPT Realtime API for speech and audio (programming-language-typescript)
- Use the GPT Realtime API for speech and audio (programming-language-javascript)