function generateVoice<TAdapter, TStream>(options): VoiceActivityResult<TStream>;Defined in: packages/ai/src/activities/generateVoice/index.ts:185
Voice activity - creates a reusable voice.
Providers create voices in one of two ways, and some support both: design a new voice from a text description, or clone one from reference audio. Either way the result carries voice ids you pass back to generateSpeech().
TAdapter extends VoiceAdapter<string, VoiceProviderOptions<TAdapter>>
TStream extends boolean = false
VoiceActivityOptions<TAdapter, TStream>
VoiceActivityResult<TStream>
Design a voice from a description
import { generateVoice, generateSpeech } from '@tanstack/ai'
import { elevenlabsVoiceDesign, elevenlabsSpeech } from '@tanstack/ai-elevenlabs'
const designed = await generateVoice({
adapter: elevenlabsVoiceDesign('eleven_ttv_v3'),
prompt: 'A warm, gravelly narrator in his sixties with a slight Irish lilt',
})
const [preview] = designed.voices
if (!preview) throw new Error('No voice candidates returned')
const speech = await generateSpeech({
adapter: elevenlabsSpeech('eleven_v3'),
text: 'Once upon a time...',
voice: preview.voiceId,
})Save the voice to the provider's library
const saved = await generateVoice({
adapter: elevenlabsVoiceDesign('eleven_ttv_v3'),
prompt: 'A bright, upbeat product demo host',
name: 'Demo Host',
description: 'Bright, upbeat, mid-30s',
})