Guide de synthèse vocale IA locale

Faites fonctionner les voix du chat sur votre propre ordinateur. Les voix intégrées suffisent à la plupart des streamers.

En ai-je besoin ?

« Local » désigne l'une de ces deux choses : une voix intégrée à SSN qui fonctionne dans votre navigateur, ou un serveur vocal que vous faites fonctionner vous-même.

Je veux…Procédez ainsi
Des voix gratuites sans rien installerUtilisez : voix intégrées. La plupart des utilisateurs s'arrêtent là.
Utiliser un serveur vocal que je fais déjà fonctionnerConnecter un serveur.
Une voix clonéeVoir clonage vocal.
Fish Audio dans OBSConsultez : Configuration Fish Audio.
Voix cloud payantesConsultez : Référence TTS.
Cela fonctionne avec tous les chats capturés par SSN. La voix appartient au lecteur de SSN, pas à YouTube ni à Twitch. Contrairement à Synthèse vocale système, les voix IA locales produisent leur propre audio, qu'OBS peut capturer. Comparer les fournisseurs et écouter des exemples.

Voix intégrées (rien à installer)

Ces voix fonctionnent dans SSN, dans votre navigateur. Sans serveur, Docker ni clé API.

VoixSonCharge de l'ordinateurValeur du lien
KokoroExcellentMoyen. Plus rapide avec une carte graphique.ttsprovider=kokoro
PiperTrès bonneFaible. Processeur uniquement.ttsprovider=piper
KittenBonneTrès faible. Processeur uniquement.ttsprovider=kitten
eSpeak-NGRobotiqueMinimal. Processeur uniquement.ttsprovider=espeak

Configurer en 4 étapes

  1. Ajouter &speech=en-US&ttsprovider=kokoro à votre dock.html (lien). (Ou piper, kitten, espeak.)
  2. Ajoutez ce lien dans OBS comme Source navigateur. C'est cette page qui produit le son.
  3. Dans ses propriétés, activez Contrôler l’audio via OBS.
  4. Envoyez un court message de test dans le chat, par exemple Testing local TTS.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro
Le premier usage est lent. Kokoro et Piper téléchargent d'abord leurs modèles (environ 50 à 200 Mo). Les chargements suivants les réutilisent, mais le démarrage prend encore un moment. OBS conserve sa propre copie, distincte de celle de Chrome.

Voix, vitesse et autres langues : paramètres du fournisseur. Vous préférez cliquer ? Utilisez le guide de configuration.

Connecter votre serveur TTS

Un serveur offre plus de voix, le clonage ou une voix réutilisable entre outils. SSN lui parle comme à un serveur vocal Compatible OpenAI . Aucune clé API nécessaire.

  1. Démarrez votre serveur. Kokoro-FastAPI est le plus simple.
  2. Dans SSN, ouvrez la liste des fournisseurs TTS et choisissez Point de terminaison de synthèse vocale personnalisé / local.
  3. Dans Adresse API personnalisée/locale, saisissez l'adresse du serveur, comme http://127.0.0.1:8880/v1/audio/speech.
  4. Laissez la clé API vide.
  5. Choisissez une voix reconnue par votre serveur : af_bella pour Kokoro, nova pour openedai-speech.
  6. Copiez le lien dans OBS et envoyez un message de test.
Schéma illustré des champs de synthèse vocale locale dans Social Stream Ninja
Le point d'accès est le champ essentiel.
OBS est sur un autre ordinateur ? Consultez la règle de localhost d’abord. Bloqué par le navigateur ? Utilisez : pont.
ServeurModèleGPUDisquePort
Kokoro-FastAPI (recommandé)Kokoro 82MFacultatifEnviron 2 Go8880
openedai-speech (Piper)PiperProcesseur uniquement< 1 Go8000
kokoro-webKokoro 82MFacultatifEnviron 2 Go3000

Ils nécessitent Docker Desktop installé et en cours d'exécution. Il est gratuit pour un usage personnel.

La règle de localhost

C'est l'erreur la plus courante.

localhost et 127.0.0.1 désignent toujours « ce même ordinateur ». Si OBS et le serveur vocal sont sur deux ordinateurs différents, 127.0.0.1 dans OBS désigne l'ordinateur qui exécute OBS.
Schéma montrant que localhost désigne le même ordinateur, tandis qu'un autre ordinateur nécessite une adresse IP du réseau local
Votre configurationUtilisez cette adresse
OBS et le serveur sur le même ordinateurhttp://127.0.0.1:8880/v1/audio/speech
Serveur sur un autre ordinateur du domicilehttp://192.168.x.x:8880/v1/audio/speech, avec l'IP locale de ce PC
Le test dans l'application SSN fonctionne, mais OBS reste silencieuxOBS a besoin d'une adresse accessible depuis son ordinateur. Le test dans l'application ne prouve pas qu'OBS peut joindre le serveur.

Vérifiez aussi que le pare-feu autorise le port et que Docker l'a publié (-p 8880:8880).

Kokoro-FastAPI

Kokoro-FastAPI exécute Kokoro comme serveur local. Fonctionne sur processeur ; aucune carte graphique nécessaire.

  1. Ouvrez un terminal (Invite de commandes, PowerShell ou Terminal) et exécutez l'une de ces commandes :
    docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2

    Carte graphique NVIDIA (plus rapide) :

    docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.0post4
    La première exécution télécharge environ 1,5 à 2 Go, une seule fois.
  2. Ouvrir http://localhost:8880/web/. Une page de test des voix devrait s'afficher (plus de 67 disponibles).
  3. Utilisez ce lien (changez l'adresse si le serveur est sur un autre ordinateur) :
    dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8880/v1/audio/speech&voiceopenai=af_bella
Utilisez les noms des voix Kokoro, comme af_bella, af_sarah, am_adam ou bf_emma. Les noms OpenAI comme nova ou alloy peuvent ne pas fonctionner.

Démarrez-le automatiquement avec Docker :

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

openedai-speech (Piper et XTTS-v2)

Projet archivé. openedai-speech a été archivé en janvier 2026 et se présente comme largement obsolète. Il reste utilisable comme exemple, mais ne reçoit plus de mises à jour. Gardez-le en local. N'exposez jamais son port à Internet ; il n'a pas d'authentification.

Option A : serveur Piper léger (processeur)

Moins de 1 Go. Sans clonage vocal.

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

Voix : 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
Exécution depuis le code source sous Windows (erreurs HTTP 500)

Ajoutez le dossier Scripts de son environnement virtuel à PATH d'abord. Sinon, il ne trouve pas 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

Option B : clonage vocal XTTS-v2 (carte graphique)

Nécessite le serveur complet, pas openedai-speech-min. Prévoyez environ 4 Go de mémoire GPU. Le processeur fonctionne, mais lentement.

Configurer XTTS-v2 en 4 étapes
  1. Téléchargez le serveur et démarrez-le :
    git clone https://github.com/matatonic/openedai-speech.git
    cd openedai-speech
    Copy-Item sample.env speech.env
    docker compose up -d
    Sous macOS ou Linux, utilisez cp sample.env speech.env. Docker nécessite l'accès au GPU. Le modèle se télécharge au premier usage.
  2. Créez un extrait de référence propre d'une voix que vous avez le droit d'utiliser. Mono, 22050 Hz, 6 à 30 secondes :
    ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
  3. Dans config/voice_to_speaker.yaml, ajoutez-le dans la section existante tts-1-hd (conservez les voix déjà présentes) :
    tts-1-hd:
      me:
        model: xtts
        speaker: voices/me.wav
        language: en
    Modifiez me pour le nom que SSN enverra.
  4. Exécutez docker compose restart, puis utilisez :
    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 est obligatoire. Sans ce paramètre, SSN envoie tts-1, et le serveur utilise Piper à la place. voiceopenai doit correspondre au nom de votre voix dans le fichier YAML.

Bloqué par le navigateur ? Lancez le pont et changez uniquement openaiendpoint à http://127.0.0.1:8124/v1/audio/speech.

Le pont TTS local

Un petit utilitaire SSN. Il reçoit la requête SSN, la transmet au serveur vocal et renvoie l'audio sous une forme acceptée par les navigateurs. Node.js requis.

Règle la plus simple : exécutez le pont sur l'ordinateur d'OBS. Ainsi, OBS utilise toujours http://127.0.0.1:8124/v1/audio/speech, même si le serveur vocal est sur un autre PC.
Schéma montrant OBS appelant la passerelle locale, puis la passerelle appelant le serveur de synthèse vocale
  1. Indiquez au pont où se trouve votre serveur. PowerShell :
    $env:SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech"
    Le serveur est sur un autre ordinateur ? Utilisez son adresse IP locale, par exemple http://192.168.x.x:8880/v1/audio/speech.
  2. Dans le dossier SSN, exécutez node scripts/local-tts-bridge.cjs. Laissez-le fonctionner.
  3. Connectez SSN au pont :
    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, en une seule ligne : SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" node scripts/local-tts-bridge.cjs. Dans le dossier local-tts-bridge , node server.cjs fait la même chose. Changez le port avec SSN_TTS_BRIDGE_PORT=8125. Toutes les options : README de la passerelle.

Mode GPT-SoVITS

GPT-SoVITS utilise sa propre structure JSON pour /tts . Le pont adapte les requêtes à ce format.

$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
Mode serveur F5-TTS

Certains adaptateurs F5-TTS utilisent /synthesize_speech/?text=...&voice=.... Le pont adapte les requêtes.

$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

Clonage vocal

Le clonage n'est pas un réglage SSN, mais une fonction de certains serveurs vocaux. SSN envoie le texte du chat ; le serveur choisit la voix clonée.

  1. Enregistrez un extrait propre d'une seule personne, généralement de 3 à 30 secondes, avec peu de bruit de fond.
  2. Certains serveurs ont aussi besoin des mots exacts prononcés dans l'extrait.
  3. Le serveur transforme l'extrait en profil vocal.
  4. SSN envoie le texte du chat avec ttsprovider=customtts.
  5. Le serveur renvoie de l'audio (généralement WAV ou MP3) et SSN le lit.
Ne clonez que votre propre voix ou des voix que vous avez le droit d'utiliser.
XTTS-v2 est non commercial par défaut. Sa licence La Coqui Public Model License autorise uniquement un usage non commercial. Un stream monétisé peut ne pas remplir cette condition. Vérifiez d'abord la licence ou obtenez une autorisation.

Avec 6 Go de mémoire graphique ou moins, commencez par de petits modèles sur des serveurs compatibles avec OpenAI. Les modèles plus volumineux fonctionnent aussi s'ils sont hébergés ailleurs.

OptionClone à partir deTient dans une carte graphique de 6 Go ?Comment se connecter
XTTS-v2 / openedai-speechCourt extrait WAVOui, environ 4 GoDirect, /v1/audio/speech. Le projet est archivé.
chatterbox-tts-api / Chatterbox-TTS-ServerExtrait de référenceProbablement avec Turbo ou de petits segmentsDirect ou via le pont. Le GPU est plus fluide que le processeur. La configuration varie selon le fork.
Qwen3-TTS (0.6B / 1.7B)Extrait de 3 secondesProbablement (0.6B Base)Nécessite un adaptateur compatible avec OpenAI.
GPT-SoVITS5 secondes ; mieux avec 1 minuteProbablement avec fp16 ou une installation légèrePasserelle (Bridge) --mode gptsovits.
F5-TTSExtrait et transcriptionPeut-êtreUn adaptateur ou le pont --mode f5 avec F5-TTS_server.
MisoTTS 8BAudio de référenceNon ; 24 Go recommandésHébergement distant uniquement. Aucun point d'accès REST local dans le dépôt.

Kokoro intégré et Kokoro-FastAPI ne clonent pas les voix.

Ce qui a été testé avec SSN

Vérifié avec dock.html et featured.html:

  • openedai-speech (Piper) : parole réelle sur processeur, directe et via le pont.
  • Chatterbox-TTS-Server: parole réelle sur processeur avec Emily.wav, directement et via la passerelle.
  • chatterbox-tts-api: format de requête testé, direct et via le pont.
  • GPT-SoVITS et F5-TTS_server: via les modes du pont uniquement.
  • F5-TTS officiel et Qwen3-TTS: nécessitent d'abord un adaptateur (CLI, Gradio ou bibliothèque uniquement).

Quel ordinateur me faut-il ?

Ces indications donnent un point de départ, pas une garantie. La taille du modèle, la longueur du texte et les autres applications influent sur l'utilisation de la mémoire.

OptionMinimumConfortable
Synthèse vocale du système / eSpeakN'importe quel PCN'importe quel PC
Kitten intégréProcesseur d'entrée de gamme, 4 Go de RAMProcesseur de portable, 8 Go de RAM
Piper intégréProcesseur récent, 4 à 8 Go de RAMProcesseur moderne, 8 Go de RAM
Kokoro intégréProcesseur moderne, 8 Go de RAMCarte graphique WebGPU ou processeur rapide, 8 à 16 Go de RAM
Kokoro-FastAPIProcesseur, 8 Go de RAMCarte graphique NVIDIA facultative, 8 à 16 Go de RAM
openedai-speech PiperProcesseur, 4–8 Go de RAMProcesseur, 8 Go de RAM
openedai-speech XTTSCarte graphique NVIDIA d'environ 4 Go, 8 à 16 Go de RAMGPU NVIDIA de 6 Go ou plus, 16 Go de RAM
ChatterboxProcesseur sur certaines versions, lentGPU NVIDIA de 6 Go ou plus, 16 Go de RAM
GPT-SoVITS / F5-TTS / Qwen3-TTSProcesseur pour tester, lentGPU NVIDIA de 6 Go ou plus, 16 Go de RAM
MisoTTS 8BPas avec 6 GoGPU de 24 Go ou hôte distant

Faire parvenir le son à OBS

Source navigateur OBS (recommandée)

Fonctionne avec les voix intégrées et votre propre serveur.

  1. Ajoutez un Source navigateur avec votre lien dock.html de TTS.
  2. Activez Contrôler l’audio via OBS.
  3. Cliquez sur OK. Le TTS apparaît maintenant dans le mixeur OBS.

Application de bureau SSN

L'application de bureau utilise les mêmes paramètres de lien. Mais le son est lu par l'application, pas par OBS. Capturez-le avec Audio du bureau ou Capture d'entrée audio. Pour séparer le TTS des autres sons, dirigez l'application vers un câble virtuel : étapes du routage audio.

Ne confondez pas le test de l'application et OBS. Le bouton Test dans l'application effectue le test depuis l'application. Avec un lien dans OBS, c'est OBS qui doit joindre le serveur et lire l'audio.
Plus de détails sur l'application de bureau

Les fenêtres de l'application sont moins strictes que Chrome concernant les permissions navigateur (CORS). Le pont reste le choix le plus sûr pour les serveurs refusant les requêtes du navigateur. Pour Kokoro intégré, l'application peut utiliser sa propre route ninjafy.tts au lieu de charger le modèle dans le navigateur.

Synthèse vocale système (&speech=en-US sans fournisseur) dépend des voix disponibles dans OBS. Souvent, il n'y en a aucune, ou elles ne produisent aucun son capturable. Utilisez plutôt un fournisseur ci-dessus.

Comparatif

OptionConfigurationQualitéPrivéFonctionne dans OBSCoût
Kokoro intégréAucun5/5OuiOuiGratuit
Piper intégréAucun4/5OuiOuiGratuit
Kitten intégréAucun3/5OuiOuiGratuit
eSpeak intégréAucun2/5OuiOuiGratuit
Kokoro-FastAPIDocker5/5OuiOuiGratuit
openedai-speechDocker4/5OuiOuiGratuit
ElevenLabsClé API (API key)5/5NonOuiOffres payantes
Synthèse vocale systèmeAucun2/5OuiNécessite un routage audioGratuit

Résoudre les problèmes

Liste de vérifications illustrée pour dépanner la synthèse vocale locale
Cela fonctionne à un endroit, mais pas à un autre ? Vérifiez dans cet ordre : ordinateur, adresse, voix, autorisations du navigateur, audio d'OBS.
ProblèmeÀ essayer
Le test de l'application fonctionne, mais OBS reste muetOBS doit pouvoir joindre lui-même le serveur. Le serveur est sur un autre ordinateur ? Remplacez 127.0.0.1 par son adresse IP locale. Cochez Contrôler l’audio via OBS. Toujours bloqué ? Exécutez le pont sur le PC OBS.
Seules la première lettre ou les premiers mots sont lusSupprimer ttsquick du lien OBS (par exemple &ttsquick=14) et actualisez. Pendant les tests, retirez aussi typewriter= pour écarter les problèmes de synchronisation.
Le serveur ne répond pasVérifiez que Docker et le conteneur fonctionnent. Sur le PC serveur, ouvrez http://127.0.0.1:8880/web/ (Kokoro-FastAPI ou le port de votre serveur). Depuis le PC OBS, ouvrez http://SERVER_LAN_IP:8880/web/. Si cela échoue, OBS ne peut pas y accéder non plus. Vérifiez le pare-feu du serveur.
« Blocked by CORS », « private network » ou « failed fetch »Le navigateur a bloqué la requête avant qu'elle n'atteigne le serveur. Exécutez node scripts/local-tts-bridge.cjs sur l'ordinateur d'OBS et utilisez http://127.0.0.1:8124/v1/audio/speech. La page hébergée du dock bêta risque davantage d'être bloquée ; le pont ou une fenêtre locale de l'application est plus simple.
Voix incorrecte ou introuvableKokoro-FastAPI : af_bella, af_sarah, am_adam, ou une voix de sa page web. openedai-speech : nova, echo, alloy. Certains serveurs distinguent majuscules et minuscules.
Le son est lu, mais OBS ne le capture pasActivez Contrôler l’audio via OBS. Surveillez le vumètre OBS pendant le test. Assurez-vous de définir &ttsprovider= ; le TTS système peut nécessiter l'audio du bureau ou un câble virtuel.
Image Docker introuvableLes tags des images changent. Consultez le tag actuel sur Kokoro-FastAPI ou openedai-speech.

Pour les développeurs de serveurs

Comment SSN communique avec un serveur personnalisé. Cette section ne vous concerne que si vous en développez ou en déboguez un.

chat text -> SSN -> your endpoint (or the bridge) -> TTS server -> audio -> SSN plays it
Ce que SSN envoie

Avec ttsprovider=customtts, localtts ou openai, SSN envoie un POST JSON :

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

Sans clé API configurée, SSN n'envoie pas d'en-tête Authorization.

Ce que SSN peut lire
RéponseFonctionne ?Remarques
Fichier audioOuiLa meilleure. audio/mpeg, audio/wav, audio/ogg, audio/aac, ou tout type lisible par le navigateur.
JSON contenant une URL audioOuiVérifications url, audio_url, output_url, data.url, et le premier élément de data[] .
JSON avec audio en base64OuiVérifications audio, audio_data, audioContent, b64_json, des champs imbriqués tels que data et des URL de données.
PCM brutUniquement s'il est encapsuléEnvoyez-le sous forme de fichier WAV ou de WAV encodé en base64.

Formats : mp3 est compact et largement pris en charge. wav convient aux serveurs de clonage et aux tests du pont. Utilisez opus uniquement si le serveur et le navigateur le prennent tous les deux en charge.

Pas encore de lecture en continu. SSN attend la réponse complète, puis la lit. Privilégiez des messages de chat courts.

Paramètres du lien pour votre propre serveur
ParamètreExempleFonction
ttsprovidercustomttsUtilise votre propre serveur. (openai fonctionne aussi.)
openaiendpointhttp://localhost:8880/v1/audio/speechL'adresse de votre serveur. Adaptez le port.
speechen-USActive le TTS en anglais.
voiceopenaiaf_bellaNom de la voix. Dépend du serveur.
openaimodeltts-1-hdNom du modèle. Par défaut : tts-1.
openaiformatmp3mp3, wav, opus ou flac.
openaispeed1.0Débit de parole (0.5–2.0).

Également accepté : customttsendpoint, localttsendpoint, customttsvoice, localttsvoice, customttsmodel, localttsmodel, customttsformat, localttsformat. Les options de lecture comme simpletts, skipmessages et ttsquick fonctionnent avec tous les fournisseurs : tous les paramètres du lien.

Exemples de liens :

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