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 installer | Utilisez : voix intégrées. La plupart des utilisateurs s'arrêtent là. |
| Utiliser un serveur vocal que je fais déjà fonctionner | Connecter un serveur. |
| Une voix clonée | Voir clonage vocal. |
| Fish Audio dans OBS | Consultez : Configuration Fish Audio. |
| Voix cloud payantes | Consultez : Référence TTS. |
Voix intégrées (rien à installer)
Ces voix fonctionnent dans SSN, dans votre navigateur. Sans serveur, Docker ni clé API.
| Voix | Son | Charge de l'ordinateur | Valeur du lien |
|---|---|---|---|
| Kokoro | Excellent | Moyen. Plus rapide avec une carte graphique. | ttsprovider=kokoro |
| Piper | Très bonne | Faible. Processeur uniquement. | ttsprovider=piper |
| Kitten | Bonne | Très faible. Processeur uniquement. | ttsprovider=kitten |
| eSpeak-NG | Robotique | Minimal. Processeur uniquement. | ttsprovider=espeak |
Configurer en 4 étapes
- Ajouter
&speech=en-US&ttsprovider=kokoroà votredock.html(lien). (Oupiper,kitten,espeak.) - Ajoutez ce lien dans OBS comme Source navigateur. C'est cette page qui produit le son.
- Dans ses propriétés, activez Contrôler l’audio via OBS.
- Envoyez un court message de test dans le chat, par exemple
Testing local TTS.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro
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.
- Démarrez votre serveur. Kokoro-FastAPI est le plus simple.
- Dans SSN, ouvrez la liste des fournisseurs TTS et choisissez Point de terminaison de synthèse vocale personnalisé / local.
- Dans Adresse API personnalisée/locale, saisissez l'adresse du serveur, comme
http://127.0.0.1:8880/v1/audio/speech. - Laissez la clé API vide.
- Choisissez une voix reconnue par votre serveur :
af_bellapour Kokoro,novapour openedai-speech. - Copiez le lien dans OBS et envoyez un message de test.
| Serveur | Modèle | GPU | Disque | Port |
|---|---|---|---|---|
| Kokoro-FastAPI (recommandé) | Kokoro 82M | Facultatif | Environ 2 Go | 8880 |
| openedai-speech (Piper) | Piper | Processeur uniquement | < 1 Go | 8000 |
| kokoro-web | Kokoro 82M | Facultatif | Environ 2 Go | 3000 |
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.
| Votre configuration | Utilisez cette adresse |
|---|---|
| OBS et le serveur sur le même ordinateur | http://127.0.0.1:8880/v1/audio/speech |
| Serveur sur un autre ordinateur du domicile | http://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 silencieux | OBS 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.
- 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. - Ouvrir
http://localhost:8880/web/. Une page de test des voix devrait s'afficher (plus de 67 disponibles). - 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
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)
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
- 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, utilisezcp sample.env speech.env. Docker nécessite l'accès au GPU. Le modèle se télécharge au premier usage. - 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
- Dans
config/voice_to_speaker.yaml, ajoutez-le dans la section existantetts-1-hd(conservez les voix déjà présentes) :tts-1-hd: me: model: xtts speaker: voices/me.wav language: enModifiezmepour le nom que SSN enverra. - 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.
http://127.0.0.1:8124/v1/audio/speech, même si le serveur vocal est sur un autre PC.
- 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 exemplehttp://192.168.x.x:8880/v1/audio/speech. - Dans le dossier SSN, exécutez
node scripts/local-tts-bridge.cjs. Laissez-le fonctionner. - 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.
- Enregistrez un extrait propre d'une seule personne, généralement de 3 à 30 secondes, avec peu de bruit de fond.
- Certains serveurs ont aussi besoin des mots exacts prononcés dans l'extrait.
- Le serveur transforme l'extrait en profil vocal.
- SSN envoie le texte du chat avec
ttsprovider=customtts. - Le serveur renvoie de l'audio (généralement WAV ou MP3) et SSN le lit.
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.
| Option | Clone à partir de | Tient dans une carte graphique de 6 Go ? | Comment se connecter |
|---|---|---|---|
| XTTS-v2 / openedai-speech | Court extrait WAV | Oui, environ 4 Go | Direct, /v1/audio/speech. Le projet est archivé. |
| chatterbox-tts-api / Chatterbox-TTS-Server | Extrait de référence | Probablement avec Turbo ou de petits segments | Direct 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 secondes | Probablement (0.6B Base) | Nécessite un adaptateur compatible avec OpenAI. |
| GPT-SoVITS | 5 secondes ; mieux avec 1 minute | Probablement avec fp16 ou une installation légère | Passerelle (Bridge) --mode gptsovits. |
| F5-TTS | Extrait et transcription | Peut-être | Un adaptateur ou le pont --mode f5 avec F5-TTS_server. |
| MisoTTS 8B | Audio de référence | Non ; 24 Go recommandés | Hé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.
| Option | Minimum | Confortable |
|---|---|---|
| Synthèse vocale du système / eSpeak | N'importe quel PC | N'importe quel PC |
| Kitten intégré | Processeur d'entrée de gamme, 4 Go de RAM | Processeur de portable, 8 Go de RAM |
| Piper intégré | Processeur récent, 4 à 8 Go de RAM | Processeur moderne, 8 Go de RAM |
| Kokoro intégré | Processeur moderne, 8 Go de RAM | Carte graphique WebGPU ou processeur rapide, 8 à 16 Go de RAM |
| Kokoro-FastAPI | Processeur, 8 Go de RAM | Carte graphique NVIDIA facultative, 8 à 16 Go de RAM |
| openedai-speech Piper | Processeur, 4–8 Go de RAM | Processeur, 8 Go de RAM |
| openedai-speech XTTS | Carte graphique NVIDIA d'environ 4 Go, 8 à 16 Go de RAM | GPU NVIDIA de 6 Go ou plus, 16 Go de RAM |
| Chatterbox | Processeur sur certaines versions, lent | GPU NVIDIA de 6 Go ou plus, 16 Go de RAM |
| GPT-SoVITS / F5-TTS / Qwen3-TTS | Processeur pour tester, lent | GPU NVIDIA de 6 Go ou plus, 16 Go de RAM |
| MisoTTS 8B | Pas avec 6 Go | GPU 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.
- Ajoutez un Source navigateur avec votre lien
dock.htmlde TTS. - Activez Contrôler l’audio via OBS.
- 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.
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.
&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
| Option | Configuration | Qualité | Privé | Fonctionne dans OBS | Coût |
|---|---|---|---|---|---|
| Kokoro intégré | Aucun | 5/5 | Oui | Oui | Gratuit |
| Piper intégré | Aucun | 4/5 | Oui | Oui | Gratuit |
| Kitten intégré | Aucun | 3/5 | Oui | Oui | Gratuit |
| eSpeak intégré | Aucun | 2/5 | Oui | Oui | Gratuit |
| Kokoro-FastAPI | Docker | 5/5 | Oui | Oui | Gratuit |
| openedai-speech | Docker | 4/5 | Oui | Oui | Gratuit |
| ElevenLabs | Clé API (API key) | 5/5 | Non | Oui | Offres payantes |
| Synthèse vocale système | Aucun | 2/5 | Oui | Nécessite un routage audio | Gratuit |
Résoudre les problèmes
| Problème | À essayer |
|---|---|
| Le test de l'application fonctionne, mais OBS reste muet | OBS 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 lus | Supprimer 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 pas | Vé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 introuvable | Kokoro-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 pas | Activez 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 introuvable | Les 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éponse | Fonctionne ? | Remarques |
|---|---|---|
| Fichier audio | Oui | La meilleure. audio/mpeg, audio/wav, audio/ogg, audio/aac, ou tout type lisible par le navigateur. |
| JSON contenant une URL audio | Oui | Vérifications url, audio_url, output_url, data.url, et le premier élément de data[] . |
| JSON avec audio en base64 | Oui | Vérifications audio, audio_data, audioContent, b64_json, des champs imbriqués tels que data et des URL de données. |
| PCM brut | Uniquement 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ètre | Exemple | Fonction |
|---|---|---|
ttsprovider | customtts | Utilise votre propre serveur. (openai fonctionne aussi.) |
openaiendpoint | http://localhost:8880/v1/audio/speech | L'adresse de votre serveur. Adaptez le port. |
speech | en-US | Active le TTS en anglais. |
voiceopenai | af_bella | Nom de la voix. Dépend du serveur. |
openaimodel | tts-1-hd | Nom du modèle. Par défaut : tts-1. |
openaiformat | mp3 | mp3, wav, opus ou flac. |
openaispeed | 1.0 | Dé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