puter.ai.txt2speech.listVoices()

Websites Puter Apps Node.js Workers

Returns the voices available from a TTS provider. Each voice entry includes metadata such as language, category, and supported models.

Syntax

puter.ai.txt2speech.listVoices()
puter.ai.txt2speech.listVoices(options)

Parameters

options (Object) (optional)

Option Type Description
provider String TTS provider to query. Defaults to 'aws-polly'. Accepted: 'aws-polly', 'openai', 'elevenlabs', 'gemini', 'xai'
engine String Engine/model filter (provider-specific, ignored by some providers)

When options is a plain string it is treated as an engine filter for the default (AWS Polly) provider.

Return value

A Promise that resolves to an array of TTSVoice objects.

Example response:

[
  {
    "id": "alloy",
    "name": "Alloy",
    "provider": "openai",
    "description": "A balanced, neutral voice"
  },
  {
    "id": "Joanna",
    "name": "Joanna",
    "provider": "aws-polly",
    "language": { "name": "English (US)", "code": "en-US" },
    "supported_engines": ["standard", "neural"]
  }
]

Examples

List voices for a provider

<html>
<body>
    <script src="https://js.puter.com/v2/"></script>
    <script>
        (async () => {
            const voices = await puter.ai.txt2speech.listVoices({ provider: 'openai' });
            puter.print('OpenAI voices:');
            for (const voice of voices) {
                puter.print(`  ${voice.id} - ${voice.name}`);
            }
        })();
    </script>
</body>
</html>

List all default (AWS Polly) voices

const voices = await puter.ai.txt2speech.listVoices();
for (const voice of voices) {
    const lang = voice.language ? ` (${voice.language.code})` : '';
    console.log(`${voice.id} - ${voice.name}${lang}`);
}

List Gemini voices

const voices = await puter.ai.txt2speech.listVoices({ provider: 'gemini' });
for (const voice of voices) {
    console.log(voice.id, voice.name);
}