Transformez votre voix en temps réel avec l'IA d'Inworld. Idéal pour Discord, OBS, Zoom et autres applications de streaming/chat.
[Votre Micro] → [Détection Voix] → [Transcription IA] → [Synthèse Inworld] → [Discord/OBS]
- VAD - Détecte quand vous parlez
- STT - Transcrit votre voix en texte (Vosk, Whisper ou Windows SAPI)
- TTS - Inworld génère une nouvelle voix avec votre texte
- Sortie - L'audio va vers un câble virtuel utilisable dans Discord
- Python 3.11 ou 3.12 (3.14 non supporté pour Whisper)
- Compte Inworld AI avec clés API
- Câble audio virtuel (voir installation par OS)
Téléchargez Python 3.12 sur python.org
Cochez "Add Python to PATH" pendant l'installation
Téléchargez et installez: https://vb-audio.com/Cable/
Cela crée deux périphériques:
- CABLE Input - où le voice changer envoie l'audio
- CABLE Output - ce que Discord utilise comme micro
git clone https://github.com/votre-user/TTS-inworldAPI.git
cd TTS-inworldAPI
:: Créer l'environnement virtuel
python -m venv venv
:: Activer le venv
venv\Scripts\activate
:: Installer les dépendances
pip install -r requirements.txt
pip install setuptools
:: (Optionnel) Pour utiliser Whisper au lieu de Vosk
pip install faster-whisper torch
:: (Optionnel) Pour utiliser la reconnaissance vocale Windows (SAPI)
pip install SpeechRecognition
:: (Optionnel) Pour le mode push-to-talk
pip install pynputWindows SAPI : Si vous utilisez le moteur
windows, assurez-vous que le language pack français est installé : Paramètres > Heure et langue > Langue > Ajouter une langue > Français > cocher "Reconnaissance vocale"
python download_model.pycopy .env.example .env
notepad .envRemplissez:
INWORLD_KEY=votre_jwt_key
INWORLD_SECRET=votre_jwt_secret
INWORLD_VOICE_ID=votre_voice_id
INWORLD_MODEL_ID=inworld-tts-1.5-miniPour trouver votre Voice ID:
python src/main.py list-voices:: Lister les périphériques audio
python src/main.py list-devices
:: Lancer (remplacez X par l'ID de CABLE Input)
python src/main.py run --output-device X
:: Avec Whisper (plus précis)
python src/main.py run --stt whisper --output-device X
:: Avec Windows SAPI (rapide, pas de modèle à télécharger)
python src/main.py run --stt windows --output-device X- Ouvrez Discord → Paramètres → Voix & Vidéo
- Périphérique d'entrée: CABLE Output
- Parlez - votre voix est maintenant transformée!
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"brew install python@3.12 portaudio ffmpegTéléchargez: https://existential.audio/blackhole/
Installez BlackHole 2ch.
git clone https://github.com/votre-user/TTS-inworldAPI.git
cd TTS-inworldAPI
# Créer l'environnement virtuel avec Python 3.12
/opt/homebrew/bin/python3.12 -m venv venv
# Activer le venv
source venv/bin/activate
# Installer les dépendances
pip install -r requirements.txt
pip install setuptools
# (Optionnel) Pour utiliser Whisper au lieu de Vosk
pip install faster-whisper torch
# (Optionnel) Pour le mode push-to-talk
pip install pynputpython download_model.pySi erreur SSL:
mkdir -p models && cd models
curl -k -O https://alphacephei.com/vosk/models/vosk-model-small-fr-0.22.zip
unzip vosk-model-small-fr-0.22.zip
cd ..cp .env.example .env
nano .env # ou utilisez votre éditeur préféréRemplissez:
INWORLD_KEY=votre_jwt_key
INWORLD_SECRET=votre_jwt_secret
INWORLD_VOICE_ID=votre_voice_id
INWORLD_MODEL_ID=inworld-tts-1.5-miniPour trouver votre Voice ID:
python src/main.py list-voices# Lister les périphériques audio
python src/main.py list-devices
# Lancer (remplacez X par l'ID de BlackHole 2ch)
python src/main.py run --output-device X
# Avec Whisper (plus précis)
python src/main.py run --stt whisper --whisper-model small --output-device XNote : Le moteur Windows SAPI (
--stt windows) n'est pas disponible sur macOS.
- Ouvrez Discord → Paramètres → Voix & Vidéo
- Périphérique d'entrée: BlackHole 2ch
- Parlez - votre voix est maintenant transformée!
Pensez toujours à activer le venv avant de lancer une commande :
- Windows :
venv\Scripts\activate- macOS/Linux :
source venv/bin/activate
Affiche tous les périphériques audio (entrées et sorties) avec leur ID, nom et sample rate. Utile pour trouver l'ID de votre micro et de votre câble virtuel.
python src/main.py list-devicesInterroge l'API Inworld et affiche toutes les voix disponibles avec leur Voice ID. Nécessite les clés API dans .env.
python src/main.py list-voicesEnvoie un texte à l'API Inworld et sauvegarde l'audio généré. Permet de vérifier que la connexion API fonctionne.
# Sauvegarder dans un fichier
python src/main.py test-tts --text "Bonjour le monde"
# Sauvegarder et jouer directement
python src/main.py test-tts --text "Bonjour" --play
# Avec une voix spécifique (sinon utilise .env)
python src/main.py test-tts --text "Hello" --voice mon_voice_id --play
# Changer le fichier de sortie
python src/main.py test-tts --text "Test" --output mon_fichier.wav| Option | Description | Défaut |
|---|---|---|
--text TEXT |
Texte à synthétiser | "Hello from Inworld voice changer" |
--voice ID |
Voice ID Inworld | valeur de .env |
--output FILE |
Fichier de sortie | output.wav |
--play |
Jouer l'audio après génération | non |
Capture le micro et sauvegarde chaque segment de parole détecté dans un fichier WAV. Utile pour vérifier que le VAD détecte bien votre voix.
# Avec le micro par défaut
python src/main.py test-vad
# Avec un micro spécifique
python src/main.py test-vad --input-device 2
# Sauvegarder dans un dossier spécifique
python src/main.py test-vad --output-dir mes_enregistrements| Option | Description | Défaut |
|---|---|---|
--input-device ID |
ID du micro | défaut système |
--output-dir DIR |
Dossier de sauvegarde | recordings/ |
Transcrit un fichier WAV avec Vosk. Utile pour tester la qualité de transcription sans micro.
python src/main.py test-stt --file recordings/utterance_0.wav
# Avec un modèle Vosk spécifique
python src/main.py test-stt --file audio.wav --model models/vosk-model-fr-0.22| Option | Description | Défaut |
|---|---|---|
--file FILE |
Fichier WAV à transcrire (obligatoire) | - |
--model PATH |
Chemin vers le modèle Vosk | models/vosk-model-small-fr-0.22 |
Commande principale. Démarre le pipeline complet : capture micro -> VAD -> STT -> TTS Inworld -> sortie audio.
# Basique avec Vosk (défaut)
python src/main.py run
# Avec périphériques spécifiques
python src/main.py run --input-device 1 --output-device 3
# Avec Whisper (plus précis, plus lent)
python src/main.py run --stt whisper
# Whisper modèle small (meilleure qualité)
python src/main.py run --stt whisper --whisper-model small
# Avec Windows SAPI (Windows uniquement, rapide, pas de modèle)
python src/main.py run --stt windows
# En anglais
python src/main.py run --stt whisper --language en
# VAD moins agressif (capte plus de sons, y compris du bruit)
python src/main.py run --vad-aggressiveness 1
# Push-to-Talk (maintenir la touche pour parler)
python src/main.py run --ptt --output-device X
# Push-to-Talk avec touche F1
python src/main.py run --ptt --ptt-key f1 --output-device X| Option | Description | Défaut |
|---|---|---|
--input-device ID |
ID du microphone | défaut système |
--output-device ID |
ID de la sortie (câble virtuel) | défaut système |
--voice ID |
Voice ID Inworld | valeur de .env |
--stt ENGINE |
Moteur STT : vosk, whisper ou windows |
vosk |
--model PATH |
Chemin vers le modèle Vosk | models/vosk-model-small-fr-0.22 |
--whisper-model SIZE |
Modèle Whisper : tiny, base, small, medium |
base |
--language CODE |
Langue : fr, en, es, de, etc. |
fr |
--vad-aggressiveness N |
Filtrage bruit 0-3 (0=laisse passer, 3=strict) | 3 |
--ptt |
Active le mode push-to-talk | désactivé |
--ptt-key KEY |
Touche PTT : space, f1-f4, ctrl_r, caps_lock |
space |
Push-to-Talk : La touche et l'activation peuvent aussi se configurer dans
.envavecPTT_ENABLED=trueetPTT_KEY=space. Le flag--ptten CLI prend la priorité sur.env.
| Moteur | Précision | Vitesse | GPU | Taille | Plateforme |
|---|---|---|---|---|---|
| Vosk | ~85-90% | Très rapide | Non | 41 MB | Toutes |
| Whisper tiny | ~90% | Rapide | Recommandé | 75 MB | Toutes |
| Whisper base | ~93% | Moyen | Recommandé | 150 MB | Toutes |
| Whisper small | ~96% | Lent sur CPU | Oui | 500 MB | Toutes |
| Windows SAPI | ~90-95% | Rapide | Non | 0 MB (intégré) | Windows |
Recommandation :
- Windows sans GPU : utilisez Windows SAPI (
--stt windows) - rien à télécharger, bonne qualité - Sans GPU (multi-plateforme) : utilisez Vosk
- Avec GPU NVIDIA : utilisez Whisper small
# Vérifiez que le venv est activé
# Windows:
venv\Scripts\activate
# macOS:
source venv/bin/activatebrew install portaudio
pip uninstall pyaudio
pip install pyaudiopip install setuptools- Vérifiez vos clés dans
.env - Utilisez JWT Key et JWT Secret (pas le Basic Base64)
- Ajoutez
INWORLD_MODEL_ID=inworld-tts-1.5-minidans.env
- C'est un feedback: le micro capte les haut-parleurs
- Solution: utilisez un casque ou le câble virtuel en sortie
- Utilisez Vosk au lieu de Whisper
- Vérifiez votre connexion internet
- Whisper nécessite Python 3.11 ou 3.12
- Créez un venv avec la bonne version de Python
src/
├── main.py # CLI principale
├── core/
│ └── audio.py # Capture micro, sortie audio
├── processing/
│ ├── vad.py # Détection d'activité vocale
│ └── stt.py # Transcription (Vosk/Whisper/Windows SAPI)
├── client/
│ └── inworld.py # API Inworld TTS
└── controller/
└── orchestrator.py # Pipeline principal
MIT
- Inworld AI - Synthèse vocale
- Vosk - STT léger
- Faster-Whisper - STT précis
- SpeechRecognition - Wrapper Python pour Windows SAPI
- pynput - Listener clavier pour le push-to-talk