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 nada | Use: vozes integradas. A maioria das pessoas para aqui. |
| Usar um servidor de voz que já tenho em execução | Conectar um servidor. |
| Uma voz clonada | Veja clonagem de voz. |
| Fish Audio no OBS | Veja: Configuração do Fish Audio. |
| Vozes pagas na nuvem | Veja: Referência de TTS. |
Vozes integradas (sem instalar nada)
Elas rodam dentro do SSN no navegador. Sem servidor, Docker ou chave de API.
| Voz | Som | Carga do computador | Valor do link |
|---|---|---|---|
| Kokoro | Excelente | Médio. Mais rápido com uma GPU. | ttsprovider=kokoro |
| Piper | Muito boa | Baixo. Apenas CPU. | ttsprovider=piper |
| Kitten | Boa | Muito baixo. Apenas CPU. | ttsprovider=kitten |
| eSpeak-NG | Robótico | Mínimo. Apenas CPU. | ttsprovider=espeak |
Configure em 4 etapas
- Adicione
&speech=en-US&ttsprovider=kokoroao seudock.html(link). (Oupiper,kitten,espeak.) - Adicione esse link ao OBS como Fonte de navegador. Essa é a página que produz o som.
- Nas propriedades, ative Controlar áudio pelo OBS (Control audio via OBS).
- Envie uma mensagem de teste curta no chat, como
Testing local TTS.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro
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.
- Inicie seu servidor. Kokoro-FastAPI é a opção mais fácil.
- No SSN, abra a lista de provedores de TTS e escolha Endpoint de TTS personalizado / local.
- Em Endpoint API personalizado/local, digite o endereço do servidor, como
http://127.0.0.1:8880/v1/audio/speech. - Deixe a chave de API em branco.
- Escolha uma voz reconhecida pelo servidor:
af_bellapara Kokoro,novapara openedai-speech. - Copie o link para OBS e envie uma mensagem de teste.
| Servidor | Modelo | GPU | Disco | Porta |
|---|---|---|---|---|
| Kokoro-FastAPI (recomendado) | Kokoro 82M | Opcional | ~2 GB | 8880 |
| openedai-speech (Piper) | Piper | Somente CPU | <1 GB | 8000 |
| kokoro-web | Kokoro 82M | Opcional | ~2 GB | 3000 |
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.
| Sua configuração | Use este endereço |
|---|---|
| OBS e o servidor no mesmo PC | http://127.0.0.1:8880/v1/audio/speech |
| Servidor em outro PC de casa | http://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 som | O 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.
- 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. - Abrir
http://localhost:8880/web/. Deve aparecer uma página para testar vozes (mais de 67 disponíveis). - 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
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)
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
- 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, usecp sample.env speech.env. O Docker precisa de acesso à GPU. O modelo baixa no primeiro uso. - 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
- Em
config/voice_to_speaker.yaml, adicione na seção existentetts-1-hd(mantenha as vozes que já estão lá):tts-1-hd: me: model: xtts speaker: voices/me.wav language: enAlteremepara o nome que o SSN enviará. - 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.
http://127.0.0.1:8124/v1/audio/speech, mesmo se o servidor de voz estiver em outro PC.
- 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, comohttp://192.168.x.x:8880/v1/audio/speech. - Na pasta do SSN, execute
node scripts/local-tts-bridge.cjs. Deixe em execução. - 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.
- Grave um clipe limpo de uma única pessoa falando, geralmente de 3–30 segundos, com pouco ruído de fundo.
- Alguns servidores também precisam das palavras exatas faladas no clipe.
- O servidor transforma o clipe em um perfil de voz.
- O SSN envia o texto do chat com
ttsprovider=customtts. - O servidor retorna áudio (geralmente WAV ou MP3) e o SSN o reproduz.
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ção | Clona a partir de | Cabe em uma GPU de 6 GB? | Como conectar |
|---|---|---|---|
| XTTS-v2 / openedai-speech | Clipe WAV curto | Sim, cerca de 4 GB | Direto, /v1/audio/speech. O projeto está arquivado. |
| chatterbox-tts-api / Chatterbox-TTS-Server | Clipe de referência | Provavelmente com Turbo ou trechos pequenos | Direto ou pela ponte. GPU é mais fluida que CPU. A configuração varia por fork. |
| Qwen3-TTS (0.6B / 1.7B) | Clipe de 3 segundos | Provavelmente (0.6B Base) | Precisa de um adaptador compatível com OpenAI. |
| GPT-SoVITS | 5 segundos; melhor com 1 minuto | Provavelmente com fp16 ou uma instalação leve | Ponte (Bridge) --mode gptsovits. |
| F5-TTS | Clipe e transcrição | Talvez | Um adaptador ou a ponte --mode f5 com F5-TTS_server. |
| MisoTTS 8B | Áudio de referência | Não; recomenda-se 24 GB | Apenas 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ção | Mínimo | Confortável |
|---|---|---|
| TTS do sistema / eSpeak | Qualquer PC | Qualquer PC |
| Kitten integrado | CPU simples, 4 GB de RAM | CPU de notebook, 8 GB de RAM |
| Piper integrado | CPU moderna, 4–8 GB de RAM | CPU moderna, 8 GB de RAM |
| Kokoro integrado | CPU moderna, 8 GB de RAM | GPU com WebGPU ou CPU rápida, 8–16 GB de RAM |
| Kokoro-FastAPI | CPU, 8 GB de RAM | GPU NVIDIA opcional, 8–16 GB de RAM |
| openedai-speech Piper | CPU, 4–8 GB de RAM | CPU, 8 GB de RAM |
| openedai-speech XTTS | GPU NVIDIA de cerca de 4 GB, 8–16 GB de RAM | GPU NVIDIA com 6 GB ou mais, 16 GB de RAM |
| Chatterbox | CPU em algumas versões, lenta | GPU NVIDIA com 6 GB ou mais, 16 GB de RAM |
| GPT-SoVITS / F5-TTS / Qwen3-TTS | CPU para testes, lenta | GPU NVIDIA com 6 GB ou mais, 16 GB de RAM |
| MisoTTS 8B | Não com 6 GB | GPU 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.
- Adicione uma ação Fonte de navegador com seu link
dock.htmlde TTS. - Ative Controlar áudio pelo OBS (Control audio via OBS).
- 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.
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.
&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ção | Configuração | Qualidade | Privado | Funciona no OBS | Custo |
|---|---|---|---|---|---|
| Kokoro integrado | Nenhum | 5/5 | Sim | Sim | Gratuito |
| Piper integrado | Nenhum | 4/5 | Sim | Sim | Gratuito |
| Kitten integrado | Nenhum | 3/5 | Sim | Sim | Gratuito |
| eSpeak integrado | Nenhum | 2/5 | Sim | Sim | Gratuito |
| Kokoro-FastAPI | Docker | 5/5 | Sim | Sim | Gratuito |
| openedai-speech | Docker | 4/5 | Sim | Sim | Gratuito |
| ElevenLabs | Chave de API | 5/5 | Não | Sim | Planos pagos |
| Síntese de voz do sistema | Nenhum | 2/5 | Sim | Precisa de roteamento de áudio | Gratuito |
Resolver problemas
| Problema | Tente isto |
|---|---|
| O teste do aplicativo funciona, mas OBS fica sem som | O 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 lidas | Remover 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 responde | Confira 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 encontrada | Kokoro-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 captura | Ative 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 encontrada | As 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
| Resposta | Funciona? | Notas |
|---|---|---|
| Arquivo de áudio | Sim | A melhor. audio/mpeg, audio/wav, audio/ogg, audio/aac, ou qualquer tipo reproduzível no navegador. |
| JSON com uma URL de áudio | Sim | Verificações url, audio_url, output_url, data.url, e o primeiro item de data[] . |
| JSON com áudio em base64 | Sim | Verificações audio, audio_data, audioContent, b64_json, campos aninhados como data e URLs de dados. |
| PCM bruto | Somente se encapsulado | Envie 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ção | Exemplo | O que faz |
|---|---|---|
ttsprovider | customtts | Use seu próprio servidor. (openai também funciona.) |
openaiendpoint | http://localhost:8880/v1/audio/speech | O endereço do seu servidor. Ajuste a porta para corresponder. |
speech | en-US | Ativa o TTS em inglês. |
voiceopenai | af_bella | Nome da voz. Depende do servidor. |
openaimodel | tts-1-hd | Nome do modelo. Padrão: tts-1. |
openaiformat | mp3 | mp3, wav, opus ou flac. |
openaispeed | 1.0 | Velocidade 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