Card 29 of 38· Domain 4 · Text analysis and speech

Voice Live, and translating text and speech

Real-time voice agents and the interruption event, translation against transliteration, and the config pair that replaces the one card 28 taught you.

Voice Live, and translating text and speech
Open the card in a new tab to read it at full size.

Two topics share this card: real-time voice agents, and translation. They are joined by a single question the exam keeps asking in different forms — is this about meaning, or about characters?

Voice Live

Real-time, low-latency, full-duplex voice. Full-duplex means both sides can speak at once, as in a phone call, rather than taking strict turns.

  • It runs over a bidirectional WebSocket, with JSON events flowing both ways.
  • It is compatible with the Azure OpenAI Realtime API.
  • The SDK package is azure-ai-voicelive.

Configuration: authentication by Microsoft Entra ID or API key. Audio formats are PCM16 — uncompressed, full fidelity, larger — or G.711, which is compressed and used in telephony. You can test it by enabling Voice Mode in the agent playground.

The event to know: to stop playback when the user interrupts, handle input_audio_buffer.speech_started. Without it the agent keeps talking over someone who has started speaking, which is the single most obvious way a voice agent feels wrong.

Extras worth knowing by name: a WebRTC avatar, noise suppression with echo cancellation, and semantic turn detection.

Translation — meaning against characters

What the requirement asks for The call
Convert a word's meaning — Chinese to English TextTranslationClient.translate
Convert script or characters — Russian into Cyrillic characters transliterate — no meaning change
List what is supported get_supported_languages
Skip auto-detection Pass from_language

Transliteration changes the writing system while leaving the word itself alone. Translation changes the word. A requirement that mentions a script or an alphabet is nearly always transliteration, even though translation is the more familiar operation.

Speech translation: two synthesis modes

Event-based synthesis is real-time, and handles one target language only. The voice must match that language. It works through the synthesizing event.

Manual synthesis handles multiple target languages. You iterate the translations dictionary and use a SpeechConfig plus a SpeechSynthesizer for each language.

The deciding factor is the number of target languages. One, in real time: event-based. Several: manual.

The trap

Speech translation languages are configured on SpeechTranslationConfigspeech_recognition_language plus add_target_language — and driven by a TranslationRecognizer.

Not the plain SpeechConfig and SpeechRecognizer pair from card 28. Those are correct for recognition and wrong for translation, which makes them an effective distractor for anyone who learned card 28 well.

One more detail that survives from an older naming era: the Translator endpoint still ends ...cognitiveservices.azure.com. Card 4 told you never to pick a Cognitive Services role for Foundry work. That rule is about roles. The endpoint hostname is a separate thing and genuinely still carries the old name — so do not "correct" it.