AAI SDK
    Preparing search index...

    Variable ASSEMBLYAI_TTS_VOICESConst

    ASSEMBLYAI_TTS_VOICES: {
        alba: { accent: "US"; language: "en" };
        anna: { accent: "US"; language: "en" };
        charles: { accent: "US"; language: "en" };
        estelle: { accent: "FR"; language: "fr" };
        eve: { accent: "US"; language: "en" };
        george: { accent: "US"; language: "en" };
        giovanni: { accent: "IT"; language: "it" };
        jane: { accent: "US"; language: "en" };
        jean: { accent: "US"; language: "en" };
        juergen: { accent: "DE"; language: "de" };
        lola: { accent: "ES"; language: "es" };
        mary: { accent: "US"; language: "en" };
        michael: { accent: "US"; language: "en" };
        paul: { accent: "UK"; language: "en" };
        rafael: { accent: "PT"; language: "pt" };
        vera: { accent: "UK"; language: "en" };
    }

    The voice catalog — voice id → the language it speaks and its accent. The accent is descriptive metadata for choosing a voice, not a settable option: AssemblyAITtsOptions has no accent field.

    A constant rather than a sentence in a doc comment, because a wrong voice id is a silent failure: it is a free-form string the service rejects in-band after the socket opens, so the agent connects, reports ready, and never speaks — the same shape as the unmapped-language bug below, and nothing upstream of a live session catches it.

    It is a constant for a second reason, learned the hard way. The list this replaced lived in a doc comment and was simply wrong — it carried ten names (azelma, cosette, fantine, javert, marius, peter_yearsley …) that are in no published catalog, while omitting most of the real ones. A list nobody can check drifts into fiction, and here the fiction is indistinguishable, at authoring time, from a working agent.

    Source: https://assemblyai.com/docs/voice-agents/voice-agent-api/voices

    Anything that shows an author their choices — the scaffold guide, a picker — should read this rather than restate it. A partial list is what sends someone guessing, which is the failure being prevented.

    Type Declaration

    • Readonlyalba: { accent: "US"; language: "en" }
    • Readonlyanna: { accent: "US"; language: "en" }
    • Readonlycharles: { accent: "US"; language: "en" }
    • Readonlyestelle: { accent: "FR"; language: "fr" }
    • Readonlyeve: { accent: "US"; language: "en" }
    • Readonlygeorge: { accent: "US"; language: "en" }
    • Readonlygiovanni: { accent: "IT"; language: "it" }
    • Readonlyjane: { accent: "US"; language: "en" }
    • Readonlyjean: { accent: "US"; language: "en" }
    • Readonlyjuergen: { accent: "DE"; language: "de" }
    • Readonlylola: { accent: "ES"; language: "es" }
    • Readonlymary: { accent: "US"; language: "en" }
    • Readonlymichael: { accent: "US"; language: "en" }
    • Readonlypaul: { accent: "UK"; language: "en" }
    • Readonlyrafael: { accent: "PT"; language: "pt" }
    • Readonlyvera: { accent: "UK"; language: "en" }