> ## Documentation Index
> Fetch the complete documentation index at: https://deepl-c950b784-docs-pipeline-20260903-175940.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# DeepL Voice API

> Transcribe and translate spoken audio in real time with the DeepL Voice API. Find the streaming guide, core concepts, and language and format reference.

The DeepL Voice API transcribes and translates spoken audio in real time over a WebSocket connection. Within a single streaming session, you can:

* Send one audio stream
* Receive transcripts in the source language
* Receive translations in multiple target languages
* Receive translated speech

<Info>
  **Speech-to-text** (real-time transcription and text translation) and **speech-to-speech** (translated TTS output) are available to all customers with a paid DeepL API subscription.

  The provisions applying to DeepL API Enterprise subscriptions also apply to Voice API speech-to-text, with [additions to the Terms and Conditions, Service Specification, and Data Processing Agreement](/api-reference/voice/deepl-voice-api-service-specification-updates) (new sub-processors have been added to serve specific languages).
</Info>

## Start here

<CardGroup cols={2}>
  <Card title="Real-Time Voice Quickstart" icon="waveform-lines" href="/docs/voice/real-time-voice-quickstart">
    Create a session, stream audio over WebSocket, and handle reconnections, with a complete Python example.
  </Card>

  <Card title="Understanding Voice Sessions" icon="lightbulb" href="/docs/voice/understanding-voice-sessions">
    Understand the session flow, token lifecycle, and how audio and results are delivered.
  </Card>

  <Card title="Message Encoding" icon="binary" href="/docs/voice/message-encoding">
    Choose between JSON and MessagePack for WebSocket messages.
  </Card>

  <Card title="Supported Voice Languages" icon="table-list" href="/docs/voice/supported-voice-languages">
    Check transcription, translation, and translated speech availability per language.
  </Card>

  <Card title="Voice API Requirements" icon="list-check" href="/docs/voice/voice-api-requirements">
    Check supported audio codecs and containers, chunk sizes, and session limits.
  </Card>

  <Card title="API reference" icon="code" href="/api-reference/voice/request-session">
    Full request, message, and response schemas for the Voice API endpoints.
  </Card>
</CardGroup>

## Customization

Two optional features let you tailor transcription and translation to your domain:

* **Spoken terms**: improve transcription of frequently used terms such as company-specific terminology, acronyms, product names, and team member names. Manage them in [DeepL Home](https://www.deepl.com/en/voice/spoken-terms) or via the API; see [Improving Transcription with Spoken Terms](/docs/customize/improving-transcription-with-spoken-terms).
* **Glossaries**: enforce specific translations for terms in the target language. A session can apply several glossaries in priority order; see [Glossaries in realtime Voice](#glossaries-in-realtime-voice) below and the [Request Session reference](/api-reference/voice/request-session). Manage glossaries in [DeepL Home](https://www.deepl.com/en/glossary) or programmatically with the [Glossaries API](/docs/customize/managing-glossaries).

### Glossaries in realtime Voice

Because Voice translates in real time, glossary terms are matched against the source transcription as it's produced, not against a complete text as in batch text translation. The transcription arrives incrementally, so a glossary term is applied only when its full source term appears in the streamed transcription.

This matters most for multi-word glossary terms. Since the source is transcribed piece by piece, a multi-word term is matched only when its words are transcribed together. In most cases they are, and the term is applied, but a term whose words are concluded across separate transcription segments can occasionally be missed, and the longer the term, the higher that chance. Single-word terms aren't affected in the same way. This is inherent to streaming transcription, not a temporary limitation.

For languages written without spaces between words, such as Japanese, Chinese, and Thai, the transcription also determines where each term begins and ends, so a glossary's source term must correspond to what the transcription produces.

Each glossary must contain a dictionary for the session's source and target language pair. If the source language is detected rather than fixed, and it resolves to a language a glossary has no dictionary for, that glossary isn't applied.

## Code examples

A reference implementation in Python is available in the [DeepL Python library repository](https://github.com/DeepL/deepl-python/tree/main/examples/voice/cli). The official DeepL SDKs don't integrate the Voice API yet, but you can use any WebSocket client library to interact with it.
