Voce e audio
Da testo a voce, podcast e selezione della voce — ListenHub ed ElevenLabs.
Trasforma il testo in audio parlato: narrazione a voce singola, oppure un podcast con due conduttori. Due provider coprono punti di forza diversi.
Cosa puoi fare
- Narra un testo con una voce (text-to-speech) — voci cinesi tramite ListenHub, oppure 29 lingue con controllo fine tramite ElevenLabs.
- Crea un podcast con due conduttori — ListenHub genera script + audio con uno o due speaker (esclusiva di ListenHub).
- Scegli da una libreria di voci — esplora le voci/speaker disponibili e scegli in base a lingua, genere e stile.
- Controlla l'espressività (ElevenLabs) — emozione, ritmo e pause tramite impostazioni vocali e tag inline.
Scegliere un provider
ListenHub (listenhub_*) | ElevenLabs (elevenlabs_*) | |
|---|---|---|
| Punto di forza | Voci cinesi, podcast multi-conduttore | 29 lingue, espressività a voce singola |
| Speaker per clip | 1–2 (podcast) | 1 |
| Controllo fine della voce | — | stability / similarity / style / speed |
| Emozione e pause | — | <break> + tag come [laughs] (con eleven_v3) |
Regola pratica: cinese, o un podcast multi-conduttore → ListenHub. Inglese/altre lingue, o quando hai bisogno di emozione, ritmo e pause → ElevenLabs.
Strumenti ListenHub
| Strumento | Cosa fa | Input principali |
|---|---|---|
listenhub_get_speakers | Elenca gli speaker disponibili (con anteprime) | language (zh predefinito / en) |
listenhub_create_flowspeech | Testo o URL → narrazione a voce singola | sourceType (text/url), sourceContent, speakerId, mode (smart/direct) |
listenhub_create_podcast | Testo o URL → podcast con 1–2 conduttori (script + audio) | query o sources, speakers (1–2), mode (quick/deep/debate) |
listenhub_create_podcast_text_only | Genera solo lo script — da rivedere prima dell'audio | uguale, più language |
listenhub_generate_podcast_audio | Trasforma uno script (eventualmente modificato) in audio | episodeId, customScripts (modifiche opzionali) |
listenhub_get_podcast_status / listenhub_get_flowspeech_status | Controlla lo stato di un job | episodeId |
listenhub_get_user_subscription | Controlla la tua quota | — |
Gli strumenti create_* restituiscono l'audio finito — attendono che la generazione sia completa, quindi non devi interrogare lo stato. Usa gli strumenti *_status solo per verificare di nuovo dopo un'eccezione, o per consultare un episodio precedente.
Per speakerId, puoi passare direttamente il nome dello speaker (da listenhub_get_speakers) — viene risolto automaticamente per te.
Strumenti ElevenLabs
| Strumento | Cosa fa | Input principali |
|---|---|---|
elevenlabs_search_voices | Esplora le voci disponibili | — |
elevenlabs_text_to_speech | Testo → voce con la voce scelta | text, voice_id, model_id, voice_settings, output_format |
elevenlabs_list_models | Elenca i modelli TTS | — |
elevenlabs_check_subscription | Controlla la tua quota | — |
voice_id deve essere l'ID esatto restituito da elevenlabs_search_voices — non un nome leggibile.
Opzioni di model_id: eleven_multilingual_v2 (predefinito, 29 lingue), eleven_v3 (ideale per i tag emotivi), eleven_turbo_v2_5 / eleven_flash_v2_5 (bassa latenza).
voice_settings (opzionale, per un controllo fine): stability (0–1, più basso = più espressivo), similarity_boost (0–1), style (0–1), speed (0.7–1.2).
Utilizzo in una Skill
- Cerca prima una voce. Richiama
listenhub_get_speakersoelevenlabs_search_voices, poi passa l'ID. Non far indovinare all'utente il nome di una voce. - Non scrivere un ciclo di polling. Gli strumenti
create_*di ListenHub attendono già fino al completamento. Dire all'agente di "controllare lo stato ogni pochi secondi" è un anti-pattern. - Il markup inline è solo per ElevenLabs. Inseriscilo direttamente in
text: pauseHello.<break time="1.5s"/>World.; emozione/effetti[laughs][whispers](abbinato amodel_id: "eleven_v3"). Le voci di ListenHub leggono questi elementi alla lettera — non inserirli lì. - Raggruppa la narrazione in un'unica chiamata. Per molte frasi, richiedile insieme in un'unica chiamata per mantenere l'audio continuo, invece di una chiamata per ogni frase.
Testo di esempio per uno SKILL.md:
For expressive English narration, use elevenlabs_text_to_speech. First call
elevenlabs_search_voices to choose a voice_id matching the tone. For emotional
delivery, set model_id to "eleven_v3" and embed tags like [laughs] or
<break time="1s"/> directly in the text.