Guía de TTS local con IA

Lee tu chat en vivo en voz alta con voces de IA locales. Empieza por la opción sin instalación y utiliza un servidor local solo si lo necesitas.

Español

Descripción general

Funciona con el texto de chat capturado, sin importar la plataforma. El proveedor de voz pertenece al reproductor de SSN, no a YouTube, Twitch, TikTok ni otro sitio de chat. Estos proveedores de IA locales son distintos de TTS del sistema: generan audio en la página en vez de depender de que OBS facilite las voces del sistema operativo. Consulta la guía breve de configuración de OBS para distinguir la disponibilidad de voces de la captura de audio. Compara proveedores, escucha muestras y consulta los ajustes.

Social Stream Ninja puede leer los mensajes del chat en voz alta mediante texto a voz con IA local. «Local» puede significar dos cosas: la voz se ejecuta dentro del navegador, o ejecutas un pequeño servidor TTS en tu propia computadora.

Hay dos enfoques:

Opción 2: servidor propio Requiere Docker

Ejecuta un servidor TTS local en tu computadora y conecta Social Stream Ninja a él. Te ofrece más voces, clonación de voz y control desde el servidor.

  • Kokoro-FastAPI
  • openedai-speech (Piper)
  • kokoro-web

Utiliza la compatibilidad integrada de Social Stream con Endpoint compatible con OpenAI .

Empieza por la opción 1. Si solo quieres que TTS funcione en OBS, prueba primero Kokoro o Kitten integrados. No necesitan Docker, un servidor ni una clave de API. Utiliza un servidor propio solo si necesitas específicamente una voz del servidor, clonación de voz u otro modelo.

Configuración rápida

Este es el camino más corto para la mayoría de los streamers:

1
Utiliza primero el proveedor integrado. Añade &speech=en-US&ttsprovider=kokoro o &speech=en-US&ttsprovider=kitten a tu dock.html URL.
2
Pon esa URL en OBS como fuente de navegador. La fuente de navegador de OBS es la página que producirá el sonido.
3
Activa la captura de audio de OBS. En las propiedades de la fuente de navegador, activa Controlar audio mediante OBS (Control audio via OBS).
4
Envía un mensaje corto de prueba al chat. Utiliza algo sencillo como Testing local TTS. Espera a que se descarguen los modelos la primera vez si utilizas Kokoro o Piper.
5
Solo entonces prueba un servidor propio. Si utilizas Kokoro-FastAPI, openedai-speech u otro servidor Docker, lee la regla sobre localhost a continuación antes de copiar una URL en OBS.

La regla de localhost / 127.0.0.1

Este es el error más común al usar TTS local.

localhost y 127.0.0.1 siempre significan «esta misma computadora». Si OBS está en una computadora y Kokoro en otra, 127.0.0.1 dentro de la URL de OBS apunta a la computadora con OBS, no a la computadora con Kokoro.
Diagrama que muestra que localhost se refiere a la misma computadora, mientras que otra computadora necesita una dirección IP de la red local
Usa 127.0.0.1 solo cuando el servidor TTS esté en la misma computadora que la página que reproduce el audio. Si el servidor está en otra computadora, utiliza la dirección IP de su red local.
Tu configuraciónEndpoint que debes utilizar
OBS y Kokoro se ejecutan en la misma computadorahttp://127.0.0.1:8880/v1/audio/speech
Kokoro se ejecuta en otra computadora de tu red domésticahttp://192.168.x.x:8880/v1/audio/speech, usando la IP de la red local de la computadora con Kokoro
El botón de prueba de la aplicación de escritorio SSN funciona, pero OBS no tiene sonidoOBS sigue necesitando su propio endpoint operativo. La prueba de la aplicación no demuestra que OBS pueda acceder al servidor.

En Linux, macOS y Windows, comprueba también que el firewall permita el puerto y que Docker lo haya publicado con -p 8880:8880.

Dónde hacer clic en SSN

En la ventana emergente de la extensión, abre el selector de proveedor TTS y elige Endpoint TTS personalizado / local. Esto muestra los campos del endpoint local compatible con OpenAI y el enlace a esta guía.

Mapa ilustrado de los campos de TTS local en Social Stream Ninja
El campo importante es el endpoint. Para un servidor local, normalmente puedes dejar la clave de API en blanco. Elige un nombre de voz que tu servidor admita.
Acerca de las capturas de pantalla: el mapa de campos de SSN anterior muestra los campos del endpoint local. Las interfaces de los servidores de terceros cambian según la versión del proyecto, por lo que encontrarás enlaces a sus capturas actuales y detalles de interfaz desde cada repositorio, junto al paso de configuración correspondiente.

Flujo con servidor propio

SSN trata un servidor TTS local/propio como un endpoint de voz compatible con OpenAI. El flujo básico es:

chat text -> SSN TTS request -> local endpoint or SSN bridge -> TTS server -> audio response -> SSN playback

Formato de la solicitud

Para ttsprovider=customtts, localtts, o openai, SSN envía una solicitud POST con JSON al endpoint configurado:

POST /v1/audio/speech { "model": "tts-1", "input": "Chat message text", "voice": "af_bella", "response_format": "mp3", "speed": 1.0 }

CORS, páginas alojadas y el puente

CORS es una comprobación de permisos del navegador. En términos sencillos: el servidor TTS debe decirle al navegador «sí, esta página tiene permiso para pedirme audio». Si falta ese permiso, la solicitud puede bloquearse antes de que Kokoro u otro servidor TTS la reciba.

Si el servidor no permite solicitudes del navegador, ejecuta el puente TTS local de SSN y dirige SSN a http://127.0.0.1:8124/v1/audio/speech. Para OBS, lo más sencillo es ejecutar el puente en la misma computadora que OBS.

Respuestas de audio admitidas

Respuesta Compatibilidad con SSN Notas
Audio binario Sí Mejor opción. Devuelve audio/mpeg, audio/wav, audio/ogg, audio/aac, u otro formato de audio que el navegador pueda reproducir.
JSON con URL de audio Sí SSN comprueba url, audio_url, output_url, campos anidados como data.url, y el primer elemento de data[] .
JSON con audio en base64 Sí SSN comprueba audio, audio_data, audioContent, b64_json, campos anidados como data y URL de datos.
PCM sin procesar Solo si está encapsulado Devuelve PCM como archivo WAV o WAV en base64. Un elemento de audio del navegador no puede reproducir de forma fiable bytes PCM sin procesar directamente.
Formatos recomendados: utiliza mp3 para archivos pequeños y amplia compatibilidad con navegadores, wav para servidores locales de clonación y pruebas del puente, y opus solo cuando tanto el servidor como el navegador lo admitan.

Audio en streaming

SSN actualmente no ofrece reproducción progresiva para endpoints TTS personalizados/locales. Espera el blob de respuesta o los datos de audio JSON y luego los reproduce. Algunos servidores ofrecen endpoints de streaming, pero la vía actual compatible con OpenAI de SSN almacena el audio antes de reproducirlo.

Consecuencia práctica: utiliza fragmentos cortos para el TTS del chat. La reproducción en streaming necesitaría una vía de reproducción independiente con fragmentos WAV/MP3 transmitidos, MediaSource, WebCodecs o un mezclador en el servidor.

Opción 1: TTS integrado (sin configuración)

Estos motores vienen incluidos en Social Stream Ninja y no requieren instalación. Se ejecutan en el navegador con WebAssembly (WASM) u ONNX Runtime.

Proveedor Calidad Uso de CPU GPU/WebGPU Parámetro de URL
Kokoro TTS ⭐⭐⭐⭐⭐ Excelente Medio Más rápido con GPU ?ttsprovider=kokoro
Piper TTS ⭐⭐⭐⭐ Muy buena Bajo Solo CPU ?ttsprovider=piper
Kitten TTS ⭐⭐⭐ Buena Muy bajo Solo CPU ?ttsprovider=kitten
eSpeak-NG ⭐⭐ Robótica Mínimo Solo CPU ?ttsprovider=espeak

Cómo activarlo

Añade &ttsprovider= y &speech= a tu Social Stream dock.html URL:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro

Opciones de Kokoro TTS

SSN incluye actualmente 28 voces de Kokoro en inglés, tres en español y tres en portugués de Brasil. Especifica una con &voicekokoro=:

English female: af_bella, af_sarah, af_nicole, af_sky English male: am_adam, am_michael British female: bf_emma, bf_isabella British male: bm_george, bm_lewis
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro&voicekokoro=af_bella&kokorospeed=1.1
Nota sobre el idioma: Selecciona una voz de Kokoro que corresponda al idioma que quieres. Cambiar solo el parámetro de idioma no cambia la voz seleccionada.

Ejemplo en español:

dock.html?session=YOUR_SESSION&speech=es-ES&ttsprovider=kokoro&voicekokoro=ef_dora

Ejemplo en portugués:

dock.html?session=YOUR_SESSION&speech=pt-BR&ttsprovider=kokoro&voicekokoro=pf_dora

Opciones de Piper TTS

Especifica un modelo de voz con &pipervoice=:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=piper&pipervoice=en_US-hfc_female-medium

Hay voces Piper en portugués y español:

Brazilian Portuguese: pt_BR-faber-medium, pt_BR-edresson-low
Spanish: es_ES-davefx-medium, es_MX-ald-medium
dock.html?session=YOUR_SESSION&speech=pt-BR&ttsprovider=piper&pipervoice=pt_BR-faber-medium
dock.html?session=YOUR_SESSION&speech=es-ES&ttsprovider=piper&pipervoice=es_ES-davefx-medium

Opciones de Kitten TTS

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kitten&kittenvoice=expr-voice-4-f

Opciones de eSpeak-NG

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=espeak&espeakvoice=en&espeakspeed=175
dock.html?session=YOUR_SESSION&speech=pt-BR&ttsprovider=espeak&espeakvoice=pt-br&espeakspeed=145
dock.html?session=YOUR_SESSION&speech=es-ES&ttsprovider=espeak&espeakvoice=es&espeakspeed=145
Primera carga: Kokoro y Piper necesitan descargar sus archivos de modelo la primera vez que se usan (aproximadamente 50–200 MB). Esto ocurre automáticamente en segundo plano. Las cargas posteriores pueden reutilizar los modelos en caché, aunque la inicialización sigue llevando tiempo. OBS tiene una caché distinta de la de Chrome/Edge.
Captura en OBS: Todos los proveedores TTS integrados reproducen audio directamente en el navegador. En OBS, añade tu dock.html como fuente de navegador y activa "Controlar audio mediante OBS" (Control audio via OBS): no necesitas cables virtuales. Consulta la sección de OBS abajo.

Notas sobre el navegador y la aplicación de escritorio

La extensión de Chrome, la fuente de navegador de OBS y la aplicación de escritorio independiente de Social Stream Ninja utilizan los mismos dock.html parámetros de URL para TTS. La diferencia importante es dónde se produce el sonido.

Entorno Comportamiento de TTS local Captura de audio
Extensión de Chrome / fuente de navegador de OBS Las solicitudes del navegador requieren que el servidor local permita CORS, salvo que utilices el puente de SSN. Utiliza una fuente de navegador de OBS con «Controlar audio mediante OBS» (Control audio via OBS).
Aplicación de escritorio independiente Utiliza los mismos ajustes del proveedor. Las ventanas de archivos locales de la aplicación tienen menos restricciones CORS, pero el puente sigue siendo la vía más segura para servidores que rechazan solicitudes de tipo navegador. Captura el audio del escritorio o de la aplicación, o dirige la aplicación a un cable de audio virtual.
Kokoro integrado en la aplicación de escritorio La aplicación puede utilizar su vía local ninjafy.tts para Kokoro en vez de depender únicamente de la carga del modelo en el navegador. El audio se reproduce desde la aplicación, así que utiliza la captura de audio del escritorio o de la aplicación.
No confundas la prueba de la aplicación con OBS. Si pulsas Probar (Test) dentro de la aplicación SSN, la prueba se ejecuta desde la aplicación. Si copias una dock.html URL en OBS, es OBS quien debe acceder al servidor TTS y reproducir el audio.

Opción 2: servidor TTS propio

Si quieres más voces, clonación de voz o un servidor dedicado que puedas reutilizar con otras herramientas, puedes ejecutar un servidor TTS local. Social Stream Ninja se conecta a él mediante su función integrada Endpoint TTS compatible con OpenAI ; no se necesita clave de API para servidores locales.

Requisitos: Docker Desktop debe estar instalado y en ejecución. Docker es gratuito para uso personal.

Tres opciones recomendadas:

Servidor Modelo GPU Disco Puerto predeterminado
Kokoro-FastAPI Recomendado Kokoro 82M Opcional ~2 GB 8880
openedai-speech (Piper) Ligero Piper TTS Solo CPU <1 GB 8000
kokoro-web Kokoro 82M Opcional ~2 GB 3000

¿Qué paquete te conviene?

Paquete Ventaja principal Desventaja
Kokoro integrado Mejor primera opción: sin servidor, buena calidad, privado y funciona en el navegador y la aplicación de escritorio. Sin clonación de voz.
Kokoro-FastAPI Servidor compatible con OpenAI, configuración sencilla con Docker, CPU o GPU y muchas voces de Kokoro. No ofrece clonación de voz real; la mezcla de voces y las funciones de voz personalizada dependen de la versión del servidor.
openedai-speech Endpoint ligero compatible con OpenAI; Piper funciona bien con CPU y XTTS añade clonación con unos 4 GB de VRAM. El repositorio indica que está mayormente obsoleto, así que considéralo útil, pero sin garantía de continuidad.
Servidores Chatterbox Clonación de voz, opciones de interfaz web, API compatibles con OpenAI y herramientas para textos largos. La compatibilidad con CUDA/GPU es más fluida que con CPU en algunas versiones; la configuración depende de la variante del servidor.
GPT-SoVITS Clonación y control avanzados con referencias cortas y compatibilidad con transcripciones. No es compatible con OpenAI de forma predeterminada; utiliza el modo de puente de SSN.
F5-TTS Clonación natural sin entrenamiento previo con WAV de referencia + transcripción. El proyecto oficial no es un simple endpoint de OpenAI; utiliza un adaptador o el modo de puente.
Qwen3-TTS Funciones modernas de clonación y diseño de voces, incluidos modelos más pequeños de 0.6B/1.7B. Orientado primero a la biblioteca/demo; necesita un adaptador para SSN.
MisoTTS Generación avanzada de voz mediante instrucciones. No es adecuado para uso local con 6 GB de VRAM; utiliza alojamiento remoto o personalizado si lo necesitas.

Cómo funciona la clonación de voz

La clonación de voz no es un modo independiente de SSN. Es una función de algunos servidores TTS locales. SSN envía el texto del chat a un endpoint local; el servidor elige la voz clonada a partir de un archivo de audio de referencia guardado, un perfil de voz o la configuración del puente.

Flujo habitual

  1. Graba un fragmento de referencia limpio, normalmente de 3 a 30 segundos de una sola persona con poco ruido de fondo.
  2. Algunos motores también requieren la transcripción exacta de ese fragmento de referencia.
  3. El servidor local convierte la referencia en una muestra de hablante, un vector de características o un perfil de voz.
  4. SSN envía el texto del chat en vivo al endpoint mediante ttsprovider=customtts.
  5. El servidor devuelve un archivo de audio reproducible, normalmente WAV o MP3, y SSN lo reproduce en el panel/fuente de navegador.
Utiliza únicamente voces con permiso de uso. La clonación de voz puede sonar como una persona real, así que utiliza únicamente voces propias, con permiso de uso o con una licencia clara para este fin.
XTTS-v2 es para uso no comercial de forma predeterminada. Coqui Public Model License solo permite el uso no comercial del modelo y de sus resultados. Una transmisión monetizada podría no cumplir ese requisito, así que comprueba la licencia u obtén un permiso independiente antes de utilizar XTTS-v2 comercialmente.

Para 6 GB de VRAM o menos, empieza por modelos pequeños de clonación sin entrenamiento previo y servidores compatibles con OpenAI. Los modelos grandes también pueden funcionar mediante el mismo endpoint de SSN si el usuario los aloja en otro equipo.

Opción Clonación de voz Compatible con 6 GB de VRAM Ruta de la API para SSN
Qwen3-TTS 0.6B Base Audio de referencia de 3 segundos Probable Utiliza un adaptador compatible con OpenAI y luego ttsprovider=customtts
XTTS-v2 / openedai-speech Voces de referencia WAV cortas Sí, unos 4 GB según openedai-speech /v1/audio/speech
Chatterbox Turbo / Server Clonación con audio de referencia Probable si se usa Turbo / fragmentos pequeños Versiones de servidor compatibles con OpenAI, o el puente
GPT-SoVITS 5 segundos sin entrenamiento previo; 1 minuto con pocos ejemplos Probable con fp16 / instalación ligera Usa scripts/local-tts-bridge.cjs --mode gptsovits
F5-TTS WAV de referencia + transcripción Tal vez; depende de la versión y del vocoder Utiliza un adaptador compatible con OpenAI, o --mode f5 para adaptadores de servidor F5-TTS
MisoTTS 8B Contexto de audio de referencia No; el proyecto recomienda 24 GB de VRAM Solo endpoint remoto/personalizado
Formato de destino recomendado para SSN: aceptar POST /v1/audio/speech con { model, input, voice, response_format, speed } y devolver un archivo de audio reproducible. Esto incluye OpenAI, Coqui/XTTS, adaptadores de Kokoro, adaptadores de Qwen y la mayoría de los servicios proxy.

Requisitos de la computadora

Estos son puntos de partida prácticos, no garantías estrictas. La versión del modelo, la cuantización, la longitud del texto, la imagen de Docker y las aplicaciones en segundo plano pueden cambiar el uso de memoria.

Opción Computadora mínima recomendada Buen candidato Notas
Voz del sistema / eSpeak Cualquier PC moderno Cualquier PC Rápido, de baja calidad y sin clonación.
Kitten integrado CPU básica, 4 GB de RAM CPU de portátil moderno, 8 GB de RAM Modelo ONNX pequeño, inicio rápido.
Piper integrado CPU moderna, 4–8 GB de RAM CPU moderna, 8 GB de RAM Buena opción de voz neuronal que consume pocos recursos.
Kokoro integrado CPU moderna, 8 GB de RAM GPU compatible con WebGPU o CPU rápida, 8–16 GB de RAM La mejor calidad sin configuración. La primera carga descarga los archivos del modelo.
Kokoro-FastAPI Servidor Docker con CPU, 8 GB de RAM GPU NVIDIA opcional, 8–16 GB de RAM Buen servidor local cuando cargar el modelo en el navegador no resulta ideal.
openedai-speech Piper CPU, 4–8 GB de RAM CPU, 8 GB de RAM Servidor ligero compatible con OpenAI.
openedai-speech XTTS GPU NVIDIA con unos 4 GB de VRAM, 8–16 GB de RAM GPU NVIDIA con 6 GB o más; 16 GB de RAM Vía de clonación de voz; es posible usar CPU, pero es lento.
Servidores Chatterbox La CPU puede funcionar en algunas versiones, pero es lenta GPU NVIDIA con 6 GB o más; 16 GB de RAM Utiliza GPU para clonar voces o procesar textos largos.
GPT-SoVITS / F5-TTS / Qwen3-TTS Solo para pruebas con CPU; lento GPU NVIDIA con 6 GB o más para modelos pequeños u optimizados; 16 GB de RAM La elección del adaptador y el tamaño del modelo importan. Necesitarás más configuración.
MisoTTS 8B No se recomienda localmente con 6 GB de VRAM 24 GB de VRAM o servidor remoto El repositorio recomienda GPU con mucha VRAM para el uso interactivo.

Notas sobre los servidores probados

Estas son las opciones de clonación de voz en servidores propios cuya compatibilidad con SSN se comprobó. La vía del endpoint local se probó con ambos dock.html y featured.html.

SSN acepta respuestas directas de audio binario, respuestas JSON con audio en base64 y respuestas JSON con una URL de audio. La reproducción personalizada/local actual almacena el audio devuelto antes de reproducirlo; todavía no admite reproducción progresiva en streaming.

Servidor Vía de conexión de SSN Notas
openedai-speech Directo o mediante puente Compatible con OpenAI /v1/audio/speech. El modo Piper se probó con síntesis real en CPU desde dock.html y featured.html, directamente y a través del puente. Si ejecutas el código fuente en Windows, asegúrate de que la carpeta Scripts del entorno virtual esté en PATH para que piper.exe y ffmpeg.exe se puedan encontrar.
chatterbox-tts-api Directo o mediante puente Compatible con OpenAI /v1/audio/speech. Utiliza el audio de referencia configurado para la clonación. Se probó el formato de la API directamente y a través del puente.
Chatterbox-TTS-Server Directo o mediante puente Endpoint compatible con OpenAI e interfaz web. Probado con síntesis real en CPU utilizando Emily.wav desde dock.html y featured.html, directamente y a través del puente.
GPT-SoVITS Modo del puente Ejecuta el puente de SSN con --mode gptsovits; el servidor de destino es /tts, no compatible con OpenAI.
F5-TTS_server Modo del puente Ejecuta el puente de SSN con --mode f5; el servidor de destino utiliza GET /synthesize_speech/.
F5-TTS oficial Necesita adaptador Orientado primero a CLI, Gradio y servidor de sockets. Utiliza un adaptador compatible con OpenAI o el modo de puente F5 con un adaptador.
Qwen3-TTS Necesita adaptador Orientado primero a la biblioteca y la demo de Gradio. Buen candidato para un pequeño adaptador compatible con OpenAI alrededor de generate_voice_clone.
MisoTTS Solo remoto/personalizado Admite clonación de voz, pero el modelo 8B no es adecuado para 6 GB de VRAM y no tiene un endpoint REST local en el repositorio.

Configuración de Kokoro-FastAPI

Kokoro-FastAPI ejecuta el modelo Kokoro 82M como servidor local con una API compatible con OpenAI. Funciona con CPU (no requiere GPU) y tiene una calidad de voz excelente.

Instalar con Docker

Abre una terminal (Símbolo del sistema, PowerShell o Terminal) y ejecuta uno de los siguientes comandos:

CPU (funciona en cualquier computadora):

docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2

GPU (solo NVIDIA; síntesis más rápida):

docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.0post4
Primera ejecución: Docker descargará la imagen (aproximadamente 1,5–2 GB). Esto solo ocurre una vez. Después, el servidor se inicia en pocos segundos.

Comprobar que está en ejecución

Abre tu navegador y ve a http://localhost:8880/web/: deberías ver una interfaz web donde puedes probar las voces.

Voces disponibles

Más de 67 voces disponibles. Algunas destacadas:

af_bella, af_sarah, af_nicole, af_sky, af_heart (American female) am_adam, am_michael (American male) bf_emma, bf_isabella (British female) bm_george, bm_lewis (British male)

Explora y prueba todas las voces en http://localhost:8880/web/ una vez que el servidor esté en ejecución.

URL de SSN

Si Kokoro-FastAPI está en la misma computadora que OBS:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8880/v1/audio/speech&voiceopenai=af_bella

Si Kokoro-FastAPI está en otra computadora, sustituye 192.168.x.x por la dirección IP de la red local de esa computadora:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://192.168.x.x:8880/v1/audio/speech&voiceopenai=af_bella
Los nombres de las voces de Kokoro son distintos de los de OpenAI. Para Kokoro-FastAPI, utiliza voces como af_bella, af_sarah, am_adam, o bf_emma. Nombres como echo, nova, y alloy son nombres del estilo de OpenAI/openedai-speech y podrían no funcionar con Kokoro.

Mantener el servidor en ejecución

Para mantener Kokoro-FastAPI en ejecución automáticamente en segundo plano, utiliza la opción de reinicio de Docker:

docker run -d --restart unless-stopped -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2

Ahora se iniciará automáticamente con Docker Desktop cada vez que reinicies.

Configuración de openedai-speech (Piper y XTTS-v2)

openedai-speech ofrece el endpoint compatible con OpenAI /v1/audio/speech que necesita Social Stream. Su imagen pequeña ejecuta Piper en la CPU; su imagen completa puede ejecutar la clonación de voz con XTTS-v2 en una GPU compatible.

Proyecto archivado: openedai-speech se archivó en enero de 2026 y se describe como mayormente obsoleto. Sigue siendo un ejemplo útil de compatibilidad, pero ya no recibe mantenimiento. Mantenlo local y no expongas su puerto sin autenticación a la Internet pública.

Opción A: Piper ligero

Utiliza esta opción para un servidor TTS de solo CPU que ocupe menos de 1 GB. No incluye XTTS-v2 ni clonación de voz.

Instalar con Docker Compose

1
Clona el repositorio o crea una carpeta con el siguiente docker-compose.min.yml. También puedes ejecutar directamente los siguientes comandos.
2
Ejecuta la imagen mínima que solo incluye Piper:
docker run -d --restart unless-stopped \ -p 8000:8000 \ ghcr.io/matatonic/openedai-speech-min

Nota sobre la instalación desde el código fuente en Windows

Si ejecutas openedai-speech desde una copia local del código en vez de Docker, añade la carpeta de scripts de su entorno virtual a PATH antes de iniciar el servidor. Sin esto, las solicitudes pueden devolver HTTP 500 porque el servidor no puede encontrar piper.exe o ffmpeg.exe.

cd openedai-speech $env:Path = "$PWD\.venv\Scripts;$env:Path" .\.venv\Scripts\python.exe speech.py --xtts_device none -H 127.0.0.1 -P 8000

Voces disponibles

openedai-speech utiliza nombres de voz del estilo de OpenAI asociados a voces Piper:

alloy, echo, fable, onyx, nova, shimmer

URL de SSN

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=openai&openaiendpoint=http://localhost:8000/v1/audio/speech&voiceopenai=nova

Opción B: clonación de voz con XTTS-v2

XTTS-v2 en sí es un modelo, no una API web. Utiliza el servidor completo de openedai-speech para cargar el modelo, seleccionar una voz de referencia guardada, aceptar texto de chat de SSN y devolver audio reproducible. El servidor indica como objetivo práctico unos 4 GB de VRAM de GPU; la inferencia con CPU es posible, pero lenta.

No utilices openedai-speech-min para XTTS-v2. La imagen mínima solo incluye Piper. XTTS-v2 requiere la instalación completa y model=tts-1-hd en cada solicitud de voz.
1
Clona el servidor archivado, crea su archivo de entorno e inicia la configuración completa de Docker Compose con GPU:
git clone https://github.com/matatonic/openedai-speech.git cd openedai-speech Copy-Item sample.env speech.env docker compose up -d

En macOS o Linux, utiliza cp sample.env speech.env en vez de Copy-Item. Docker debe tener acceso a una GPU compatible. El modelo se descarga la primera vez que se usa.

2
Prepara un fragmento de referencia limpio y con permiso de uso. Un WAV mono de 22050 Hz, de entre 6 y 30 segundos, es un buen punto de partida:
ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
3
Añade la voz clonada debajo de la sección existente tts-1-hd en config/voice_to_speaker.yaml:
tts-1-hd: me: model: xtts speaker: voices/me.wav language: en

Conserva las voces existentes que ya aparezcan en tts-1-hd. Cambia me por el nombre de voz que quieras que envíe SSN y utiliza el código de idioma de XTTS correcto cuando sea necesario.

4
Reinicia el servidor y luego configura el panel de SSN o la superposición de mensajes destacados para usarlo:
docker compose restart
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8000/v1/audio/speech&openaimodel=tts-1-hd&voiceopenai=me&openaiformat=wav
openaimodel=tts-1-hd es necesario para XTTS-v2. Si se omite, Social Stream envía su valor predeterminado tts-1, y openedai-speech selecciona Piper en su lugar. El valor de voiceopenai debe coincidir con el nombre de la voz clonada en voice_to_speaker.yaml.

Si el navegador u OBS bloquean la solicitud directa, ejecuta el Puente TTS local en la computadora con OBS y conserva los mismos parámetros de modelo y voz al cambiar openaiendpoint a http://127.0.0.1:8124/v1/audio/speech.

Puente TTS local

El puente es una pequeña herramienta local. Acepta la solicitud del navegador desde SSN, se comunica con tu servidor TTS y devuelve el audio a SSN con encabezados compatibles con el navegador.

Regla más sencilla: ejecuta el puente en la misma computadora que OBS. Así OBS puede utilizar http://127.0.0.1:8124/v1/audio/speech, aunque el servidor TTS real esté en otra computadora.
Diagrama que muestra a OBS comunicándose con el puente local y al puente comunicándose con el servidor TTS
La fuente de navegador de OBS se comunica con el puente en la computadora con OBS. El puente puede entonces conectarse a Kokoro-FastAPI, openedai-speech u otro servidor.

La carpeta de inicio independiente es local-tts-bridge/; consulta el README del puente para ver todas las opciones de inicio.

Proxy compatible con OpenAI

Windows PowerShell, cuando el servidor TTS está en esta misma computadora:

$env:SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" npm run local-tts-bridge

Windows PowerShell, cuando el servidor TTS está en otra computadora:

$env:SSN_TTS_TARGET="http://192.168.x.x:8880/v1/audio/speech" npm run local-tts-bridge

Terminal de macOS/Linux:

SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" npm run local-tts-bridge

Luego dirige la URL de OBS dock.html al puente:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&voiceopenai=af_bella

Modo de proxy de GPT-SoVITS

GPT-SoVITS utiliza su propio formato JSON para /tts , por lo que el puente puede convertir la solicitud de SSN compatible con OpenAI en el cuerpo de solicitud de GPT-SoVITS.

$env:SSN_TTS_REF_AUDIO_PATH="C:\voices\speaker.wav" $env:SSN_TTS_REF_TEXT="Reference audio transcript here." $env:SSN_TTS_TARGET="http://127.0.0.1:9880/tts" npm run local-tts-bridge -- --mode gptsovits
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&openaiformat=wav

Modo de proxy de servidor F5-TTS

Algunos adaptadores de servidor F5-TTS ofrecen /synthesize_speech/?text=...&voice=... en vez de un endpoint compatible con OpenAI. El puente puede convertir la solicitud de SSN a ese formato de consulta.

$env:SSN_TTS_TARGET="http://127.0.0.1:7860/synthesize_speech/" npm run local-tts-bridge -- --mode f5
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&voiceopenai=default_en&openaiformat=wav
Endpoint del puente: http://127.0.0.1:8124/v1/audio/speech. Cambia el puerto con SSN_TTS_BRIDGE_PORT=8125 si es necesario.

Conexión con Social Stream Ninja

Todos los servidores propios anteriores utilizan el mismo método de conexión: la función integrada de Social Stream Endpoint TTS de OpenAI con una URL local personalizada.

Parámetros de URL

Parámetro Valor Descripción
ttsprovider customtts o openai Utiliza la vía TTS compatible con OpenAI. Usa customtts para endpoints locales/propios.
openaiendpoint http://localhost:8880/v1/audio/speech URL de tu servidor local (cambia el puerto según sea necesario)
speech en-US Activa TTS en inglés
voiceopenai af_bella Nombre de voz (depende del servidor)
openaiformat mp3 Formato de audio: mp3, wav, opus, flac
openaispeed 1.0 Velocidad de lectura (0,5–2,0)
Alias del endpoint: customttsendpoint y localttsendpoint también funcionan. customttsvoice, localttsvoice, customttsmodel, localttsmodel, customttsformat, y localttsformat son alias aceptados para los campos del estilo de OpenAI.
Comprueba el endpoint y la voz antes de investigar problemas de audio. openaiendpoint debe ser accesible desde la página que reproduce TTS, y voiceopenai debe ser una voz admitida por tu servidor. Kokoro-FastAPI utiliza nombres como af_bella; openedai-speech suele usar nombres como nova o echo.

Ejemplos de URL completos

Kokoro-FastAPI:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:8880/v1/audio/speech&voiceopenai=af_bella&openaispeed=1.1

openedai-speech:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:8000/v1/audio/speech&voiceopenai=nova

kokoro-web:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:3000/api/v1/audio/speech&voiceopenai=af_bella

Opciones adicionales de TTS

Estas opciones funcionan con cualquier proveedor TTS, incluidos los servidores locales:

Parámetro Ejemplo Descripción
simpletts &simpletts Omitir «dice»: leer solo el mensaje
simpletts2 &simpletts2 Omitir completamente los nombres de usuario
volume &volume=0.8 Nivel de volumen (0,0–1,0)
skipmessages &skipmessages=3 Leer solo uno de cada 3 mensajes
ttscommand &ttscommand=!say Leer solo los mensajes que empiecen por !say
readevents &readevents Leer también suscripciones, donaciones, etc.
ttsquick &ttsquick=100 Recorta deliberadamente la lectura después de este número de caracteres. Elimínalo si los mensajes se cortan.
No se necesita clave de API. Al utilizar un servidor local (una URL que no sea de openai.com), Social Stream Ninja envía la solicitud sin encabezado Authorization. No necesitas configurar una clave.

Opciones integradas del navegador que conviene admitir

SSN ya admite en el sistema operativo/navegador speechSynthesis, Kokoro integrado, Piper, Kitten y eSpeak. Las incorporaciones futuras más útiles para el navegador serían un selector de dispositivo de salida de audio cuando setSinkId esté disponible, más opciones de voces Piper y una vía dedicada de reproducción progresiva en streaming para servidores capaces de transmitir fragmentos de audio.

Cómo llevar el audio a OBS

La forma de capturar el audio TTS en OBS depende de cómo ejecutes Social Stream Ninja.

Método 1: fuente de navegador de OBS Recomendado

Este es el método más sencillo y funciona para todos los proveedores TTS (integrado y servidor propio).

1
En OBS, añade una nueva Fuente de navegador (Browser Source)
2
Configura la URL con tu dock.html URL con parámetros TTS
3
Comprueba "Controlar audio mediante OBS" (Control audio via OBS) en los ajustes de la fuente de navegador
4
Haz clic en Aceptar (OK): el audio TTS aparecerá ahora como una fuente de audio de OBS que puedes ajustar o dirigir
5
Haz clic una vez en la fuente de navegador en la vista previa para permitir la reproducción automática de audio
Por qué funciona: Tanto TTS integrado como TTS de un servidor propio reproducen audio mediante el contexto de audio del navegador, no mediante la síntesis de voz del sistema operativo. OBS puede capturar el audio del navegador directamente cuando está activada la opción «Controlar audio mediante OBS» (Control audio via OBS).

Método 2: aplicación de escritorio SSN + audio del escritorio

Si utilizas la aplicación de escritorio independiente de Social Stream Ninja (no una fuente de navegador de OBS):

1
El audio TTS se reproduce desde la aplicación por los altavoces/auriculares del sistema
2
En OBS, añade una fuente de tipo Captura de entrada de audio (Audio Input Capture) o Captura de audio del escritorio (Desktop Audio Capture) .
3
Si quieres separar TTS del resto del audio del escritorio, utiliza un cable de audio virtual:
  • Windows: VB-Audio Virtual Cable (gratis)
  • Configura CABLE Input como salida de la aplicación SSN en la configuración de sonido de Windows
  • Captura CABLE Output en OBS con Captura de entrada de audio (Audio Input Capture)

Enlaces sobre enrutamiento de audio en Windows

Enrutamiento por aplicación en Windows 10

1
Abrir Configuración de sonido > Preferencias de volumen y dispositivo de la aplicación.
2
Busca el navegador o la aplicación SSN en la lista de aplicaciones.
3
Configura Salida (Output) como CABLE Input (VB-Audio Virtual Cable).
4
En OBS, añade Captura de entrada de audio (Audio Input Capture) y elige CABLE Output.

Enrutamiento por aplicación en Windows 11

1
Abrir Configuración > Sistema > Sonido > Mezclador de volumen.
2
Busca el navegador o la aplicación SSN.
3
Configura Dispositivo de salida (Output device) como CABLE Input (VB-Audio Virtual Cable).
4
En OBS, añade Captura de entrada de audio (Audio Input Capture) y elige CABLE Output.

Software Audio Router

Audio Router puede dirigir una aplicación a un cable virtual, pero es un programa antiguo. Prefiere el enrutamiento por aplicación de Windows cuando funcione.

1
Instala Audio Router.
2
Dirige el navegador o la aplicación SSN a CABLE Input.
3
En OBS, captura CABLE Output.

Enrutamiento avanzado con Voicemeeter

Voicemeeter es la mejor opción cuando necesitas escuchar TTS localmente, enviarlo a OBS y mantenerlo separado de la música o el audio del juego.

1
Instala Voicemeeter y configúralo como salida predeterminada de Windows.
2
Configura Hardware Out con tus altavoces/auriculares.
3
Dirige la salida virtual a OBS como fuente de Captura de entrada de audio (Audio Input Capture).
Voz del sistema (?speech=en-US sin un proveedor) depende de las voces que ofrezca el navegador. OBS puede no ofrecer voces, o puede enumerar voces sin producir audio que se pueda capturar. Prueba la voz y la grabación de OBS por separado. Utiliza uno de los proveedores anteriores (kokoro, piper, etc.) en su lugar.

Tabla comparativa

Opción Configuración Calidad Privado OBS (fuente de navegador) Requiere GPU Costo
Kokoro integrado Ninguno ⭐⭐⭐⭐⭐ Sí Sí No (más rápido con GPU) Gratis
Piper integrado Ninguno ⭐⭐⭐⭐ Sí Sí No Gratis
Kitten integrado Ninguno ⭐⭐⭐ Sí Sí No Gratis
eSpeak integrado Ninguno ⭐⭐ Sí Sí No Gratis
Kokoro-FastAPI Docker ⭐⭐⭐⭐⭐ Sí Sí No (opcional) Gratis
openedai-speech Docker ⭐⭐⭐⭐ Sí Sí No Gratis
ElevenLabs Clave de API ⭐⭐⭐⭐⭐ No Sí No Planes de pago
TTS del sistema Ninguno ⭐⭐ Sí No* No Gratis

* La voz del sistema requiere un cable de audio virtual para capturarla en OBS.

Solución de problemas

Lista de comprobación ilustrada para resolver problemas de TTS local
Cuando TTS funcione en un lugar pero en otro no, comprueba la computadora, el endpoint, la voz, el permiso del navegador y la captura de audio de OBS, en ese orden.

La prueba de la aplicación SSN funciona, pero OBS no tiene sonido

La prueba de la aplicación solo demuestra que la aplicación puede acceder al servidor. La fuente de navegador de OBS todavía debe acceder al endpoint y reproducir el audio.

Solo se lee la primera letra o las primeras palabras

El servidor local no responde

CORS o red local bloqueados

Si el navegador indica que la solicitud se bloqueó por CORS, acceso a la red local, acceso a una red privada o un error de fetch, es posible que el servidor TTS nunca la reciba.

Voz incorrecta o voz no encontrada

El audio se reproduce, pero OBS no lo captura

No se encontró la imagen de Docker

Las etiquetas de las imágenes de Docker pueden cambiar. Si un comando de esta guía deja de funcionar, consulta la etiqueta actual en la página del proyecto:

Más opciones de TTS: Para TTS prémium en la nube (ElevenLabs, Google Cloud, Speechify) y una referencia completa de los parámetros de URL, consulta la Guía de voces TTS.