Guia de síntese de voz local com IA

Leia seu chat ao vivo em voz alta com vozes locais de IA. Comece pela opção sem instalação e use um servidor local somente se precisar.

Português (Brasil)

Visão geral

Funciona com o texto de chat capturado, independentemente da plataforma. O provedor de voz pertence ao player do SSN, e não ao YouTube, Twitch, TikTok ou outro site de chat. Esses provedores locais de IA diferem de Síntese de voz do sistema: eles geram áudio da página, sem depender de o OBS disponibilizar as vozes do sistema operacional. Consulte o guia curto de configuração do OBS para disponibilidade de vozes versus captura de áudio. Compare provedores, ouça amostras e veja as configurações.

O Social Stream Ninja pode ler mensagens do chat em voz alta usando síntese de voz local com IA. "Local" pode significar duas coisas: a voz é executada dentro do navegador ou você executa um pequeno servidor de TTS no seu próprio computador.

Há duas abordagens:

Caminho 2 — Servidor próprio Docker necessário

Execute um servidor local de TTS na sua máquina e aponte o Social Stream Ninja para ele. Oferece mais opções de voz, clonagem de voz e controle no servidor.

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

Usa o suporte integrado do Social Stream para Endpoint compatível com OpenAI .

Comece pelo caminho 1. Se você só quer fazer o TTS funcionar no OBS, experimente primeiro o Kokoro ou o Kitten integrado. Eles não precisam de Docker, servidor nem chave de API. Use um servidor próprio somente quando precisar especificamente de uma voz de servidor, clonagem de voz ou outro modelo.

Configuração rápida

Este é o caminho mais curto para a maioria dos streamers:

1
Use primeiro o provedor integrado. Adicione &speech=en-US&ttsprovider=kokoro ou &speech=en-US&ttsprovider=kitten ao seu dock.html URL.
2
Coloque essa URL no OBS como fonte de navegador. A fonte de navegador do OBS é a página que emitirá o som.
3
Ative a captura de áudio no OBS. Nas propriedades da fonte de navegador, ative Controlar áudio pelo OBS.
4
Envie uma mensagem curta de teste no chat. Use algo simples como Testing local TTS. Aguarde os downloads iniciais dos modelos ao usar Kokoro ou Piper.
5
Só depois experimente um servidor próprio. Se usar Kokoro-FastAPI, openedai-speech ou outro servidor Docker, leia a regra do localhost abaixo antes de copiar uma URL para o OBS.

A regra de localhost / 127.0.0.1

Este é o erro mais comum com TTS local.

localhost e 127.0.0.1 sempre significam "este mesmo computador". Se o OBS estiver em um computador e o Kokoro em outro, 127.0.0.1 dentro da URL do OBS aponta para o computador do OBS, e não para o computador com Kokoro.
Diagrama mostrando que localhost significa o mesmo computador, enquanto outro computador precisa de um endereço IP na rede local
Use 127.0.0.1 somente quando o servidor de TTS estiver no mesmo computador da página que reproduz áudio. Se o servidor estiver em outro computador, use o endereço IP dele na rede local.
Sua configuraçãoEndpoint a usar
OBS e Kokoro são executados no mesmo computadorhttp://127.0.0.1:8880/v1/audio/speech
O Kokoro é executado em outro computador na sua rede domésticahttp://192.168.x.x:8880/v1/audio/speech, usando o IP de rede local do computador com Kokoro
O botão de teste do aplicativo SSN para desktop funciona, mas o OBS está sem somO OBS ainda precisa de um endpoint próprio que funcione. O teste no aplicativo não prova que o OBS consegue acessar o servidor.

No Linux, macOS e Windows, verifique também se o firewall permite a porta e se o Docker publicou a porta com -p 8880:8880.

Onde clicar no SSN

No popup da extensão, abra o seletor de provedor de TTS e escolha Endpoint de TTS personalizado / local. Isso mostra os campos do endpoint local compatível com OpenAI e o link de volta para este guia.

Mapa visual dos campos de TTS local no Social Stream Ninja
O campo do endpoint é o mais importante. Para um servidor local, a chave de API geralmente pode ficar em branco. Escolha um nome de voz que o servidor realmente suporte.
Sobre as capturas de tela: o mapa de campos do SSN acima mostra os campos do endpoint local. As interfaces de servidores de terceiros mudam conforme a versão do projeto, por isso as capturas de tela atuais e os detalhes de interface estão vinculados no repositório de cada projeto, perto da etapa de configuração correspondente.

Fluxo com servidor próprio

O SSN trata um servidor de TTS local/próprio como um endpoint de fala compatível com OpenAI. O fluxo principal é:

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

Formato da solicitação

Para ttsprovider=customtts, localtts, ou openai, o SSN envia um POST JSON para o 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 hospedadas e a ponte

CORS é uma verificação de permissão do navegador. Em termos simples: o servidor de TTS precisa dizer ao navegador: "sim, esta página pode me pedir áudio". Sem essa permissão, a solicitação pode ser bloqueada antes de chegar ao Kokoro ou a outro servidor de TTS.

Se o servidor não permitir solicitações do navegador, execute a Ponte local de TTS do SSN e aponte o SSN para http://127.0.0.1:8124/v1/audio/speech. Para o OBS, a configuração mais fácil é executar a ponte no mesmo computador do OBS.

Respostas de áudio compatíveis

Resposta Suporte no SSN Notas
Áudio binário Sim Melhor opção. Retorne audio/mpeg, audio/wav, audio/ogg, audio/aac, ou outro tipo de áudio que o navegador possa reproduzir.
JSON com URL de áudio Sim O SSN verifica url, audio_url, output_url, campos aninhados como data.url, e o primeiro item de data[] .
JSON com áudio em base64 Sim O SSN verifica audio, audio_data, audioContent, b64_json, campos aninhados como data e URLs de dados.
PCM bruto Somente se encapsulado Retorne PCM como arquivo WAV ou WAV em base64. Um elemento de áudio do navegador não consegue reproduzir bytes PCM brutos diretamente de forma confiável.
Formatos recomendados: use mp3 para arquivos pequenos e amplo suporte nos navegadores, wav para servidores locais de clonagem e testes da ponte, e opus somente quando o servidor e o navegador oferecerem suporte.

Áudio em streaming

O SSN atualmente não faz reprodução progressiva para endpoints de TTS personalizados/locais. Ele espera o blob de resposta ou o payload de áudio JSON e depois reproduz. Alguns servidores de origem oferecem endpoints de streaming, mas o caminho atual compatível com OpenAI do SSN armazena o áudio antes de reproduzir.

Resultado prático: mantenha curtos os trechos de TTS do chat. O suporte a streaming precisaria de um caminho separado de reprodução com trechos WAV/MP3 transmitidos, MediaSource, WebCodecs ou um mixer no servidor.

Caminho 1 — TTS integrado (sem configuração)

Esses mecanismos estão incluídos no Social Stream Ninja e não exigem instalação. Eles são executados no navegador usando WebAssembly (WASM) ou ONNX Runtime.

Provedor Qualidade Uso de CPU GPU/WebGPU Parâmetro de URL
TTS Kokoro ⭐⭐⭐⭐⭐ Excelente Médio Mais rápido com GPU ?ttsprovider=kokoro
Piper TTS ⭐⭐⭐⭐ Muito bom Baixo Somente CPU ?ttsprovider=piper
Kitten TTS ⭐⭐⭐ Bom Muito baixo Somente CPU ?ttsprovider=kitten
eSpeak-NG ⭐⭐ Robótico Mínimo Somente CPU ?ttsprovider=espeak

Como ativar

Adicione &ttsprovider= e &speech= ao seu Social Stream dock.html URL:

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

Opções de TTS Kokoro

O SSN lista atualmente 28 vozes Kokoro em inglês, três em espanhol e três em português do Brasil. Especifique uma com &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 idioma: Selecione uma voz Kokoro correspondente ao idioma desejado. Alterar apenas o parâmetro de idioma não muda a voz selecionada.

Exemplo em espanhol:

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

Exemplo em português:

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

Opções de TTS Piper

Especifique um modelo de voz com &pipervoice=:

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

Há vozes Piper disponíveis em português e espanhol:

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

Opções de TTS Kitten

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

Opções do 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
Primeiro carregamento: Kokoro e Piper precisam baixar os arquivos de modelo no primeiro uso (~50–200 MB). Isso acontece automaticamente em segundo plano. Carregamentos posteriores podem reutilizar modelos em cache, mas a inicialização ainda leva tempo. O OBS tem um cache separado do Chrome/Edge.
Captura no OBS: Todos os provedores de TTS integrados reproduzem áudio diretamente pelo navegador. No OBS, adicione dock.html como fonte de navegador e ative "Control audio via OBS" (Controlar áudio pelo OBS)— sem necessidade de cabos virtuais. Consulte a seção do OBS abaixo.

Notas sobre navegador e aplicativo para desktop

A extensão do Chrome, a fonte de navegador do OBS e o aplicativo independente para desktop do Social Stream Ninja usam os mesmos dock.html parâmetros de URL para TTS. A diferença importante é onde o som é produzido.

Ambiente Comportamento do TTS local Captura de áudio
Extensão do Chrome / fonte de navegador do OBS O fetch do navegador exige CORS do servidor local, a menos que você use a ponte do SSN. Use uma fonte de navegador do OBS com "Control audio via OBS".
Aplicativo independente para desktop Usa as mesmas configurações de provedor. As janelas de arquivos locais do aplicativo têm menos restrições de CORS, mas a ponte ainda é o caminho mais seguro para servidores que rejeitam solicitações no estilo do navegador. Capture o áudio do desktop/aplicativo ou direcione o aplicativo para um cabo de áudio virtual.
Kokoro integrado no aplicativo para desktop O aplicativo pode usar seu caminho local ninjafy.tts para Kokoro, em vez de depender apenas do carregamento do modelo no navegador. O áudio toca pelo aplicativo, então use a captura de áudio do desktop/aplicativo.
Não confunda o teste no aplicativo com o OBS. Se você pressionar Test no aplicativo SSN, o teste será feito pelo aplicativo. Se copiar uma dock.html no OBS, é o OBS que precisa acessar o servidor de TTS e reproduzir o áudio.

Caminho 2 — Servidor próprio de TTS

Se quiser mais opções de voz, clonagem de voz ou um servidor dedicado que possa reutilizar em várias ferramentas, você pode executar um servidor local de TTS. O Social Stream Ninja se conecta a ele usando seu recurso integrado Endpoint de TTS compatível com OpenAI — sem necessidade de chave de API para servidores locais.

Requisitos: Docker Desktop deve estar instalado e em execução. O Docker é gratuito para uso pessoal.

Três opções recomendadas:

Servidor Modelo GPU Disco Porta padrão
Kokoro-FastAPI Recomendado Kokoro 82M Opcional ~2 GB 8880
openedai-speech (Piper) Leve Piper TTS Somente CPU <1 GB 8000
kokoro-web Kokoro 82M Opcional ~2 GB 3000

Qual pacote é adequado?

Pacote Principal benefício Limitação
Kokoro integrado Melhor primeira escolha: sem servidor, ótima qualidade, privado, funciona no navegador e no aplicativo para desktop. Sem clonagem de voz.
Kokoro-FastAPI Servidor compatível com OpenAI, configuração fácil via Docker, CPU ou GPU e muitas vozes Kokoro. Sem clonagem real de voz; a combinação de vozes e os recursos de voz personalizada dependem da versão do servidor.
openedai-speech Endpoint leve compatível com OpenAI; Piper funciona bem em CPU e XTTS adiciona clonagem com cerca de 4 GB de VRAM. O repositório informa que o projeto está em grande parte obsoleto, então considere-o útil, mas sem garantia de continuidade.
Servidores Chatterbox Clonagem de voz, opções de interface web, APIs compatíveis com OpenAI e ferramentas para textos longos. O suporte a CUDA/GPU é mais simples que o de CPU em algumas versões; a configuração varia conforme o fork do servidor.
GPT-SoVITS Clonagem e controle avançados com referências curtas e suporte a transcrição. Não é compatível com OpenAI por padrão; use o modo de ponte do SSN.
F5-TTS Clonagem natural zero-shot com WAV de referência e transcrição. O projeto oficial não é um simples endpoint OpenAI; use um wrapper ou modo de ponte.
Qwen3-TTS Recursos modernos de clonagem e criação de voz, incluindo modelos menores de 0.6B/1.7B. Prioriza biblioteca/demonstração; precisa de um wrapper para SSN.
MisoTTS Geração avançada de fala orientada por prompts. Não é adequado para execução local com 6 GB de VRAM; use hospedagem remota/personalizada, se necessário.

Como funciona a clonagem de voz

Clonagem de voz não é um modo separado do SSN. É um recurso de alguns servidores locais de TTS. O SSN envia o texto do chat a um endpoint local; o servidor escolhe a voz clonada a partir de um arquivo de áudio de referência salvo, um perfil de voz ou a configuração da ponte.

Fluxo típico

  1. Grave um trecho de referência limpo, normalmente de 3 a 30 segundos de uma pessoa falando, com pouco ruído de fundo.
  2. Alguns mecanismos também exigem a transcrição exata desse trecho de referência.
  3. O servidor local converte a referência em um prompt de falante, embedding ou perfil de voz.
  4. O SSN envia o texto do chat ao vivo para o endpoint usando ttsprovider=customtts.
  5. O servidor retorna um arquivo de áudio reproduzível, geralmente WAV ou MP3, e o SSN o reproduz no dock/fonte de navegador.
Use somente vozes com consentimento. A clonagem de voz pode soar como uma pessoa real, então use apenas vozes suas, que você tenha permissão para usar ou que tenham licença clara para essa finalidade.
XTTS-v2 é não comercial por padrão. Coqui Public Model License permite apenas o uso não comercial do modelo e de seus resultados. Uma transmissão monetizada pode não se enquadrar, então verifique a licença ou obtenha permissão separada antes de usar XTTS-v2 comercialmente.

Para 6 GB de VRAM ou menos, priorize modelos pequenos de clonagem zero-shot e servidores compatíveis com OpenAI. Modelos maiores também podem funcionar pelo mesmo endpoint do SSN se o usuário hospedá-los em outro lugar.

Opção Clonagem de voz Cabe em 6 GB de VRAM Caminho da API para SSN
Qwen3-TTS 0.6B Base Áudio de referência de 3 segundos Provavelmente Use um wrapper compatível com OpenAI e depois ttsprovider=customtts
XTTS-v2 / openedai-speech Vozes de referência em WAV curto Sim, cerca de 4 GB informados pelo openedai-speech /v1/audio/speech
Chatterbox Turbo / Server Clonagem com áudio de referência Provavelmente com Turbo / trechos pequenos Versões de servidor compatíveis com OpenAI ou a ponte
GPT-SoVITS 5 segundos para zero-shot, 1 minuto para few-shot Provavelmente com fp16 / instalação leve Use scripts/local-tts-bridge.cjs --mode gptsovits
F5-TTS WAV de referência + transcrição Talvez; depende da versão e do vocoder Use um wrapper compatível com OpenAI ou --mode f5 para wrappers de servidor F5-TTS
MisoTTS 8B Contexto de áudio por prompt Não; o projeto recomenda 24 GB de VRAM Somente endpoint remoto/personalizado
Melhor formato de destino para SSN: aceitar POST /v1/audio/speech com { model, input, voice, response_format, speed } e retornar um arquivo de áudio reproduzível. Isso abrange OpenAI, Coqui/XTTS, wrappers Kokoro, wrappers Qwen e a maioria dos serviços de proxy.

Requisitos do computador

Estes são pontos de partida práticos, não garantias rígidas. A versão do modelo, quantização, tamanho do texto, imagem Docker e aplicativos em segundo plano podem alterar o uso de memória.

Opção Computador mínimo na prática Bom destino Notas
TTS do sistema / eSpeak Qualquer PC moderno Qualquer PC Rápido, baixa qualidade, sem clonagem.
Kitten integrado CPU simples, 4 GB de RAM CPU de notebook moderna, 8 GB de RAM Modelo ONNX pequeno, inicialização rápida.
Piper integrado CPU moderna, 4–8 GB de RAM CPU moderna, 8 GB de RAM Boa opção de voz neural com baixo consumo de recursos.
Kokoro integrado CPU moderna, 8 GB de RAM GPU compatível com WebGPU ou CPU rápida, 8–16 GB de RAM Melhor qualidade sem configuração. O primeiro carregamento baixa os arquivos do modelo.
Kokoro-FastAPI Host Docker com CPU, 8 GB de RAM GPU NVIDIA opcional, 8–16 GB de RAM Bom servidor local quando carregar modelos no navegador não é ideal.
openedai-speech Piper CPU, 4–8 GB de RAM CPU, 8 GB de RAM Servidor leve compatível com OpenAI.
openedai-speech XTTS GPU NVIDIA com cerca de 4 GB de VRAM, 8–16 GB de RAM GPU NVIDIA com 6 GB ou mais, 16 GB de RAM Caminho para clonagem de voz; CPU é possível, mas lenta.
Servidores Chatterbox CPU pode funcionar em algumas versões, mas é lenta GPU NVIDIA com 6 GB ou mais, 16 GB de RAM Use GPU ao clonar ou processar textos longos.
GPT-SoVITS / F5-TTS / Qwen3-TTS Somente testes em CPU, lento GPU NVIDIA com 6 GB ou mais para modelos menores/otimizados, 16 GB de RAM A escolha do wrapper e o tamanho do modelo importam. Espere mais trabalho de configuração.
MisoTTS 8B Não recomendado localmente com 6 GB de VRAM 24 GB de VRAM ou host remoto O repositório recomenda GPUs com muita VRAM para uso interativo.

Notas dos servidores testados

Estes são os destinos de clonagem de voz em servidor próprio cuja compatibilidade com SSN foi verificada. O caminho do endpoint local foi testado com ambos dock.html e featured.html.

O SSN aceita respostas diretas de áudio binário, respostas JSON com áudio em base64 e respostas JSON com uma URL de áudio. A reprodução personalizada/local atual armazena o áudio retornado antes de reproduzi-lo; a reprodução progressiva em streaming ainda não é compatível.

Servidor Caminho do SSN Notas
openedai-speech Direto ou pela ponte Compatível com OpenAI /v1/audio/speech. O modo Piper foi testado com síntese real em CPU a partir de dock.html e featured.html, diretamente e pela ponte. Se executar a partir do código-fonte no Windows, verifique se a pasta Scripts do venv está em PATH para que piper.exe e ffmpeg.exe possam ser encontrados.
chatterbox-tts-api Direto ou pela ponte Compatível com OpenAI /v1/audio/speech. Usa o áudio de referência configurado para clonagem. O formato da API foi testado diretamente e pela ponte.
Chatterbox-TTS-Server Direto ou pela ponte Endpoint compatível com OpenAI e interface web. Testado com síntese real em CPU usando Emily.wav de dock.html e featured.html, diretamente e pela ponte.
GPT-SoVITS Modo da ponte Execute a ponte do SSN com --mode gptsovits; o servidor de destino é /tts, sem compatibilidade com OpenAI.
F5-TTS_server Modo da ponte Execute a ponte do SSN com --mode f5; o servidor de destino usa GET /synthesize_speech/.
F5-TTS oficial Precisa de wrapper Prioriza CLI, Gradio e servidor de socket. Use um wrapper compatível com OpenAI ou o modo de ponte F5 com um wrapper.
Qwen3-TTS Precisa de wrapper Prioriza biblioteca e demonstração Gradio. Bom candidato para um pequeno wrapper compatível com OpenAI em torno de generate_voice_clone.
MisoTTS Somente remoto/personalizado Há suporte a clonagem de voz, mas o modelo 8B não é adequado para 6 GB de VRAM e não tem endpoint REST local no repositório.

Configuração do Kokoro-FastAPI

Kokoro-FastAPI executa o modelo Kokoro 82M como servidor local com uma API compatível com OpenAI. Funciona em CPU (sem necessidade de GPU) e tem excelente qualidade de voz.

Instalar com Docker

Abra um terminal (Prompt de Comando, PowerShell ou Terminal) e execute uma das opções a seguir:

CPU (funciona em qualquer computador):

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

GPU (somente NVIDIA — síntese mais rápida):

docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.0post4
Primeira execução: O Docker baixará a imagem (~1,5–2 GB). Isso só acontece uma vez. Depois, o servidor inicia em poucos segundos.

Verifique se está em execução

Abra o navegador e acesse http://localhost:8880/web/— você deverá ver uma interface web onde pode testar vozes.

Vozes disponíveis

Mais de 67 vozes disponíveis. Alguns destaques:

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)

Explore e teste todas as vozes em http://localhost:8880/web/ quando o servidor estiver em execução.

URL do SSN

Se o Kokoro-FastAPI estiver no mesmo computador do OBS:

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

Se o Kokoro-FastAPI estiver em outro computador, substitua 192.168.x.x pelo endereço IP desse computador na rede local:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://192.168.x.x:8880/v1/audio/speech&voiceopenai=af_bella
Os nomes das vozes do Kokoro são diferentes dos nomes das vozes da OpenAI. Para Kokoro-FastAPI, use vozes como af_bella, af_sarah, am_adam, ou bf_emma. Nomes como echo, nova, e alloy são nomes no estilo OpenAI/openedai-speech e podem não funcionar com Kokoro.

Mantenha o servidor em execução

Para manter o Kokoro-FastAPI em execução automática em segundo plano, use a opção de reinicialização do Docker:

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

Agora ele iniciará automaticamente com o Docker Desktop a cada reinicialização.

Configuração do openedai-speech (Piper e XTTS-v2)

openedai-speech disponibiliza o endpoint compatível com OpenAI /v1/audio/speech de que o Social Stream precisa. Sua imagem pequena executa Piper na CPU; a imagem completa pode executar clonagem de voz XTTS-v2 em uma GPU compatível.

Projeto arquivado: O openedai-speech foi arquivado em janeiro de 2026 e se descreve como em grande parte obsoleto. Continua sendo um exemplo útil de compatibilidade, mas não recebe mais manutenção. Mantenha-o local e não exponha sua porta sem autenticação à internet pública.

Opção A: Piper leve

Use esta opção para um servidor de TTS somente em CPU com menos de 1 GB. Ela não inclui XTTS-v2 nem clonagem de voz.

Instalar com Docker Compose

1
Clone o repositório ou crie uma pasta com o seguinte docker-compose.min.yml. Como alternativa, execute diretamente os comandos abaixo.
2
Execute a imagem mínima apenas com Piper:
docker run -d --restart unless-stopped \ -p 8000:8000 \ ghcr.io/matatonic/openedai-speech-min

Nota sobre instalação a partir do código-fonte no Windows

Se executar o openedai-speech a partir de um checkout local em vez do Docker, adicione a pasta de scripts do ambiente virtual a PATH antes de iniciar o servidor. Sem isso, as solicitações podem retornar HTTP 500 porque o servidor não consegue encontrar piper.exe ou 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

Vozes disponíveis

O openedai-speech usa nomes de voz no estilo OpenAI associados a vozes Piper:

alloy, echo, fable, onyx, nova, shimmer

URL do SSN

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

Opção B: Clonagem de voz XTTS-v2

O XTTS-v2 em si é um modelo, e não uma API web. Use o servidor completo openedai-speech para carregar o modelo, selecionar uma voz de referência salva, receber o texto do chat do SSN e retornar áudio reproduzível. O servidor informa um alvo prático de cerca de 4 GB de VRAM de GPU; a inferência em CPU é possível, mas lenta.

Não use openedai-speech-min para XTTS-v2. A imagem mínima contém somente Piper. XTTS-v2 exige a instalação completa e model=tts-1-hd em cada solicitação de fala.
1
Clone o servidor arquivado, crie seu arquivo de ambiente e inicie a configuração completa do Docker Compose com GPU habilitada:
git clone https://github.com/matatonic/openedai-speech.git cd openedai-speech Copy-Item sample.env speech.env docker compose up -d

No macOS ou Linux, use cp sample.env speech.env em vez de Copy-Item. O Docker precisa ter acesso a uma GPU compatível. O modelo é baixado no primeiro uso.

2
Prepare um trecho de referência limpo e com consentimento. Um WAV mono de 22050 Hz entre 6 e 30 segundos é um bom ponto de partida:
ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
3
Adicione a voz clonada abaixo da seção existente tts-1-hd em config/voice_to_speaker.yaml:
tts-1-hd: me: model: xtts speaker: voices/me.wav language: en

Mantenha as vozes existentes já listadas em tts-1-hd. Altere me para o nome da voz que você quer que o SSN envie e use o código de idioma correto do XTTS quando necessário.

4
Reinicie o servidor e aponte o dock ou a sobreposição de destaque do SSN para ele:
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 é necessário para XTTS-v2. Se omitido, o Social Stream envia seu padrão tts-1, e o openedai-speech seleciona o Piper. O voiceopenai deve corresponder ao nome da voz clonada em voice_to_speaker.yaml.

Se o navegador ou o OBS bloquear a solicitação direta, execute a Ponte local de TTS no computador do OBS e mantenha os mesmos parâmetros de modelo e voz ao alterar openaiendpoint como http://127.0.0.1:8124/v1/audio/speech.

Ponte local de TTS

A ponte é um pequeno auxiliar local. Ela aceita a solicitação do navegador enviada pelo SSN, se comunica com seu servidor de TTS e devolve o áudio ao SSN com cabeçalhos compatíveis com o navegador.

Regra mais simples: execute a ponte no mesmo computador do OBS. Assim, o OBS pode usar http://127.0.0.1:8124/v1/audio/speech, mesmo que o servidor de TTS esteja em outro computador.
Diagrama mostrando o OBS chamando a ponte local e a ponte chamando o servidor de TTS
A fonte de navegador do OBS se comunica com a ponte no computador do OBS. A ponte pode então chamar Kokoro-FastAPI, openedai-speech ou outro servidor.

A pasta inicial independente é local-tts-bridge/; consulte o README da ponte para todas as opções de inicialização.

Proxy compatível com OpenAI

Windows PowerShell, quando o servidor de TTS está neste mesmo computador:

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

Windows PowerShell, quando o servidor de TTS está em outro computador:

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

Terminal do macOS/Linux:

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

Depois, aponte a URL do OBS dock.html para a ponte:

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 GPT-SoVITS

O GPT-SoVITS usa seu próprio formato JSON para /tts , de modo que a ponte pode converter a solicitação compatível com OpenAI do SSN no corpo de solicitação do 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 do servidor F5-TTS

Alguns wrappers de servidor F5-TTS disponibilizam /synthesize_speech/?text=...&voice=... em vez de um endpoint compatível com OpenAI. A ponte pode converter a solicitação do SSN nesse 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 da ponte: http://127.0.0.1:8124/v1/audio/speech. Altere a porta com SSN_TTS_BRIDGE_PORT=8125 se necessário.

Conexão com Social Stream Ninja

Todos os servidores próprios acima usam o mesmo método de conexão — o recurso integrado do Social Stream Endpoint de TTS OpenAI com uma URL local personalizada.

Parâmetros de URL

Parâmetro Valor Descrição
ttsprovider customtts ou openai Use o caminho de TTS compatível com OpenAI. Use customtts para endpoints locais/próprios.
openaiendpoint http://localhost:8880/v1/audio/speech URL do seu servidor local (altere a porta conforme necessário)
speech en-US Ativa TTS para inglês
voiceopenai af_bella Nome da voz (depende do servidor)
openaiformat mp3 Formato de áudio: mp3, wav, opus, flac
openaispeed 1.0 Velocidade da fala (0.5–2.0)
Aliases de endpoint: customttsendpoint e localttsendpoint também funcionam. customttsvoice, localttsvoice, customttsmodel, localttsmodel, customttsformat, e localttsformat são aliases aceitos para os campos no estilo OpenAI.
Verifique o endpoint e a voz antes de investigar problemas de áudio. openaiendpoint deve ser acessível a partir da página que reproduz o TTS, e voiceopenai deve ser uma voz compatível com seu servidor. O Kokoro-FastAPI usa nomes como af_bella; o openedai-speech costuma usar nomes como nova ou echo.

Exemplos completos de URLs

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

Opções adicionais de TTS

Estes funcionam com qualquer provedor de TTS, incluindo servidores locais:

Parâmetro Exemplo Descrição
simpletts &simpletts Pular "diz" — lê apenas a mensagem
simpletts2 &simpletts2 Pular os nomes de usuário completamente
volume &volume=0.8 Nível de volume (0.0–1.0)
skipmessages &skipmessages=3 Ler apenas uma a cada 3 mensagens
ttscommand &ttscommand=!say Ler apenas mensagens que começam com !say
readevents &readevents Ler também inscrições, doações etc.
ttsquick &ttsquick=100 Corta intencionalmente a fala após essa quantidade de caracteres. Remova se as mensagens estiverem sendo cortadas.
Não é necessária chave de API. Ao usar um servidor local (URL fora de openai.com), o Social Stream Ninja envia a solicitação sem cabeçalho Authorization. Você não precisa configurar uma chave.

Opções integradas no navegador que vale a pena oferecer

O SSN já oferece suporte a speechSynthesis, Kokoro integrado, Piper, Kitten e eSpeak. As adições futuras mais úteis no navegador seriam um seletor de dispositivo de saída de áudio onde setSinkId estiver disponível, mais opções de vozes Piper e um caminho dedicado de reprodução progressiva em streaming para servidores que possam transmitir trechos de áudio.

Como levar o áudio ao OBS

A forma de capturar áudio de TTS no OBS depende de como você está executando o Social Stream Ninja.

Método 1 — Fonte de navegador do OBS Recomendado

Este é o método mais simples e funciona para todos os provedores de TTS (integrado e servidor próprio).

1
No OBS, adicione uma nova Fonte de navegador
2
Defina a URL como sua dock.html URL com parâmetros de TTS
3
Verifique "Control audio via OBS" (Controlar áudio pelo OBS) nas configurações da fonte de navegador
4
Clique em OK— o áudio de TTS agora aparecerá como uma fonte de áudio do OBS que você pode ajustar ou encaminhar
5
Clique uma vez na fonte de navegador na prévia para permitir a reprodução automática de áudio
Por que isso funciona: Tanto o TTS integrado quanto o TTS de servidor próprio reproduzem áudio pelo contexto de áudio do navegador (e não pela síntese de voz do sistema operacional). O OBS pode capturar o áudio do navegador diretamente quando "Control audio via OBS" está marcado.

Método 2 — Aplicativo SSN para desktop + áudio do desktop

Se você estiver usando o aplicativo independente para desktop do Social Stream Ninja (e não uma fonte de navegador do OBS):

1
O áudio de TTS é reproduzido pelo aplicativo nos alto-falantes/fones do sistema
2
No OBS, adicione uma fonte do tipo Captura de entrada de áudio ou Captura de áudio do desktop .
3
Se quiser isolar o TTS dos outros áudios do desktop, use um cabo de áudio virtual:
  • Windows: VB-Audio Virtual Cable (gratuito)
  • Defina CABLE Input como saída do aplicativo SSN nas configurações de som do Windows
  • Captura CABLE Output no OBS com Captura de entrada de áudio

Links de roteamento de áudio do Windows

Roteamento por aplicativo no Windows 10

1
Abrir Configurações de som > Preferências de volume do aplicativo e dispositivo.
2
Encontre o navegador ou o aplicativo SSN na lista de aplicativos.
3
Defina Output como CABLE Input (VB-Audio Virtual Cable).
4
No OBS, adicione Captura de entrada de áudio e escolha CABLE Output.

Roteamento por aplicativo no Windows 11

1
Abrir Configurações > Sistema > Som > Mixer de volume.
2
Encontre o navegador ou o aplicativo SSN.
3
Defina Output device como CABLE Input (VB-Audio Virtual Cable).
4
No OBS, adicione Captura de entrada de áudio e escolha CABLE Output.

Software Audio Router

Audio Router pode direcionar um aplicativo a um cabo virtual, mas é um software antigo. Prefira o roteamento por aplicativo do Windows quando funcionar.

1
Instale o Audio Router.
2
Direcione o navegador ou o aplicativo SSN para CABLE Input.
3
No OBS, capture CABLE Output.

Roteamento avançado com Voicemeeter

Voicemeeter é melhor quando você precisa ouvir o TTS localmente, encaminhá-lo ao OBS e mantê-lo separado do áudio de músicas/jogos.

1
Instale o Voicemeeter e defina-o como a saída padrão do Windows.
2
Defina Hardware Out para seus alto-falantes/fones de ouvido.
3
Direcione a saída virtual ao OBS como fonte de captura de entrada de áudio.
TTS do sistema (?speech=en-US sem um provedor) depende das vozes disponibilizadas pelo navegador. O OBS pode não disponibilizar vozes ou pode listar vozes sem produzir áudio capturável. Teste a fala e a gravação do OBS separadamente. Use um dos provedores acima (kokoro, piper, etc.).

Tabela comparativa

Opção Configuração Qualidade Privado OBS (fonte de navegador) GPU necessária Custo
Kokoro integrado Nenhum ⭐⭐⭐⭐⭐ Sim Sim Não (mais rápido com) Gratuito
Piper integrado Nenhum ⭐⭐⭐⭐ Sim Sim Não Gratuito
Kitten integrado Nenhum ⭐⭐⭐ Sim Sim Não Gratuito
eSpeak integrado Nenhum ⭐⭐ Sim Sim Não Gratuito
Kokoro-FastAPI Docker ⭐⭐⭐⭐⭐ Sim Sim Não (opcional) Gratuito
openedai-speech Docker ⭐⭐⭐⭐ Sim Sim Não Gratuito
ElevenLabs Chave de API ⭐⭐⭐⭐⭐ Não Sim Não Planos pagos
Síntese de voz do sistema Nenhum ⭐⭐ Sim Não* Não Gratuito

* O TTS do sistema exige roteamento por cabo de áudio virtual para captura no OBS.

Solução de problemas

Lista visual de verificação para solucionar problemas de TTS local
Quando o TTS funcionar em um lugar, mas não em outro, verifique a máquina, o endpoint, a voz, a permissão do navegador e a captura de áudio do OBS, nessa ordem.

O teste do aplicativo SSN funciona, mas o OBS está sem som

O teste no aplicativo só prova que ele consegue acessar o servidor. A fonte de navegador do OBS ainda precisa acessar o endpoint e reproduzir o áudio.

Somente a primeira letra ou as primeiras palavras são lidas

O servidor local não responde

CORS ou rede local bloqueados

Se o navegador informar que a solicitação foi bloqueada por CORS, acesso à rede local, acesso à rede privada ou falha de fetch, o servidor de TTS talvez nunca receba a solicitação.

Voz incorreta ou não encontrada

O áudio toca, mas o OBS não o captura

Imagem Docker não encontrada

As tags de imagens Docker podem mudar. Se um comando deste guia parar de funcionar, consulte a página do projeto para ver a tag atual:

Mais opções de TTS: Para TTS premium na nuvem (ElevenLabs, Google Cloud, Speechify) e a referência completa de parâmetros de URL, consulte o Guia de vozes TTS.