# List all available voicesvoices = client.voices.list()for voice in voices: print(f"{voice.id}: {voice.name}") print(f" Category: {voice.category}") print(f" Languages: {', '.join(voice.supported_languages)}")
// List all available voicesconst voices = await client.voices.list();for (const voice of voices) { console.log(`${voice.id}: ${voice.name}`); console.log(` Category: ${voice.category}`); console.log(` Languages: ${voice.supportedLanguages.join(', ')}`);}
# Filter by languageresult = client.voices.list(language="de")german_voices = result.voices# Get only public voicesresult = client.voices.list(include_public=True)# Limit resultsresult = client.voices.list(limit=10)# Paginate through all voicesresult = client.voices.list(limit=10, offset=20)print(f"Showing {len(result.voices)} of {result.total} voices")
Pass the voice_id (Python), voiceId (JavaScript), or voice_id JSON field (cURL) when generating speech:
Python
JavaScript
Java
cURL
audio = client.tts.generate( text="Hello with a specific voice!", model_id="kugel-1-turbo", voice_id=1071,)
const audio = await client.tts.generate({ text: 'Hello with a specific voice!', modelId: 'kugel-1-turbo', voiceId: 1071,});
AudioResponse audio = client.tts().generate( GenerateRequest.builder("Hello with a specific voice!") .modelId("kugel-1-turbo") .voiceId(1071) .language("en") .build());
curl -X POST https://api.kugelaudio.com/v1/tts/generate \ -H "Authorization: Bearer $KUGELAUDIO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "text": "Hello with a specific voice!", "model_id": "kugel-1-turbo", "voice_id": 1071 }' \ --output output.pcm
Voices work with all generation methods - basic generation, streaming, and streaming sessions:
Python
JavaScript
Java
cURL
# With streamingfor chunk in client.tts.stream( text="Streaming with a specific voice.", model_id="kugel-1-turbo", voice_id=1071,): if hasattr(chunk, 'audio'): play_audio(chunk.audio)# With streaming sessions (for LLM integration)async with client.tts.streaming_session( voice_id=1071, cfg_scale=2.0,) as session: async for chunk in session.send("Hello!"): play_audio(chunk.audio)
// With streamingawait client.tts.stream( { text: 'Streaming with a specific voice.', modelId: 'kugel-1-turbo', voiceId: 1071 }, { onChunk: (chunk) => playAudio(chunk.audio) });
// With streamingclient.tts().stream( GenerateRequest.builder("Streaming with a specific voice.") .modelId("kugel-1-turbo") .voiceId(1071) .language("en") .build(), new StreamCallbacks() { @Override public void onChunk(AudioChunk chunk) { playAudio(chunk.getAudio()); } });// With streaming sessions (for LLM integration)try (StreamingSession session = client.tts().streamingSession( StreamConfig.builder().voiceId(1071).cfgScale(2.0).build())) { session.send("Hello!", true);}
# Stream with a specific voice and pipe to ffplaycurl -X POST https://api.kugelaudio.com/v1/tts/generate \ -H "Authorization: Bearer $KUGELAUDIO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "text": "Streaming with a specific voice.", "model_id": "kugel-1-turbo", "voice_id": 1071 }' \ --no-buffer | ffplay -f s16le -ar 24000 -ac 1 -nodisp -