Realtime TTS-2 is live. Built for realtime conversation that feels human. Read the Realtime TTS-2 announcement

Capabilities

Speaker diarization

Label each transcribed word with the speaker who said it.

Speaker diarization labels each transcribed word with a speaker identifier, so you can tell who said what in calls, meetings, interviews, and other multi-speaker audio.

Speaker diarization for inworld/inworld-stt-1 is Experimental — speaker attribution quality is still improving and speakers may occasionally be misattributed.

Enabling diarization

Diarization is available on the WebSocket streaming endpoint and on asynchronous transcription. Set both fields in transcribeConfig:

json
{
  "transcribeConfig": {
    "modelId": "inworld/inworld-stt-1",
    "audioEncoding": "LINEAR16",
    "sampleRateHertz": 16000,
    "enableSpeakerDiarization": true,
    "includeWordTimestamps": true
  }
}

includeWordTimestamps goes together with enableSpeakerDiarization — speaker labels attach to word timestamps, not to the turn-level transcript.

Reading speaker labels

Each word in wordTimestamps carries a speaker identifier:

json
{
  "result": {
    "transcription": {
      "transcript": "Hi, I'm calling about my account balance.",
      "isFinal": true,
      "wordTimestamps": [
        { "word": "Hi,", "startTimeMs": 97, "endTimeMs": 194, "speaker": 0 },
        { "word": "I'm", "startTimeMs": 698, "endTimeMs": 779, "speaker": 0 }
      ]
    }
  }
}

An asynchronous job returns the same wordTimestamps array, inside each entry of the transcript document's segments. Speaker labels exist only on words — there is no segment-level speaker field.

A confidence field on word timestamps is not currently populated: asynchronous results omit it entirely, and the synchronous and streaming endpoints return 0. Do not build on it.

Speaker identifiers are small integers starting at 0. They apply only to one stream or job: the same identifier means the same speaker within that session, not across sessions.

To build per-speaker segments, group consecutive words that share a speaker value. Words may occasionally arrive without a label; treat those as unattributed rather than assuming a speaker.

Next steps