Voz y audio
Texto a voz, podcasts y selección de voz — ListenHub y ElevenLabs.
Convierte texto en audio hablado: narración de una sola voz, o un podcast con dos presentadores. Dos proveedores cubren fortalezas distintas.
Qué puedes hacer
- Narra texto con una sola voz (texto a voz) — voces en chino a través de ListenHub, o 29 idiomas con control fino a través de ElevenLabs.
- Produce un podcast con dos presentadores — ListenHub genera guion + audio con uno o dos speakers (exclusivo de ListenHub).
- Elige de una biblioteca de voces — explora las voces/speakers disponibles y elige por idioma, género y estilo.
- Controla la interpretación (ElevenLabs) — emoción, ritmo y pausas mediante voice settings y etiquetas incrustadas.
Cómo elegir un proveedor
ListenHub (listenhub_*) | ElevenLabs (elevenlabs_*) | |
|---|---|---|
| Mejor en | Voces en chino, podcasts con varios presentadores | 29 idiomas, expresividad de una sola voz |
| Speakers por clip | 1–2 (podcast) | 1 |
| Control fino de voz | — | estabilidad / similitud / estilo / velocidad |
| Emoción y pausas | — | <break> + etiquetas como [laughs] (con eleven_v3) |
Regla general: chino, o un podcast con varios presentadores → ListenHub. Inglés/otros idiomas, o cuando necesites control de emoción, ritmo y pausas → ElevenLabs.
Herramientas de ListenHub
| Herramienta | Qué hace | Entradas clave |
|---|---|---|
listenhub_get_speakers | Lista los speakers disponibles (con previews) | language (zh por defecto / en) |
listenhub_create_flowspeech | Texto o URL → narración de una sola voz | sourceType (text/url), sourceContent, speakerId, mode (smart/direct) |
listenhub_create_podcast | Texto o URL → podcast de 1–2 speakers (guion + audio) | query o sources, speakers (1–2), mode (quick/deep/debate) |
listenhub_create_podcast_text_only | Genera solo el guion — revísalo antes del audio | igual, más language |
listenhub_generate_podcast_audio | Convierte un guion (editado) en audio | episodeId, customScripts (ediciones opcionales) |
listenhub_get_podcast_status / listenhub_get_flowspeech_status | Consulta el estado de un trabajo | episodeId |
listenhub_get_user_subscription | Consulta tu cuota | — |
Las herramientas create_* devuelven el audio terminado — esperan hasta que la generación se completa, así que no necesitas consultar el estado. Usa las herramientas *_status solo para volver a comprobar tras una excepción, o para consultar un episodio anterior.
Para speakerId, puedes pasar directamente el nombre del speaker (obtenido de listenhub_get_speakers) — se resuelve automáticamente.
Herramientas de ElevenLabs
| Herramienta | Qué hace | Entradas clave |
|---|---|---|
elevenlabs_search_voices | Explora las voces disponibles | — |
elevenlabs_text_to_speech | Texto → voz con una voz elegida | text, voice_id, model_id, voice_settings, output_format |
elevenlabs_list_models | Lista los modelos TTS | — |
elevenlabs_check_subscription | Consulta tu cuota | — |
voice_id debe ser el ID exacto devuelto por elevenlabs_search_voices — no un nombre legible.
Opciones de model_id: eleven_multilingual_v2 (por defecto, 29 idiomas), eleven_v3 (el mejor para etiquetas de emoción), eleven_turbo_v2_5 / eleven_flash_v2_5 (baja latencia).
voice_settings (opcional, ajuste fino): stability (0–1, más bajo = más expresivo), similarity_boost (0–1), style (0–1), speed (0.7–1.2).
Cómo usarlo en un Skill
- Busca primero una voz. Llama a
listenhub_get_speakersoelevenlabs_search_voices, y luego pasa el ID. No hagas que el usuario adivine un nombre de voz. - No escribas un bucle de consulta. Las herramientas
create_*de ListenHub ya esperan hasta terminar. Decirle al Agent que "consulte el estado cada pocos segundos" es un anti-patrón. - El marcado incrustado solo funciona con ElevenLabs. Ponlo directamente en
text: pausasHello.<break time="1.5s"/>World.; emoción/efectos[laughs][whispers](combínalo conmodel_id: "eleven_v3"). Las voces de ListenHub leen esto literalmente — no lo insertes ahí. - Agrupa la narración en una sola llamada. Para muchas frases, pídelas todas juntas en una sola llamada para mantener el audio continuo, en lugar de una llamada por frase.
Ejemplo de texto para un 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.