Guide de synthèse vocale IA locale

Lisez votre chat en direct à voix haute avec des voix IA locales. Commencez par l'option sans installation, puis utilisez un serveur local uniquement si nécessaire.

Français

Vue d’ensemble

Fonctionne avec le texte capturé du chat, quelle que soit la plateforme. Le fournisseur de voix appartient au lecteur SSN, pas à YouTube, Twitch, TikTok ni à un autre site de chat. Ces fournisseurs IA locaux diffèrent de Synthèse vocale système: ils génèrent l'audio de la page sans dépendre de l'exposition des voix du système par OBS. Consultez le guide court de configuration OBS pour distinguer la disponibilité des voix et la capture audio. Comparez les fournisseurs, écoutez des exemples et consultez les paramètres.

Social Stream Ninja peut lire les messages du chat à voix haute avec une synthèse vocale IA locale. « Locale » peut signifier deux choses : la voix s'exécute dans le navigateur, ou vous utilisez un petit serveur de synthèse vocale sur votre propre ordinateur.

Il existe deux approches :

Option 2 — Serveur auto-hébergé Docker requis

Exécutez un serveur local de synthèse vocale sur votre machine et dirigez Social Stream Ninja vers lui. Cela offre davantage de voix, le clonage vocal et le contrôle côté serveur.

  • Kokoro-FastAPI
  • openedai-speech (Piper)
  • kokoro-web

Utilise la prise en charge intégrée à Social Stream du mode Point de terminaison compatible OpenAI .

Commencez par l'option 1. Si vous souhaitez simplement faire fonctionner la synthèse vocale dans OBS, essayez d'abord Kokoro ou Kitten intégrés. Ils ne nécessitent ni Docker, ni serveur, ni clé API. Utilisez un serveur auto-hébergé uniquement si vous avez précisément besoin d'une voix serveur, du clonage vocal ou d'un autre modèle.

Configuration rapide

C'est le chemin le plus court pour la plupart des streamers :

1
Utilisez d'abord le fournisseur intégré. Ajouter &speech=en-US&ttsprovider=kokoro ou &speech=en-US&ttsprovider=kitten à votre dock.html URL.
2
Placez cette URL dans OBS comme source navigateur. La source navigateur OBS est la page qui produit le son.
3
Activez la capture audio OBS. Dans les propriétés de la source navigateur, activez Contrôler l'audio via OBS.
4
Envoyez un court message de test dans le chat. Utilisez quelque chose de simple comme Testing local TTS. Attendez les premiers téléchargements de modèles si vous utilisez Kokoro ou Piper.
5
Essayez un serveur auto-hébergé seulement ensuite. Si vous utilisez Kokoro-FastAPI, openedai-speech ou un autre serveur Docker, lisez la règle localhost ci-dessous avant de copier une URL dans OBS.

La règle localhost / 127.0.0.1

C'est l'erreur la plus courante avec la synthèse vocale locale.

localhost et 127.0.0.1 signifient toujours « ce même ordinateur ». Si OBS est sur un ordinateur et Kokoro sur un autre, 127.0.0.1 dans l'URL OBS désigne l'ordinateur OBS, pas l'ordinateur Kokoro.
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
Utilisez 127.0.0.1 uniquement lorsque le serveur de synthèse vocale est sur le même ordinateur que la page qui lit l'audio. Si le serveur est sur un autre ordinateur, utilisez l'adresse IP locale de cet ordinateur.
Votre configurationPoint de terminaison à utiliser
OBS et Kokoro fonctionnent sur le même ordinateurhttp://127.0.0.1:8880/v1/audio/speech
Kokoro fonctionne sur un autre ordinateur de votre réseau domestiquehttp://192.168.x.x:8880/v1/audio/speech, en utilisant l'adresse IP locale de l'ordinateur Kokoro
Le bouton de test de l'application de bureau SSN fonctionne, mais OBS est silencieuxOBS a toujours besoin de son propre point de terminaison fonctionnel. Le test de l'application ne prouve pas qu'OBS peut atteindre le serveur.

Sous Linux, macOS et Windows, vérifiez également que le pare-feu autorise le port et que Docker a publié le port avec -p 8880:8880.

Où cliquer dans SSN

Dans la fenêtre de l'extension, ouvrez le sélecteur de fournisseur de synthèse vocale et choisissez Point de terminaison de synthèse vocale personnalisé / local. Cela affiche les champs du point de terminaison local compatible OpenAI et le lien vers ce guide.

Schéma illustré des champs de synthèse vocale locale dans Social Stream Ninja
Le champ du point de terminaison est le plus important. Pour un serveur local, la clé API peut généralement rester vide. Choisissez un nom de voix réellement pris en charge par votre serveur.
À propos des captures d'écran : le schéma des champs SSN ci-dessus montre les champs du point de terminaison local. Les interfaces des serveurs tiers changent selon la version du projet ; leurs captures d'écran et détails actuels sont donc accessibles depuis le dépôt de chaque projet, près de l'étape de configuration concernée.

Fonctionnement auto-hébergé

SSN traite un serveur local/auto-hébergé de synthèse vocale comme un point de terminaison vocal compatible OpenAI. Le fonctionnement principal est le suivant :

chat text -> SSN TTS request -> local endpoint or SSN bridge -> TTS server -> audio response -> SSN playback

Structure de la requête

Pour ttsprovider=customtts, localtts, ou openai, SSN envoie un POST JSON au point de terminaison configuré :

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

CORS, pages hébergées et passerelle

CORS est une vérification d'autorisation du navigateur. En termes simples, le serveur de synthèse vocale doit dire au navigateur : « oui, cette page est autorisée à me demander de l'audio ». Si cette autorisation manque, la requête peut être bloquée avant même que Kokoro ou un autre serveur de synthèse vocale ne la reçoive.

Si le serveur n'autorise pas les requêtes du navigateur, exécutez la passerelle locale de synthèse vocale SSN et dirigez SSN vers http://127.0.0.1:8124/v1/audio/speech. Pour OBS, le plus simple est d'exécuter la passerelle sur le même ordinateur qu'OBS.

Réponses audio prises en charge

Réponse Prise en charge SSN Remarques
Audio binaire Oui Meilleure option. Renvoyez audio/mpeg, audio/wav, audio/ogg, audio/aac, ou un autre type audio lisible par le navigateur.
JSON avec URL audio Oui SSN vérifie url, audio_url, output_url, des champs imbriqués tels que data.url, et le premier élément de data[] .
JSON avec audio en base64 Oui SSN vérifie 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é Renvoyez le PCM comme fichier WAV ou WAV en base64. Un élément audio du navigateur ne peut pas lire directement des octets PCM bruts de manière fiable.
Formats recommandés : utilisez mp3 pour de petits fichiers et une large compatibilité navigateur, wav pour les serveurs locaux de clonage et les tests de passerelle, et opus uniquement lorsque le serveur et le navigateur le prennent tous deux en charge.

Audio en streaming

SSN ne lit actuellement pas progressivement les points de terminaison de synthèse vocale personnalisés/locaux. Il attend le blob de réponse ou les données audio JSON, puis les lit. Certains serveurs en amont exposent des points de terminaison de streaming, mais le circuit compatible OpenAI actuel de SSN met les données en mémoire avant lecture.

En pratique : gardez courts les extraits de chat lus. La prise en charge du streaming nécessiterait un circuit de lecture distinct utilisant des segments WAV/MP3 diffusés, MediaSource, WebCodecs ou un mixeur côté serveur.

Option 1 — Synthèse vocale intégrée (sans configuration)

Ces moteurs sont inclus dans Social Stream Ninja et ne nécessitent aucune installation. Ils s'exécutent dans le navigateur avec WebAssembly (WASM) ou ONNX Runtime.

Fournisseur Qualité Utilisation du processeur GPU/WebGPU Paramètre d’URL
Kokoro TTS ⭐⭐⭐⭐⭐ Excellent Moyen Plus rapide avec un GPU ?ttsprovider=kokoro
Piper TTS ⭐⭐⭐⭐ Très bon Faible Processeur uniquement ?ttsprovider=piper
Kitten TTS ⭐⭐⭐ Bon Très faible Processeur uniquement ?ttsprovider=kitten
eSpeak-NG ⭐⭐ Robotique Minimal Processeur uniquement ?ttsprovider=espeak

Comment activer

Ajouter &ttsprovider= et &speech= à votre Social Stream dock.html URL :

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro

Options Kokoro TTS

SSN propose actuellement 28 voix Kokoro en anglais, trois en espagnol et trois en portugais du Brésil. Indiquez une voix avec &voicekokoro=:

English female: af_bella, af_sarah, af_nicole, af_sky English male: am_adam, am_michael British female: bf_emma, bf_isabella British male: bm_george, bm_lewis
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro&voicekokoro=af_bella&kokorospeed=1.1
Remarque sur les langues : Sélectionnez une voix Kokoro correspondant à la langue souhaitée. Modifier uniquement le paramètre de langue ne change pas la voix sélectionnée.

Exemple espagnol :

dock.html?session=YOUR_SESSION&speech=es-ES&ttsprovider=kokoro&voicekokoro=ef_dora

Exemple portugais :

dock.html?session=YOUR_SESSION&speech=pt-BR&ttsprovider=kokoro&voicekokoro=pf_dora

Options Piper TTS

Précisez un modèle de voix avec &pipervoice=:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=piper&pipervoice=en_US-hfc_female-medium

Des voix Piper portugaises et espagnoles sont disponibles :

Brazilian Portuguese: pt_BR-faber-medium, pt_BR-edresson-low
Spanish: es_ES-davefx-medium, es_MX-ald-medium
dock.html?session=YOUR_SESSION&speech=pt-BR&ttsprovider=piper&pipervoice=pt_BR-faber-medium
dock.html?session=YOUR_SESSION&speech=es-ES&ttsprovider=piper&pipervoice=es_ES-davefx-medium

Options Kitten TTS

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kitten&kittenvoice=expr-voice-4-f

Options eSpeak-NG

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=espeak&espeakvoice=en&espeakspeed=175
dock.html?session=YOUR_SESSION&speech=pt-BR&ttsprovider=espeak&espeakvoice=pt-br&espeakspeed=145
dock.html?session=YOUR_SESSION&speech=es-ES&ttsprovider=espeak&espeakvoice=es&espeakspeed=145
Premier chargement : Kokoro et Piper doivent télécharger leurs fichiers de modèle à la première utilisation (environ 50 à 200 Mo). Cela se fait automatiquement en arrière-plan. Les chargements suivants peuvent réutiliser les modèles en cache, mais l'initialisation prend toujours du temps. OBS possède un cache distinct de Chrome/Edge.
Capture OBS : Tous les fournisseurs intégrés de synthèse vocale lisent l'audio directement dans le navigateur. Dans OBS, ajoutez votre dock.html comme source navigateur et activez « Contrôler l'audio via OBS (Control audio via OBS) »— aucun câble virtuel nécessaire. Consultez la section OBS ci-dessous.

Notes pour le navigateur et l'application de bureau

L'extension Chrome, la source navigateur OBS et l'application de bureau autonome Social Stream Ninja utilisent toutes les mêmes dock.html paramètres URL de synthèse vocale. La différence importante est l'endroit où le son est produit.

Interface Fonctionnement de la synthèse vocale locale Capture audio
Extension Chrome / source navigateur OBS La récupération depuis le navigateur nécessite CORS sur le serveur local, sauf si vous utilisez la passerelle SSN. Utilisez une source navigateur OBS avec « Control audio via OBS ».
Application de bureau autonome Utilise les mêmes paramètres de fournisseur. Les fenêtres de fichiers locaux de l'application sont moins limitées par CORS, mais la passerelle reste la voie la plus sûre pour les serveurs refusant les requêtes de type navigateur. Capturez l'audio du bureau/de l'application ou dirigez l'application vers un câble audio virtuel.
Kokoro intégré dans l'application de bureau L'application peut utiliser son circuit local ninjafy.tts pour Kokoro au lieu de dépendre uniquement du chargement du modèle dans le navigateur. Le son est lu par l'application ; utilisez donc la capture audio du bureau/de l'application.
Ne confondez pas le test dans l'application et OBS. Si vous appuyez sur Test dans l'application SSN, le test est effectué depuis l'application. Si vous copiez une dock.html URL dans OBS, c'est OBS qui doit atteindre le serveur de synthèse vocale et lire l'audio.

Option 2 — Serveur de synthèse vocale auto-hébergé

Si vous souhaitez davantage de voix, le clonage vocal ou un serveur dédié réutilisable avec plusieurs outils, vous pouvez exécuter un serveur local de synthèse vocale. Social Stream Ninja s'y connecte avec son mode intégré Point de terminaison de synthèse vocale compatible OpenAI — aucune clé API nécessaire pour les serveurs locaux.

Conditions requises : Docker Desktop doit être installé et en cours d'exécution. Docker est gratuit pour un usage personnel.

Trois options recommandées :

Serveur Modèle GPU Disque Port par défaut
Kokoro-FastAPI Recommandé Kokoro 82M Facultatif Environ 2 Go 8880
openedai-speech (Piper) Léger Piper TTS Processeur uniquement < 1 Go 8000
kokoro-web Kokoro 82M Facultatif Environ 2 Go 3000

Quel paquet choisir ?

Paquet Principal avantage Compromis
Kokoro intégré Meilleur premier choix : aucun serveur, bonne qualité, privé, fonctionne dans le navigateur et l'application de bureau. Pas de clonage vocal.
Kokoro-FastAPI Serveur compatible OpenAI, configuration Docker simple, processeur ou GPU, nombreuses voix Kokoro. Pas de véritable clonage vocal ; le mélange de voix et les fonctions de voix personnalisées dépendent de la version du serveur.
openedai-speech Point de terminaison compatible OpenAI léger ; Piper convient au processeur et XTTS ajoute le clonage avec environ 4 Go de VRAM visés. Le dépôt indique qu'il est largement obsolète ; considérez-le donc comme utile, mais sans garantie de pérennité.
Serveurs Chatterbox Clonage vocal, options d'interface web, API compatibles OpenAI, outils pour les textes longs. La prise en charge CUDA/GPU est plus fluide que le processeur pour certaines versions ; la configuration varie selon la variante du serveur.
GPT-SoVITS Clonage et contrôle performants avec de courtes références et prise en charge de transcriptions. Pas compatible OpenAI par défaut ; utilisez le mode passerelle SSN.
F5-TTS Clonage naturel sans entraînement avec WAV de référence et transcription. Le projet officiel n'est pas un simple point de terminaison OpenAI ; utilisez une interface adaptée ou le mode passerelle.
Qwen3-TTS Fonctions modernes de clonage et de création de voix, avec des modèles plus petits de 0.6B/1.7B. D'abord bibliothèque/démonstration ; nécessite une interface adaptée pour SSN.
MisoTTS Génération vocale haut de gamme pilotée par instructions. Ne convient pas à une cible locale de 6 Go de VRAM ; utilisez un hébergement distant/personnalisé si nécessaire.

Fonctionnement du clonage vocal

Le clonage vocal n'est pas un mode SSN distinct. C'est une fonction de certains serveurs locaux de synthèse vocale. SSN envoie le texte du chat à un point de terminaison local ; le serveur choisit la voix clonée à partir d'un fichier audio de référence enregistré, d'un profil vocal ou de la configuration de la passerelle.

Fonctionnement typique

  1. Enregistrez un extrait de référence propre, généralement de 3 à 30 secondes, avec une seule personne et peu de bruit de fond.
  2. Certains moteurs exigent aussi la transcription exacte de cet extrait de référence.
  3. Le serveur local convertit la référence en consigne de locuteur, représentation vectorielle ou profil vocal.
  4. SSN envoie le texte du chat en direct au point de terminaison avec ttsprovider=customtts.
  5. Le serveur renvoie un fichier audio lisible, généralement WAV ou MP3, et SSN le lit dans le Dock/la source navigateur.
Utilisez uniquement des voix avec consentement. Le clonage vocal peut imiter une vraie personne ; utilisez donc uniquement vos propres voix, celles pour lesquelles vous avez une autorisation ou celles disposant d'une licence explicite pour cet usage.
XTTS-v2 est non commercial par défaut. La Coqui Public Model License autorise uniquement un usage non commercial du modèle et de ses sorties. Un direct monétisé peut ne pas remplir cette condition ; vérifiez donc la licence ou obtenez une autorisation séparée avant d'utiliser XTTS-v2 commercialement.

Avec 6 Go de VRAM ou moins, privilégiez les petits modèles de clonage sans entraînement et les serveurs compatibles OpenAI. Les modèles plus volumineux peuvent toujours fonctionner via le même point de terminaison SSN si l'utilisateur les héberge ailleurs.

Option Clonage vocal Tient dans 6 Go de VRAM Chemin API pour SSN
Qwen3-TTS 0.6B Base Audio de référence de 3 secondes Probablement Utilisez une interface compatible OpenAI, puis ttsprovider=customtts
XTTS-v2 / openedai-speech Voix de référence WAV courtes Oui, environ 4 Go selon openedai-speech /v1/audio/speech
Chatterbox Turbo / Server Clonage à partir d'un audio de référence Probablement avec Turbo / de petits segments Versions de serveurs compatibles OpenAI, ou la passerelle
GPT-SoVITS 5 secondes sans entraînement, 1 minute avec quelques exemples Probablement avec fp16 / une installation légère Utilisez scripts/local-tts-bridge.cjs --mode gptsovits
F5-TTS WAV de référence + transcription Peut-être ; dépend de la version et du vocodeur Utilisez une interface compatible OpenAI, ou --mode f5 pour les interfaces de serveur F5-TTS
MisoTTS 8B Contexte audio de référence Non ; le projet recommande 24 Go de VRAM Point de terminaison distant/personnalisé uniquement
Meilleure structure cible pour SSN : accepter POST /v1/audio/speech avec { model, input, voice, response_format, speed } et renvoyer un fichier audio lisible. Cela couvre OpenAI, Coqui/XTTS, les interfaces Kokoro, les interfaces Qwen et la plupart des services proxy.

Configuration matérielle requise

Ce sont des points de départ pratiques, pas des garanties strictes. La version du modèle, la quantification, la longueur du texte, l'image Docker et les applications en arrière-plan peuvent modifier l'utilisation mémoire.

Option Configuration minimale pratique Bonne cible Remarques
Synthèse vocale du système / eSpeak Tout PC moderne N'importe quel PC Rapide, qualité faible, sans clonage.
Kitten intégré Processeur d'entrée de gamme, 4 Go de RAM Processeur moderne de portable, 8 Go de RAM Petit modèle ONNX, démarrage rapide.
Piper intégré Processeur moderne, 4 à 8 Go de RAM Processeur moderne, 8 Go de RAM Bonne option de voix neuronale peu gourmande en ressources.
Kokoro intégré Processeur moderne, 8 Go de RAM GPU compatible WebGPU ou processeur rapide, 8 à 16 Go de RAM Meilleure qualité sans configuration. Le premier chargement télécharge les ressources du modèle.
Kokoro-FastAPI Hôte Docker sur processeur, 8 Go de RAM GPU NVIDIA facultatif, 8 à 16 Go de RAM Bon serveur local lorsque le chargement du modèle dans le navigateur n'est pas idéal.
openedai-speech Piper Processeur, 4 à 8 Go de RAM Processeur, 8 Go de RAM Serveur compatible OpenAI léger.
openedai-speech XTTS GPU NVIDIA d'environ 4 Go de VRAM, 8 à 16 Go de RAM GPU NVIDIA de 6 Go ou plus, 16 Go de RAM Circuit de clonage vocal ; le processeur est possible, mais lent.
Serveurs Chatterbox Le processeur peut fonctionner avec certaines versions, mais lentement GPU NVIDIA de 6 Go ou plus, 16 Go de RAM Utilisez un GPU pour le clonage ou le traitement de textes longs.
GPT-SoVITS / F5-TTS / Qwen3-TTS Tests sur processeur uniquement, lent GPU NVIDIA de 6 Go ou plus pour les modèles petits/optimisés, 16 Go de RAM Le choix de l'interface et la taille du modèle comptent. Prévoyez davantage de configuration.
MisoTTS 8B Non recommandé localement avec 6 Go de VRAM 24 Go de VRAM ou hôte distant Le dépôt recommande des GPU avec beaucoup de VRAM pour un usage interactif.

Notes sur les serveurs testés

Voici les cibles auto-hébergées de clonage vocal dont la compatibilité SSN a été vérifiée. Le circuit du point de terminaison local a été testé avec les deux dock.html et featured.html.

SSN accepte les réponses audio binaires directes, les réponses JSON avec audio en base64 et les réponses JSON avec URL audio. La lecture personnalisée/locale actuelle met l'audio reçu en mémoire avant de le lire ; la lecture progressive en streaming n'est pas encore prise en charge.

Serveur Circuit SSN Remarques
openedai-speech Direct ou passerelle Compatible OpenAI /v1/audio/speech. Le mode Piper a été testé avec une véritable synthèse sur processeur depuis dock.html et featured.html, directement et via la passerelle. En cas d'exécution depuis les sources sous Windows, vérifiez que le dossier Scripts de l'environnement virtuel figure dans PATH afin que piper.exe et ffmpeg.exe puissent être trouvés.
chatterbox-tts-api Direct ou passerelle Compatible OpenAI /v1/audio/speech. Utilise l'audio de référence configuré pour le clonage. La structure API a été testée directement et via la passerelle.
Chatterbox-TTS-Server Direct ou passerelle Point de terminaison compatible OpenAI et interface web. Testé avec une véritable synthèse sur processeur à l'aide de Emily.wav depuis dock.html et featured.html, directement et via la passerelle.
GPT-SoVITS Mode passerelle Exécutez la passerelle SSN avec --mode gptsovits; le serveur cible est /tts, pas compatible OpenAI.
F5-TTS_server Mode passerelle Exécutez la passerelle SSN avec --mode f5; le serveur cible utilise GET /synthesize_speech/.
F5-TTS officiel Nécessite une interface adaptée D'abord CLI, Gradio et serveur socket. Utilisez une interface compatible OpenAI ou le mode passerelle F5 vers une interface adaptée.
Qwen3-TTS Nécessite une interface adaptée D'abord bibliothèque et démonstration Gradio. Bon candidat pour une petite interface compatible OpenAI autour de generate_voice_clone.
MisoTTS Distant/personnalisé uniquement Le clonage vocal est pris en charge, mais le modèle 8B ne convient pas à 6 Go de VRAM et le dépôt ne propose aucun point de terminaison REST local.

Configuration Kokoro-FastAPI

Kokoro-FastAPI exécute le modèle Kokoro 82M comme serveur local avec une API compatible OpenAI. Il fonctionne sur processeur (aucun GPU requis) et offre une excellente qualité vocale.

Installer avec Docker

Ouvrez un terminal (Invite de commandes, PowerShell ou Terminal) et exécutez l'une des commandes suivantes :

Processeur (fonctionne sur tout ordinateur) :

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

GPU (NVIDIA uniquement — synthèse plus rapide) :

docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.0post4
Première exécution : Docker télécharge l'image (environ 1,5 à 2 Go). Cela ne se produit qu'une fois. Ensuite, le serveur démarre en quelques secondes.

Vérifier le fonctionnement

Ouvrez votre navigateur et accédez à http://localhost:8880/web/— vous devriez voir une interface web où tester les voix.

Voix disponibles

Plus de 67 voix disponibles. Quelques exemples :

af_bella, af_sarah, af_nicole, af_sky, af_heart (American female) am_adam, am_michael (American male) bf_emma, bf_isabella (British female) bm_george, bm_lewis (British male)

Parcourez et testez toutes les voix à l'adresse http://localhost:8880/web/ une fois le serveur démarré.

URL SSN

Si Kokoro-FastAPI est sur le même ordinateur qu'OBS :

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8880/v1/audio/speech&voiceopenai=af_bella

Si Kokoro-FastAPI est sur un autre ordinateur, remplacez 192.168.x.x par l'adresse IP locale de cet ordinateur :

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://192.168.x.x:8880/v1/audio/speech&voiceopenai=af_bella
Les noms de voix Kokoro diffèrent de ceux d'OpenAI. Pour Kokoro-FastAPI, utilisez des voix telles que af_bella, af_sarah, am_adam, ou bf_emma. Des noms tels que echo, nova, et alloy sont des noms de style OpenAI/openedai-speech et peuvent ne pas fonctionner avec Kokoro.

Maintenir le serveur en marche

Pour maintenir Kokoro-FastAPI automatiquement en arrière-plan, utilisez l'option de redémarrage de Docker :

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

Il démarrera désormais automatiquement avec Docker Desktop à chaque redémarrage.

Configuration openedai-speech (Piper et XTTS-v2)

openedai-speech expose le point de terminaison compatible OpenAI /v1/audio/speech nécessaire à Social Stream. Sa petite image exécute Piper sur le processeur ; son image complète peut exécuter le clonage vocal XTTS-v2 sur un GPU pris en charge.

Projet archivé : openedai-speech a été archivé en janvier 2026 et se décrit comme largement obsolète. Il reste un exemple utile de compatibilité, mais n'est plus maintenu. Gardez-le local et n'exposez pas son port sans authentification à Internet.

Option A : Piper léger

Utilisez cette option pour un serveur de synthèse vocale sur processeur de moins de 1 Go. Elle n'inclut ni XTTS-v2 ni clonage vocal.

Installer avec Docker Compose

1
Clonez le dépôt ou créez un dossier avec le fichier suivant docker-compose.min.yml. Vous pouvez aussi exécuter directement les commandes ci-dessous.
2
Exécutez l'image minimale réservée à Piper :
docker run -d --restart unless-stopped \ -p 8000:8000 \ ghcr.io/matatonic/openedai-speech-min

Note sur l'installation depuis les sources sous Windows

Si vous exécutez openedai-speech depuis une copie locale des sources plutôt que Docker, ajoutez le dossier de scripts de son environnement virtuel à PATH avant de démarrer le serveur. Sinon, les requêtes peuvent renvoyer HTTP 500 parce que le serveur 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

Voix disponibles

openedai-speech utilise des noms de voix de style OpenAI associés à des voix Piper :

alloy, echo, fable, onyx, nova, shimmer

URL SSN

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=openai&openaiendpoint=http://localhost:8000/v1/audio/speech&voiceopenai=nova

Option B : clonage vocal XTTS-v2

XTTS-v2 est un modèle, pas une API web. Utilisez le serveur openedai-speech complet pour charger le modèle, sélectionner une voix de référence enregistrée, accepter le texte du chat SSN et renvoyer un audio lisible. Le serveur indique une cible pratique d'environ 4 Go de VRAM GPU ; l'inférence sur processeur est possible, mais lente.

N'utilisez pas openedai-speech-min pour XTTS-v2. L'image minimale contient uniquement Piper. XTTS-v2 nécessite l'installation complète et model=tts-1-hd dans chaque requête vocale.
1
Clonez le serveur archivé, créez son fichier d'environnement et démarrez la configuration Docker Compose complète avec GPU :
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 au lieu de Copy-Item. Docker doit avoir accès à un GPU pris en charge. Le modèle se télécharge à la première utilisation.

2
Préparez un extrait de référence propre, avec consentement. Un WAV mono à 22050 Hz de 6 à 30 secondes est un bon point de départ :
ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
3
Ajoutez la voix clonée sous la section existante tts-1-hd dans config/voice_to_speaker.yaml:
tts-1-hd: me: model: xtts speaker: voices/me.wav language: en

Conservez toutes les voix existantes déjà répertoriées sous tts-1-hd. Modifiez me par le nom de voix que vous souhaitez que SSN envoie, et utilisez le bon code de langue XTTS si nécessaire.

4
Redémarrez le serveur, puis dirigez le Dock SSN ou l'incrustation de mise en avant vers lui :
docker compose restart
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 requis pour XTTS-v2. S'il est omis, Social Stream envoie sa valeur par défaut tts-1, et openedai-speech sélectionne Piper à la place. La valeur de voiceopenai doit correspondre au nom de voix clonée dans voice_to_speaker.yaml.

Si le navigateur ou OBS bloque la requête directe, exécutez la Passerelle locale de synthèse vocale sur l'ordinateur OBS et conservez les mêmes paramètres de modèle et de voix en modifiant openaiendpoint à http://127.0.0.1:8124/v1/audio/speech.

Passerelle locale de synthèse vocale

La passerelle est un petit utilitaire local. Elle accepte la requête du navigateur depuis SSN, communique avec votre serveur de synthèse vocale, puis renvoie l'audio à SSN avec des en-têtes adaptés au navigateur.

Règle la plus simple : exécutez la passerelle sur le même ordinateur qu'OBS. OBS peut alors utiliser http://127.0.0.1:8124/v1/audio/speech, même si le véritable serveur de synthèse vocale se trouve sur un autre ordinateur.
Schéma montrant OBS appelant la passerelle locale, puis la passerelle appelant le serveur de synthèse vocale
La source navigateur OBS communique avec la passerelle sur l'ordinateur OBS. La passerelle peut ensuite appeler Kokoro-FastAPI, openedai-speech ou un autre serveur.

Le dossier de démarrage autonome est local-tts-bridge/; consultez le README de la passerelle pour toutes les options de lancement.

Proxy compatible OpenAI

Windows PowerShell, lorsque le serveur de synthèse vocale est sur ce même ordinateur :

$env:SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" npm run local-tts-bridge

Windows PowerShell, lorsque le serveur de synthèse vocale est sur un autre ordinateur :

$env:SSN_TTS_TARGET="http://192.168.x.x:8880/v1/audio/speech" npm run local-tts-bridge

Terminal macOS/Linux :

SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" npm run local-tts-bridge

Dirigez ensuite l'URL OBS dock.html vers la passerelle :

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&voiceopenai=af_bella

Mode proxy GPT-SoVITS

GPT-SoVITS utilise sa propre structure JSON pour /tts , ce qui permet à la passerelle de convertir la requête compatible OpenAI de SSN en corps de requête GPT-SoVITS.

$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" npm run local-tts-bridge -- --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 proxy serveur F5-TTS

Certaines interfaces de serveur F5-TTS exposent /synthesize_speech/?text=...&voice=... au lieu d'un point de terminaison compatible OpenAI. La passerelle peut convertir la requête SSN dans ce format de requête.

$env:SSN_TTS_TARGET="http://127.0.0.1:7860/synthesize_speech/" npm run local-tts-bridge -- --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
Point de terminaison de la passerelle : http://127.0.0.1:8124/v1/audio/speech. Changez le port avec SSN_TTS_BRIDGE_PORT=8125 si nécessaire.

Connexion à Social Stream Ninja

Tous les serveurs auto-hébergés ci-dessus utilisent la même méthode de connexion : le mode intégré de Social Stream Point de terminaison OpenAI TTS avec une URL locale personnalisée.

Paramètres URL

Paramètre Valeur Description
ttsprovider customtts ou openai Utilisez le circuit de synthèse vocale compatible OpenAI. Utilisez customtts pour les points de terminaison locaux/auto-hébergés.
openaiendpoint http://localhost:8880/v1/audio/speech URL de votre serveur local (changez le port si nécessaire)
speech en-US Active la synthèse vocale en anglais
voiceopenai af_bella Nom de la voix (dépend du serveur)
openaiformat mp3 Format audio : mp3, wav, opus, flac
openaispeed 1.0 Vitesse de parole (0.5–2.0)
Alias du point de terminaison : customttsendpoint et localttsendpoint fonctionnent également. customttsvoice, localttsvoice, customttsmodel, localttsmodel, customttsformat, et localttsformat sont des alias acceptés pour les champs de style OpenAI.
Vérifiez le point de terminaison et la voix avant de dépanner l'audio. openaiendpoint doit être accessible depuis la page qui lit la synthèse vocale, et voiceopenai doit être une voix prise en charge par votre serveur. Kokoro-FastAPI utilise des noms tels que af_bella; openedai-speech utilise souvent des noms tels que nova ou echo.

Exemples d'URL complètes

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

Options de synthèse vocale supplémentaires

Ces paramètres fonctionnent avec tout fournisseur de synthèse vocale, y compris les serveurs locaux :

Paramètre Exemple Description
simpletts &simpletts Omettre « dit » — lit uniquement le message
simpletts2 &simpletts2 Omettre entièrement les noms d'utilisateurs
volume &volume=0.8 Niveau de volume (0.0–1.0)
skipmessages &skipmessages=3 Lire seulement un message sur trois
ttscommand &ttscommand=!say Lire uniquement les messages commençant par !say
readevents &readevents Lire aussi les abonnements, dons, etc.
ttsquick &ttsquick=100 Coupe volontairement la parole après ce nombre de caractères. Retirez-le si les messages sont tronqués.
Aucune clé API nécessaire. Avec un serveur local (URL autre qu'openai.com), Social Stream Ninja envoie la requête sans en-tête Authorization. Vous n'avez pas besoin de configurer de clé.

Options intégrées au navigateur à prendre en charge

SSN prend déjà en charge le mode système/navigateur speechSynthesis, Kokoro, Piper, Kitten et eSpeak intégrés. Les ajouts futurs les plus utiles côté navigateur seraient un sélecteur de périphérique de sortie audio lorsque setSinkId est disponible, davantage de voix Piper et un circuit dédié de lecture progressive en streaming pour les serveurs capables de diffuser des segments audio.

Acheminer l'audio vers OBS

La méthode de capture de l'audio de synthèse vocale dans OBS dépend de votre façon d'exécuter Social Stream Ninja.

Méthode 1 — Source navigateur OBS Recommandé

C'est la méthode la plus simple et elle fonctionne pour tous les fournisseurs de synthèse vocale (intégré et serveur auto-hébergé).

1
Dans OBS, ajoutez une nouvelle Source navigateur
2
Définissez l'URL sur votre dock.html URL avec paramètres de synthèse vocale
3
Vérifiez « Contrôler l'audio via OBS (Control audio via OBS) » dans les paramètres de la source navigateur
4
Cliquez sur OK— l'audio de synthèse vocale apparaît désormais comme une source audio OBS que vous pouvez régler ou router
5
Cliquez une fois sur la source navigateur dans l'aperçu pour autoriser la lecture automatique audio
Pourquoi cela fonctionne : La synthèse vocale intégrée et celle des serveurs auto-hébergés lisent toutes deux l'audio via le contexte audio du navigateur (et non la synthèse vocale du système). OBS peut capturer directement l'audio du navigateur lorsque « Control audio via OBS » est coché.

Méthode 2 — Application de bureau SSN + audio du bureau

Si vous utilisez l'application de bureau autonome Social Stream Ninja (et non une source navigateur OBS) :

1
L'audio de synthèse vocale est lu par l'application sur les haut-parleurs/écouteurs du système
2
Dans OBS, ajoutez une source de type Capture d'entrée audio ou Capture audio du bureau .
3
Si vous souhaitez isoler la synthèse vocale des autres sons du bureau, utilisez un câble audio virtuel :
  • Windows : VB-Audio Virtual Cable (gratuit)
  • Définissez CABLE Input comme sortie de l'application SSN dans les paramètres de son Windows
  • Capture CABLE Output dans OBS avec Capture d'entrée audio

Liens de routage audio Windows

Routage par application sous Windows 10

1
Ouvrir Paramètres de son > Préférences de volume des applications et des appareils.
2
Trouvez le navigateur ou l'application SSN dans la liste des applications.
3
Réglez Output sur CABLE Input (VB-Audio Virtual Cable).
4
Dans OBS, ajoutez Capture d'entrée audio et choisissez CABLE Output.

Routage par application sous Windows 11

1
Ouvrir Paramètres > Système > Son > Mélangeur de volume.
2
Trouvez le navigateur ou l'application SSN.
3
Réglez Output device sur CABLE Input (VB-Audio Virtual Cable).
4
Dans OBS, ajoutez Capture d'entrée audio et choisissez CABLE Output.

Logiciel Audio Router

Audio Router peut diriger une application vers un câble virtuel, mais c'est un ancien logiciel. Préférez le routage par application de Windows lorsqu'il fonctionne.

1
Installez Audio Router.
2
Dirigez le navigateur ou l'application SSN vers CABLE Input.
3
Dans OBS, capturez CABLE Output.

Routage avancé Voicemeeter

Voicemeeter est préférable pour entendre la synthèse vocale localement, la diriger vers OBS et la séparer de la musique/du son du jeu.

1
Installez Voicemeeter et définissez-le comme sortie par défaut de Windows.
2
Réglez Hardware Out sur vos haut-parleurs/écouteurs.
3
Dirigez la sortie virtuelle vers OBS comme source de capture d'entrée audio.
Synthèse vocale du système (?speech=en-US sans fournisseur) dépend des voix exposées par le navigateur. OBS peut n'exposer aucune voix ou répertorier des voix sans produire d'audio capturable. Testez séparément la parole et l'enregistrement OBS. Utilisez l'un des fournisseurs ci-dessus (kokoro, piper, etc.) à la place.

Tableau comparatif

Option Configuration Qualité Privé OBS (source navigateur) GPU nécessaire Coût
Kokoro intégré Aucun ⭐⭐⭐⭐⭐ Oui Oui Non (plus rapide avec) Gratuit
Piper intégré Aucun ⭐⭐⭐⭐ Oui Oui Non Gratuit
Kitten intégré Aucun ⭐⭐⭐ Oui Oui Non Gratuit
eSpeak intégré Aucun ⭐⭐ Oui Oui Non Gratuit
Kokoro-FastAPI Docker ⭐⭐⭐⭐⭐ Oui Oui Non (facultatif) Gratuit
openedai-speech Docker ⭐⭐⭐⭐ Oui Oui Non Gratuit
ElevenLabs Clé API ⭐⭐⭐⭐⭐ Non Oui Non Offres payantes
Synthèse vocale système Aucun ⭐⭐ Oui Non* Non Gratuit

* La synthèse vocale du système nécessite un routage par câble audio virtuel pour la capture OBS.

Dépannage

Liste de vérifications illustrée pour dépanner la synthèse vocale locale
Lorsque la synthèse vocale fonctionne à un endroit mais pas à un autre, vérifiez dans cet ordre la machine, le point de terminaison, la voix, l'autorisation du navigateur et la capture audio OBS.

Le test dans l'application SSN fonctionne, mais OBS n'a pas de son

Le test de l'application prouve uniquement qu'elle peut atteindre le serveur. La source navigateur OBS doit encore atteindre le point de terminaison et lire l'audio.

Seule la première lettre ou les premiers mots sont lus

Le serveur local ne répond pas

CORS ou réseau local bloqué

Si le navigateur indique que la requête est bloquée par CORS, l'accès au réseau local/privé ou un échec de récupération, le serveur de synthèse vocale peut ne jamais recevoir la requête.

Mauvaise voix ou voix introuvable

Le son est audible mais OBS ne le capture pas

Image Docker introuvable

Les étiquettes d'images Docker peuvent changer. Si une commande de ce guide cesse de fonctionner, consultez la page du projet pour connaître l'étiquette actuelle :

Autres options de synthèse vocale : Pour la synthèse vocale premium cloud (ElevenLabs, Google Cloud, Speechify) et la référence complète des paramètres URL, consultez le Guide des voix de synthèse vocale.