Guia de síntese de voz local com IA

Execute as vozes do chat no seu próprio computador. Para a maioria dos streamers, as vozes integradas bastam.

Preciso disso?

“Local” significa uma de duas coisas: uma voz integrada ao SSN que roda no navegador ou um servidor de voz que você mesmo executa.

Quero…Faça isto
Vozes gratuitas sem instalar nadaUse: vozes integradas. A maioria das pessoas para aqui.
Usar um servidor de voz que já tenho em execuçãoConectar um servidor.
Uma voz clonadaVeja clonagem de voz.
Fish Audio no OBSVeja: Configuração do Fish Audio.
Vozes pagas na nuvemVeja: Referência de TTS.
Funciona com qualquer chat capturado pelo SSN. A voz pertence ao player do SSN, não ao YouTube ou à Twitch. Ao contrário de Síntese de voz do sistema, vozes locais de IA geram seu próprio áudio, então o OBS pode capturá-lo. Compare provedores e ouça amostras.

Vozes integradas (sem instalar nada)

Elas rodam dentro do SSN no navegador. Sem servidor, Docker ou chave de API.

VozSomCarga do computadorValor do link
KokoroExcelenteMédio. Mais rápido com uma GPU.ttsprovider=kokoro
PiperMuito boaBaixo. Apenas CPU.ttsprovider=piper
KittenBoaMuito baixo. Apenas CPU.ttsprovider=kitten
eSpeak-NGRobóticoMínimo. Apenas CPU.ttsprovider=espeak

Configure em 4 etapas

  1. Adicione &speech=en-US&ttsprovider=kokoro ao seu dock.html (link). (Ou piper, kitten, espeak.)
  2. Adicione esse link ao OBS como Fonte de navegador. Essa é a página que produz o som.
  3. Nas propriedades, ative Controlar áudio pelo OBS (Control audio via OBS).
  4. Envie uma mensagem de teste curta no chat, como Testing local TTS.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro
O primeiro uso é lento. Kokoro e Piper baixam os modelos primeiro (cerca de 50–200 MB). Os carregamentos seguintes os reutilizam, mas a inicialização ainda leva um momento. O OBS mantém sua própria cópia, separada do Chrome.

Vozes, velocidade e outros idiomas: configurações do provedor. Prefere clicar? Use o guia de configuração.

Conecte seu próprio servidor TTS

Um servidor oferece mais vozes, clonagem ou uma voz reutilizável entre ferramentas. O SSN se comunica com ele como um servidor de voz Compatível com OpenAI . Não precisa de chave de API.

  1. Inicie seu servidor. Kokoro-FastAPI é a opção mais fácil.
  2. No SSN, abra a lista de provedores de TTS e escolha Endpoint de TTS personalizado / local.
  3. Em Endpoint API personalizado/local, digite o endereço do servidor, como http://127.0.0.1:8880/v1/audio/speech.
  4. Deixe a chave de API em branco.
  5. Escolha uma voz reconhecida pelo servidor: af_bella para Kokoro, nova para openedai-speech.
  6. Copie o link para OBS e envie uma mensagem de teste.
Mapa visual dos campos de TTS local no Social Stream Ninja
O endpoint é o campo importante.
O OBS está em outro computador? Leia a regra do localhost primeiro. Bloqueado pelo navegador? Use: ponte.
ServidorModeloGPUDiscoPorta
Kokoro-FastAPI (recomendado)Kokoro 82MOpcional~2 GB8880
openedai-speech (Piper)PiperSomente CPU<1 GB8000
kokoro-webKokoro 82MOpcional~2 GB3000

Eles precisam do Docker Desktop instalado e em execução. É gratuito para uso pessoal.

A regra do localhost

Este é o erro mais comum.

localhost e 127.0.0.1 sempre significam “este mesmo computador”. Se o OBS estiver em um PC e o servidor de voz em outro, 127.0.0.1 no OBS aponta para o PC do OBS.
Diagrama mostrando que localhost significa o mesmo computador, enquanto outro computador precisa de um endereço IP na rede local
Sua configuraçãoUse este endereço
OBS e o servidor no mesmo PChttp://127.0.0.1:8880/v1/audio/speech
Servidor em outro PC de casahttp://192.168.x.x:8880/v1/audio/speech, com o IP local desse PC
O teste do aplicativo SSN funciona, mas o OBS fica sem somO OBS precisa de um endereço que funcione para ele. O teste do aplicativo não comprova que o OBS consegue acessar o servidor.

Confira também se o firewall permite a porta e se o Docker a publicou (-p 8880:8880).

Kokoro-FastAPI

Kokoro-FastAPI executa o Kokoro como servidor local. Funciona com CPU; não precisa de GPU.

  1. Abra um terminal (Prompt de Comando, PowerShell ou Terminal) e execute uma destas opções:
    docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2

    GPU NVIDIA (mais rápido):

    docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.0post4
    A primeira execução baixa cerca de 1,5–2 GB, uma única vez.
  2. Abrir http://localhost:8880/web/. Deve aparecer uma página para testar vozes (mais de 67 disponíveis).
  3. Use este link (altere o endereço se o servidor estiver em outro PC):
    dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8880/v1/audio/speech&voiceopenai=af_bella
Use nomes de vozes do Kokoro, como af_bella, af_sarah, am_adam ou bf_emma. Nomes do OpenAI como nova ou alloy podem não funcionar.

Inicie automaticamente com o Docker:

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

openedai-speech (Piper e XTTS-v2)

Projeto arquivado. O openedai-speech foi arquivado em janeiro de 2026 e se descreve como em grande parte obsoleto. Ainda funciona como exemplo, mas não recebe atualizações. Mantenha-o local. Nunca exponha a porta dele à internet; não há autenticação.

Opção A: servidor leve do Piper (CPU)

Menos de 1 GB. Sem clonagem de voz.

docker run -d --restart unless-stopped -p 8000:8000 ghcr.io/matatonic/openedai-speech-min

Vozes: alloy, echo, fable, onyx, nova, shimmer.

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=openai&openaiendpoint=http://localhost:8000/v1/audio/speech&voiceopenai=nova
Execução a partir do código-fonte no Windows (erros HTTP 500)

Adicione a pasta Scripts do ambiente virtual dele ao PATH primeiro. Caso contrário, ele 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

Opção B: clonagem de voz com XTTS-v2 (GPU)

Precisa do servidor completo, não openedai-speech-min. Planeje cerca de 4 GB de memória GPU. CPU funciona, mas é lenta.

Configure o XTTS-v2 em 4 etapas
  1. Baixe o servidor e inicie:
    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. O Docker precisa de acesso à GPU. O modelo baixa no primeiro uso.
  2. Crie um clipe de referência limpo de uma voz que você tenha permissão para usar. Mono, 22050 Hz, 6–30 segundos:
    ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
  3. Em config/voice_to_speaker.yaml, adicione na seção existente tts-1-hd (mantenha as vozes que já estão lá):
    tts-1-hd:
      me:
        model: xtts
        speaker: voices/me.wav
        language: en
    Altere me para o nome que o SSN enviará.
  4. Execute docker compose restart, depois use:
    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 é obrigatório. Sem ele, o SSN envia tts-1, e o servidor usa Piper no lugar. voiceopenai deve corresponder ao nome da sua voz no arquivo YAML.

Bloqueado pelo navegador? Execute a ponte e altere apenas openaiendpoint como http://127.0.0.1:8124/v1/audio/speech.

A ponte local de TTS

Um pequeno auxiliar do SSN. Recebe a solicitação do SSN, envia ao servidor de voz e devolve o áudio de uma forma aceita pelos navegadores. Precisa de Node.js.

Regra mais simples: execute a ponte no computador do OBS. Assim, o OBS sempre usa http://127.0.0.1:8124/v1/audio/speech, mesmo se o servidor de voz estiver em outro PC.
Diagrama mostrando o OBS chamando a ponte local e a ponte chamando o servidor de TTS
  1. Informe à ponte onde está seu servidor. PowerShell:
    $env:SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech"
    O servidor está em outro PC? Use o IP local dele, como http://192.168.x.x:8880/v1/audio/speech.
  2. Na pasta do SSN, execute node scripts/local-tts-bridge.cjs. Deixe em execução.
  3. Conecte o SSN à ponte:
    dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&voiceopenai=af_bella

macOS/Linux, em uma linha: SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" node scripts/local-tts-bridge.cjs. Dentro da pasta local-tts-bridge , node server.cjs faz o mesmo. Altere a porta com SSN_TTS_BRIDGE_PORT=8125. Todas as opções: README da ponte.

Modo GPT-SoVITS

O GPT-SoVITS usa seu próprio formato JSON para /tts . A ponte adapta as solicitações para esse formato.

$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"
node scripts/local-tts-bridge.cjs --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 servidor F5-TTS

Alguns adaptadores do F5-TTS usam /synthesize_speech/?text=...&voice=.... A ponte adapta as solicitações.

$env:SSN_TTS_TARGET="http://127.0.0.1:7860/synthesize_speech/"
node scripts/local-tts-bridge.cjs --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

Clonagem de voz

Clonagem não é uma configuração do SSN, mas uma função de alguns servidores de voz. O SSN envia o texto do chat; o servidor escolhe a voz clonada.

  1. Grave um clipe limpo de uma única pessoa falando, geralmente de 3–30 segundos, com pouco ruído de fundo.
  2. Alguns servidores também precisam das palavras exatas faladas no clipe.
  3. O servidor transforma o clipe em um perfil de voz.
  4. O SSN envia o texto do chat com ttsprovider=customtts.
  5. O servidor retorna áudio (geralmente WAV ou MP3) e o SSN o reproduz.
Clone apenas vozes suas ou que você tenha permissão para usar.
XTTS-v2 é não comercial por padrão. Sua Coqui Public Model License permite apenas o uso não comercial. Uma transmissão monetizada pode não se enquadrar. Confira a licença ou obtenha permissão primeiro.

Com 6 GB de memória de GPU ou menos, comece com modelos pequenos em servidores compatíveis com OpenAI. Modelos maiores também funcionam se estiverem hospedados em outro lugar.

OpçãoClona a partir deCabe em uma GPU de 6 GB?Como conectar
XTTS-v2 / openedai-speechClipe WAV curtoSim, cerca de 4 GBDireto, /v1/audio/speech. O projeto está arquivado.
chatterbox-tts-api / Chatterbox-TTS-ServerClipe de referênciaProvavelmente com Turbo ou trechos pequenosDireto ou pela ponte. GPU é mais fluida que CPU. A configuração varia por fork.
Qwen3-TTS (0.6B / 1.7B)Clipe de 3 segundosProvavelmente (0.6B Base)Precisa de um adaptador compatível com OpenAI.
GPT-SoVITS5 segundos; melhor com 1 minutoProvavelmente com fp16 ou uma instalação levePonte (Bridge) --mode gptsovits.
F5-TTSClipe e transcriçãoTalvezUm adaptador ou a ponte --mode f5 com F5-TTS_server.
MisoTTS 8BÁudio de referênciaNão; recomenda-se 24 GBApenas hospedagem remota. O repositório não inclui um endpoint REST local.

Kokoro integrado e Kokoro-FastAPI não clonam vozes.

O que foi testado com o SSN

Verificado com dock.html e featured.html:

  • openedai-speech (Piper): fala real na CPU, direta e pela ponte.
  • Chatterbox-TTS-Server: fala real na CPU com Emily.wav, diretamente e pela ponte.
  • chatterbox-tts-api: formato de solicitação testado, direto e pela ponte.
  • GPT-SoVITS e F5-TTS_server: apenas pelos modos da ponte.
  • F5-TTS oficial e Qwen3-TTS: precisam de um adaptador primeiro (apenas CLI, Gradio ou biblioteca).

De que computador eu preciso?

São pontos de partida aproximados, não garantias. O tamanho do modelo, o comprimento do texto e os outros aplicativos alteram o uso de memória.

OpçãoMínimoConfortável
TTS do sistema / eSpeakQualquer PCQualquer PC
Kitten integradoCPU simples, 4 GB de RAMCPU de notebook, 8 GB de RAM
Piper integradoCPU moderna, 4–8 GB de RAMCPU moderna, 8 GB de RAM
Kokoro integradoCPU moderna, 8 GB de RAMGPU com WebGPU ou CPU rápida, 8–16 GB de RAM
Kokoro-FastAPICPU, 8 GB de RAMGPU NVIDIA opcional, 8–16 GB de RAM
openedai-speech PiperCPU, 4–8 GB de RAMCPU, 8 GB de RAM
openedai-speech XTTSGPU NVIDIA de cerca de 4 GB, 8–16 GB de RAMGPU NVIDIA com 6 GB ou mais, 16 GB de RAM
ChatterboxCPU em algumas versões, lentaGPU NVIDIA com 6 GB ou mais, 16 GB de RAM
GPT-SoVITS / F5-TTS / Qwen3-TTSCPU para testes, lentaGPU NVIDIA com 6 GB ou mais, 16 GB de RAM
MisoTTS 8BNão com 6 GBGPU de 24 GB ou servidor remoto

Leve o áudio para o OBS

Fonte de navegador do OBS (recomendada)

Funciona com as vozes integradas e com seu próprio servidor.

  1. Adicione uma ação Fonte de navegador com seu link dock.html de TTS.
  2. Ative Controlar áudio pelo OBS (Control audio via OBS).
  3. Clique em OK. O TTS agora aparece no mixer do OBS.

Aplicativo SSN para desktop

O aplicativo para desktop usa os mesmos parâmetros do link. Mas o som sai do aplicativo, não do OBS. Capture com Áudio do desktop ou Captura de entrada de áudio. Para separar TTS dos outros sons, envie o aplicativo para um cabo virtual: etapas de roteamento do áudio.

Não confunda o teste do aplicativo com OBS. Clicar em Test no aplicativo faz o teste a partir do aplicativo. Com um link no OBS, é o OBS que precisa acessar o servidor e reproduzir o áudio.
Mais detalhes sobre o aplicativo para desktop

As janelas do aplicativo são menos rígidas que o Chrome com permissões do navegador (CORS). A ponte continua sendo a opção mais segura para servidores que rejeitam solicitações do navegador. Para Kokoro integrado, o aplicativo pode usar sua própria rota ninjafy.tts em vez de carregar o modelo no navegador.

Síntese de voz do sistema (&speech=en-US sem provedor) depende das vozes disponíveis no OBS. Muitas vezes não há nenhuma, ou elas não produzem som capturável. Use um dos provedores acima.

Comparação lado a lado

OpçãoConfiguraçãoQualidadePrivadoFunciona no OBSCusto
Kokoro integradoNenhum5/5SimSimGratuito
Piper integradoNenhum4/5SimSimGratuito
Kitten integradoNenhum3/5SimSimGratuito
eSpeak integradoNenhum2/5SimSimGratuito
Kokoro-FastAPIDocker5/5SimSimGratuito
openedai-speechDocker4/5SimSimGratuito
ElevenLabsChave de API5/5NãoSimPlanos pagos
Síntese de voz do sistemaNenhum2/5SimPrecisa de roteamento de áudioGratuito

Resolver problemas

Lista visual de verificação para solucionar problemas de TTS local
Funciona em um lugar, mas não em outro? Confira nesta ordem: computador, endereço, voz, permissão do navegador e áudio do OBS.
ProblemaTente isto
O teste do aplicativo funciona, mas OBS fica sem somO próprio OBS precisa conseguir acessar o servidor. O servidor está em outro PC? Substitua 127.0.0.1 pelo IP local dele. Marque Controlar áudio pelo OBS (Control audio via OBS). Ainda bloqueado? Execute a ponte no PC do OBS.
Só a primeira letra ou as primeiras palavras são lidasRemover ttsquick do link do OBS (por exemplo, &ttsquick=14) e atualize. Durante os testes, remova também typewriter= para descartar problemas de temporização.
O servidor não respondeConfira se Docker e o contêiner estão ativos. No PC do servidor, abra http://127.0.0.1:8880/web/ (Kokoro-FastAPI, ou a porta do seu servidor). No PC do OBS, abra http://SERVER_LAN_IP:8880/web/. Se falhar, o OBS também não acessa. Confira o firewall do servidor.
“Blocked by CORS”, “private network” ou “failed fetch”O navegador bloqueou antes de chegar ao servidor. Execute node scripts/local-tts-bridge.cjs no PC do OBS e use http://127.0.0.1:8124/v1/audio/speech. A página hospedada do dock beta tem mais chance de ser bloqueada; a ponte ou uma janela local do aplicativo é mais simples.
Voz errada ou não encontradaKokoro-FastAPI: af_bella, af_sarah, am_adam, ou uma da página web. openedai-speech: nova, echo, alloy. Alguns servidores diferenciam maiúsculas e minúsculas.
O áudio toca, mas o OBS não capturaAtive Controlar áudio pelo OBS (Control audio via OBS). Observe o medidor do mixer OBS durante o teste. Confira se definiu &ttsprovider=; o TTS do sistema pode precisar de áudio do desktop ou cabo virtual.
Imagem Docker não encontradaAs tags das imagens mudam. Confira a tag atual em Kokoro-FastAPI ou openedai-speech.

Para quem cria servidores

Como o SSN se comunica com um servidor personalizado. Você só precisa disto se estiver criando ou depurando um.

chat text -> SSN -> your endpoint (or the bridge) -> TTS server -> audio -> SSN plays it
O que o SSN envia

Com ttsprovider=customtts, localtts ou openai, o SSN envia um POST JSON:

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

Sem uma chave de API configurada, o SSN não envia o cabeçalho Authorization.

O que o SSN consegue reproduzir
RespostaFunciona?Notas
Arquivo de áudioSimA melhor. audio/mpeg, audio/wav, audio/ogg, audio/aac, ou qualquer tipo reproduzível no navegador.
JSON com uma URL de áudioSimVerificações url, audio_url, output_url, data.url, e o primeiro item de data[] .
JSON com áudio em base64SimVerificações audio, audio_data, audioContent, b64_json, campos aninhados como data e URLs de dados.
PCM brutoSomente se encapsuladoEnvie como arquivo WAV ou WAV em base64.

Formatos: mp3 ocupa pouco espaço e tem ampla compatibilidade. wav é adequado para servidores de clonagem e testes da ponte. Use opus somente se tanto o servidor quanto o navegador oferecerem suporte.

Ainda não há reprodução em streaming. O SSN espera a resposta inteira e depois a reproduz. Mantenha as mensagens do chat curtas.

Parâmetros do link para seu próprio servidor
ConfiguraçãoExemploO que faz
ttsprovidercustomttsUse seu próprio servidor. (openai também funciona.)
openaiendpointhttp://localhost:8880/v1/audio/speechO endereço do seu servidor. Ajuste a porta para corresponder.
speechen-USAtiva o TTS em inglês.
voiceopenaiaf_bellaNome da voz. Depende do servidor.
openaimodeltts-1-hdNome do modelo. Padrão: tts-1.
openaiformatmp3mp3, wav, opus ou flac.
openaispeed1.0Velocidade da fala (0.5–2.0).

Também aceita: customttsendpoint, localttsendpoint, customttsvoice, localttsvoice, customttsmodel, localttsmodel, customttsformat, localttsformat. Opções de leitura como simpletts, skipmessages e ttsquick funcionam com qualquer provedor: todos os parâmetros do link.

Links de exemplo:

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