Guida al TTS con IA locale

Esegui le voci della chat sul tuo computer. Alla maggior parte degli streamer bastano le voci integrate.

Mi serve?

“Locale” indica una di queste due cose: una voce integrata in SSN che funziona nel browser, oppure un server vocale che esegui tu stesso.

Voglio…Fai così
Voci gratuite senza installare nullaUsa: voci integrate. La maggior parte delle persone si ferma qui.
Usare un server vocale che ho già in esecuzioneCollega un server.
Una voce clonataConsulta clonazione vocale.
Fish Audio in OBSConsulta Configurazione Fish Audio.
Voci a pagamento nel cloudConsulta Riferimento TTS.
Funziona con qualsiasi chat acquisita da SSN. La voce appartiene al lettore di SSN, non a YouTube o Twitch. A differenza di TTS di sistema, le voci IA locali generano il proprio audio, quindi OBS può acquisirlo. Confronta fornitori e ascolta campioni.

Voci integrate (nulla da installare)

Funzionano all'interno di SSN nel browser. Non servono server, Docker o chiavi API.

VoceSuonoCarico del computerValore del link
KokoroEccellenteMedio. Più veloce con una GPU.ttsprovider=kokoro
PiperMolto buonaBasso. Solo CPU.ttsprovider=piper
KittenBuonaMolto basso. Solo CPU.ttsprovider=kitten
eSpeak-NGRoboticaMinimo. Solo CPU.ttsprovider=espeak

Configuralo in 4 passaggi

  1. Aggiungi &speech=en-US&ttsprovider=kokoro al tuo dock.html (link). (Oppure piper, kitten, espeak.)
  2. Aggiungi quel link a OBS come Sorgente browser. È quella pagina che produce l'audio.
  3. Nelle proprietà, attiva Controlla l'audio tramite OBS.
  4. Invia un breve messaggio di prova in chat, ad esempio Testing local TTS.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro
Il primo utilizzo è lento. Kokoro e Piper scaricano prima i propri modelli (circa 50–200 MB). Ai caricamenti successivi li riutilizzano, ma l'avvio richiede comunque qualche istante. OBS conserva una propria copia, separata da Chrome.

Voci, velocità e altre lingue: impostazioni del fornitore. Preferisci fare clic? Usa la guida alla configurazione.

Collega il tuo server TTS

Un server offre più voci, clonazione o una voce riutilizzabile fra strumenti. SSN comunica con esso come con un server vocale Compatibile con OpenAI . Non serve una chiave API.

  1. Avvia il tuo server. Kokoro-FastAPI è la soluzione più semplice.
  2. In SSN, apri l'elenco dei fornitori TTS e scegli Endpoint TTS personalizzato / locale.
  3. In Endpoint API personalizzato/locale, inserisci l'indirizzo del server, come http://127.0.0.1:8880/v1/audio/speech.
  4. Lascia vuota la chiave API.
  5. Scegli una voce riconosciuta dal tuo server: af_bella per Kokoro, nova per openedai-speech.
  6. Copia il link in OBS e invia un messaggio di prova.
Mappa illustrata dei campi TTS locali in Social Stream Ninja
L'endpoint è il campo che conta.
OBS è su un altro computer? Leggi la regola di localhost prima. Bloccato dal browser? Usa: bridge.
ServerModelloGPUDiscoPorta
Kokoro-FastAPI (consigliato)Kokoro 82MFacoltativo~2 GB8880
openedai-speech (Piper)PiperSolo CPU<1 GB8000
kokoro-webKokoro 82MFacoltativo~2 GB3000

Richiedono Docker Desktop installato e in esecuzione. È gratuito per uso personale.

La regola di localhost

Questo è l'errore più comune.

localhost e 127.0.0.1 indicano sempre “questo stesso computer”. Se OBS è su un PC e il server vocale su un altro, 127.0.0.1 in OBS indica il PC su cui si trova OBS.
Diagramma che mostra che localhost indica lo stesso computer, mentre un altro computer richiede un indirizzo IP LAN
La tua configurazioneUsa questo indirizzo
OBS e il server sullo stesso PChttp://127.0.0.1:8880/v1/audio/speech
Server su un altro PC di casahttp://192.168.x.x:8880/v1/audio/speech, con l'IP locale di quel PC
Il test nell'app SSN funziona, ma OBS è mutoOBS ha bisogno di un indirizzo raggiungibile dal proprio computer. Il test nell'app non dimostra che OBS possa raggiungere il server.

Controlla anche che il firewall consenta la porta e che Docker l'abbia pubblicata (-p 8880:8880).

Kokoro-FastAPI

Kokoro-FastAPI esegue Kokoro come server locale. Funziona su CPU; non serve una GPU.

  1. Apri un terminale (Prompt dei comandi, PowerShell o Terminale) ed esegui una di queste opzioni:
    docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2

    GPU NVIDIA (più veloce):

    docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.0post4
    La prima esecuzione scarica circa 1,5–2 GB, una sola volta.
  2. Apri http://localhost:8880/web/. Dovrebbe apparire una pagina per provare le voci (oltre 67 disponibili).
  3. Usa questo link (cambia l'indirizzo se il server è su un altro PC):
    dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8880/v1/audio/speech&voiceopenai=af_bella
Usa i nomi delle voci Kokoro, come af_bella, af_sarah, am_adam oppure bf_emma. I nomi OpenAI come nova oppure alloy potrebbero non funzionare.

Avvialo automaticamente con 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)

Progetto archiviato. openedai-speech è stato archiviato a gennaio 2026 e si definisce in gran parte obsoleto. Funziona ancora come esempio, ma non riceve aggiornamenti. Mantienilo in locale. Non esporre mai la sua porta a Internet: non prevede l'accesso con credenziali.

Opzione A: server Piper leggero (CPU)

Meno di 1 GB. Nessuna clonazione vocale.

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

Voci: 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
Esecuzione dal codice sorgente su Windows (errori HTTP 500)

Aggiungi la cartella Scripts del suo ambiente virtuale a PATH prima. Altrimenti non riesce a trovare piper.exe oppure 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

Opzione B: clonazione vocale con XTTS-v2 (GPU)

Richiede il server completo, non openedai-speech-min. Prevedi circa 4 GB di memoria GPU. La CPU funziona, ma è lenta.

Configura XTTS-v2 in 4 passaggi
  1. Scarica il server e avvialo:
    git clone https://github.com/matatonic/openedai-speech.git
    cd openedai-speech
    Copy-Item sample.env speech.env
    docker compose up -d
    Su macOS o Linux, usa cp sample.env speech.env. Docker richiede accesso alla GPU. Il modello si scarica al primo utilizzo.
  2. Crea una registrazione di riferimento pulita di una voce che hai il permesso di usare. Mono, 22050 Hz, 6–30 secondi:
    ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
  3. In config/voice_to_speaker.yaml, aggiungilo nella sezione esistente tts-1-hd (mantieni le voci già presenti):
    tts-1-hd:
      me:
        model: xtts
        speaker: voices/me.wav
        language: en
    Modifica me con il nome che SSN invierà.
  4. Esegui docker compose restart, poi usa:
    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 è obbligatorio. Senza questo parametro SSN invia tts-1, e il server usa Piper al suo posto. voiceopenai deve corrispondere al nome della tua voce nel file YAML.

Bloccato dal browser? Esegui il bridge e cambia solo openaiendpoint a http://127.0.0.1:8124/v1/audio/speech.

Il bridge TTS locale

Un piccolo helper SSN. Riceve la richiesta SSN, la passa al server vocale e restituisce l'audio in una forma accettata dai browser. Richiede Node.js.

Regola più semplice: esegui il bridge sul computer di OBS. Così OBS usa sempre http://127.0.0.1:8124/v1/audio/speech, anche se il server vocale è su un altro PC.
Diagramma che mostra OBS mentre chiama il bridge locale e il bridge mentre chiama il server TTS
  1. Indica al bridge dove si trova il tuo server. PowerShell:
    $env:SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech"
    Il server è su un altro PC? Usa il suo IP locale, ad esempio http://192.168.x.x:8880/v1/audio/speech.
  2. Nella cartella SSN, esegui node scripts/local-tts-bridge.cjs. Lascialo in esecuzione.
  3. Collega SSN al bridge:
    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, in una sola riga: SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" node scripts/local-tts-bridge.cjs. Nella cartella local-tts-bridge , node server.cjs fa la stessa cosa. Cambia la porta con SSN_TTS_BRIDGE_PORT=8125. Tutte le opzioni: README del bridge.

Modalità GPT-SoVITS

GPT-SoVITS usa la propria struttura JSON per /tts . Il bridge adatta le richieste a questo 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
Modalità server F5-TTS

Alcuni adattatori F5-TTS usano /synthesize_speech/?text=...&voice=.... Il bridge adatta le richieste.

$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

Clonazione vocale

La clonazione non è un'impostazione SSN, ma una funzione di alcuni server vocali. SSN invia il testo della chat; il server sceglie la voce clonata.

  1. Registra un campione pulito di una sola persona che parla, di solito di 3–30 secondi, con poco rumore di fondo.
  2. Alcuni server richiedono anche le parole esatte pronunciate nella registrazione.
  3. Il server trasforma la registrazione in un profilo vocale.
  4. SSN invia il testo della chat con ttsprovider=customtts.
  5. Il server restituisce l'audio (di solito WAV o MP3) e SSN lo riproduce.
Clona solo voci tue o che hai il permesso di usare.
XTTS-v2 è non commerciale per impostazione predefinita. La sua Coqui Public Model License consente solo l'uso non commerciale. Una diretta monetizzata potrebbe non rientrare in questa categoria. Controlla prima la licenza o ottieni il permesso.

Con 6 GB di memoria GPU o meno, inizia con modelli piccoli su server compatibili con OpenAI. Anche i modelli più grandi funzionano se ospitati altrove.

OpzioneClona daBastano 6 GB di memoria GPU?Come connettersi
XTTS-v2 / openedai-speechBreve registrazione WAVSì, circa 4 GBDiretto, /v1/audio/speech. Il progetto è archiviato.
chatterbox-tts-api / Chatterbox-TTS-ServerRegistrazione di riferimentoProbabilmente con Turbo o segmenti breviDiretto o tramite bridge. La GPU è più fluida della CPU. La configurazione varia per fork.
Qwen3-TTS (0.6B / 1.7B)Clip di 3 secondiProbabilmente (0.6B Base)Richiede un adattatore compatibile con OpenAI.
GPT-SoVITS5 secondi; meglio con 1 minutoProbabilmente con fp16 o un'installazione leggeraBridge --mode gptsovits.
F5-TTSClip e trascrizioneForseUn adattatore o il bridge --mode f5 con F5-TTS_server.
MisoTTS 8BAudio di riferimentoNo; consigliati 24 GBSolo hosting remoto. Il repository non include un endpoint REST locale.

Kokoro integrato e Kokoro-FastAPI non clonano voci.

Cosa è stato provato con SSN

Verificato con dock.html e featured.html:

  • openedai-speech (Piper): voce reale su CPU, diretta e tramite bridge.
  • Chatterbox-TTS-Server: voce reale su CPU con Emily.wav, direttamente e tramite il bridge.
  • chatterbox-tts-api: formato richiesta testato, diretto e tramite bridge.
  • GPT-SoVITS e F5-TTS_server: solo tramite le modalità del bridge.
  • F5-TTS ufficiale e Qwen3-TTS: richiedono prima un adattatore (solo CLI, Gradio o libreria).

Quale computer mi serve?

Sono indicazioni di partenza, non garanzie. Le dimensioni del modello, la lunghezza del testo e le altre app influiscono sull'uso della memoria.

OpzioneMinimoComodo
Sintesi vocale di sistema / eSpeakQualsiasi PCQualsiasi PC
Kitten integratoCPU di fascia bassa, 4 GB di RAMCPU da portatile, 8 GB di RAM
Piper integratoCPU moderna, 4–8 GB di RAMCPU moderna, 8 GB di RAM
Kokoro integratoCPU moderna, 8 GB di RAMGPU con WebGPU o CPU veloce, 8–16 GB di RAM
Kokoro-FastAPICPU, 8 GB di RAMGPU NVIDIA facoltativa, 8–16 GB di RAM
openedai-speech PiperCPU, 4–8 GB di RAMCPU, 8 GB di RAM
openedai-speech XTTSGPU NVIDIA da circa 4 GB, 8–16 GB di RAMGPU NVIDIA da almeno 6 GB, 16 GB di RAM
ChatterboxCPU in alcune versioni, lentaGPU NVIDIA da almeno 6 GB, 16 GB di RAM
GPT-SoVITS / F5-TTS / Qwen3-TTSCPU per test, lentaGPU NVIDIA da almeno 6 GB, 16 GB di RAM
MisoTTS 8BNon con 6 GBGPU da 24 GB o host remoto

Porta l'audio in OBS

Sorgente browser di OBS (consigliata)

Funziona con le voci integrate e con il tuo server.

  1. Aggiungi un Sorgente browser con il tuo link dock.html TTS.
  2. Attiva Controlla l'audio tramite OBS.
  3. Fai clic su OK. Il TTS ora appare nel mixer OBS.

App desktop SSN

L'app desktop usa gli stessi parametri del link. L'audio però viene riprodotto dall'app, non da OBS. Acquisiscilo con Audio desktop oppure Acquisizione ingresso audio. Per separare il TTS dagli altri suoni, invia l'app a un cavo virtuale: passaggi per instradare l'audio.

Non confondere il test dell'app con OBS. Premere Test nell'app esegue il test dall'app. Con un link in OBS, è OBS che deve raggiungere il server e riprodurre l'audio.
Altri dettagli sull'app desktop

Le finestre dell'app sono meno rigide di Chrome sui permessi del browser (CORS). Il bridge resta la scelta più sicura per server che rifiutano richieste dal browser. Per Kokoro integrato, l'app può usare il proprio percorso ninjafy.tts invece di caricare il modello nel browser.

TTS di sistema (&speech=en-US senza fornitore) dipende dalle voci disponibili in OBS. Spesso non ce ne sono, oppure non producono audio acquisibile. Usa uno dei fornitori indicati sopra.

Confronto

OpzioneConfigurazioneQualitàPrivatoFunziona in OBSCosto
Kokoro integratoNessuno5/5SìSìGratuito
Piper integratoNessuno4/5SìSìGratuito
Kitten integratoNessuno3/5SìSìGratuito
eSpeak integratoNessuno2/5SìSìGratuito
Kokoro-FastAPIDocker5/5SìSìGratuito
openedai-speechDocker4/5SìSìGratuito
ElevenLabsChiave API5/5NoSìPiani a pagamento
TTS di sistemaNessuno2/5SìRichiede l'instradamento dell'audioGratuito

Risolvere i problemi

Lista illustrata dei controlli per risolvere i problemi del TTS locale
Funziona in un posto ma non in un altro? Controlla in ordine: computer, indirizzo, voce, permessi del browser e audio di OBS.
ProblemaProva così
Il test dell'app funziona, ma OBS è silenziosoOBS deve poter raggiungere il server direttamente. Il server è su un altro PC? Sostituisci 127.0.0.1 con il suo IP locale. Seleziona Controlla l'audio tramite OBS. Ancora bloccato? Esegui il bridge sul PC OBS.
Vengono lette solo la prima lettera o le prime paroleRimuovi ttsquick dal link di OBS (ad esempio &ttsquick=14) e aggiorna. Durante i test, rimuovi anche typewriter= per escludere problemi di temporizzazione.
Il server non rispondeVerifica che Docker e il container siano attivi. Sul PC server, apri http://127.0.0.1:8880/web/ (Kokoro-FastAPI, o la porta del server). Dal PC OBS, apri http://SERVER_LAN_IP:8880/web/. Se fallisce, anche OBS non può raggiungerlo. Controlla il firewall del server.
“Blocked by CORS”, “private network” o “failed fetch”Il browser ha bloccato la richiesta prima che arrivasse al server. Esegui node scripts/local-tts-bridge.cjs sul PC di OBS e usa http://127.0.0.1:8124/v1/audio/speech. La pagina ospitata del dock beta rischia maggiormente il blocco; il bridge o una finestra locale dell'app è più semplice.
Voce errata o non trovataKokoro-FastAPI: af_bella, af_sarah, am_adam, o una dalla sua pagina web. openedai-speech: nova, echo, alloy. Alcuni server distinguono maiuscole e minuscole.
L'audio viene riprodotto, ma OBS non lo acquisisceAttiva Controlla l'audio tramite OBS. Osserva il misuratore del mixer OBS durante il test. Assicurati di impostare &ttsprovider=; il TTS di sistema può richiedere audio desktop o un cavo virtuale.
Immagine Docker non trovataI tag delle immagini cambiano. Controlla il tag attuale su Kokoro-FastAPI oppure openedai-speech.

Per chi sviluppa server

Come SSN comunica con un server personalizzato. Ti serve solo se ne stai sviluppando uno o risolvendo i problemi.

chat text -> SSN -> your endpoint (or the bridge) -> TTS server -> audio -> SSN plays it
Cosa invia SSN

Con ttsprovider=customtts, localtts oppure openai, SSN invia un POST JSON:

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

Senza una chiave API configurata, SSN non invia l'header Authorization.

Cosa può riprodurre SSN
RispostaFunziona?Note
File audioSìLa migliore. audio/mpeg, audio/wav, audio/ogg, audio/aac, o qualsiasi tipo riproducibile dal browser.
JSON con un URL audioSìControlli url, audio_url, output_url, data.url, e il primo elemento di data[] .
JSON con audio base64SìControlli audio, audio_data, audioContent, b64_json, campi annidati come data e URL dati.
PCM grezzoSolo se incapsulatoInvialo come file WAV o WAV in base64.

Formati: mp3 occupa poco spazio ed è ampiamente supportato. wav è adatto ai server di clonazione e ai test del bridge. Usa opus solo se sia il server sia il browser lo supportano.

La riproduzione in streaming non è ancora disponibile. SSN attende la risposta completa, poi la riproduce. Mantieni brevi i messaggi della chat.

Parametri del link per il tuo server
ImpostazioneEsempioCosa fa
ttsprovidercustomttsUsa il tuo server. (openai funziona anche.)
openaiendpointhttp://localhost:8880/v1/audio/speechL'indirizzo del tuo server. Imposta la porta corrispondente.
speechen-USAttiva il TTS in inglese.
voiceopenaiaf_bellaNome della voce. Dipende dal server.
openaimodeltts-1-hdNome del modello. Predefinito: tts-1.
openaiformatmp3mp3, wav, opus o flac.
openaispeed1.0Velocità del parlato (0.5–2.0).

Accettato anche: customttsendpoint, localttsendpoint, customttsvoice, localttsvoice, customttsmodel, localttsmodel, customttsformat, localttsformat. Le opzioni di lettura come simpletts, skipmessages e ttsquick funzionano con qualsiasi fornitore: tutti i parametri del link.

Link di esempio:

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