Du texte à la voix dans votre jeu
Le guide pas à pas de VoiceDirector pour Unreal Engine 5.5-5.8. Importez vos dialogues, créez des prises, choisissez une interprétation et publiez le son pour votre jeu.
Les boutons et champs conservent leurs noms anglais dans le plugin. Les actions sont expliquées en français.
À quoi sert VoiceDirector ?
#VoiceDirector organise la production des dialogues dans l’éditeur Unreal. Vous fournissez le texte, choisissez une voix ou importez un enregistrement, puis décidez quelle prise sera utilisée dans le jeu. Le résultat est un asset audio Unreal standard SoundWave, ou aussi un DialogueWave lorsque vous configurez un contexte.
| Onglet | Utilisation |
|---|---|
| Lines | Importer le script, choisir une réplique, écouter et approuver les prises. |
| Voices | Attribuer une voix à chaque personnage et langue. |
| Jobs | Suivre la génération et ouvrir la nouvelle prise. |
| Publish | Vérifier et appliquer les changements du son du jeu. |
| Settings | Configurer connexions, sortie, DataTable et limites. |
Une réplique est une entrée du script ; une variante, sa version dans une langue ; une prise, un enregistrement. Plusieurs prises restent disponibles sans remplacer immédiatement le son du jeu.
Vous pouvez commencer avec un WAV existant. L’IA est facultative. VoiceDirector n’écrit pas les dialogues, ne traduit pas les textes, ne clone pas les voix et ne génère pas de parole pendant le jeu.
Installation et ouverture
#Créer un premier projet Unreal
- Ouvrez Epic Games Launcher > Unreal Engine > Library et lancez UE 5.5, 5.6, 5.7 ou 5.8.
- Choisissez Games > Third Person, puis Blueprint et Desktop. Un Blueprint est un programme visuel constitué de nœuds reliés ; aucun C++ n’est nécessaire ici.
- Choisissez un nom et un dossier avec de l’espace libre, cliquez sur Create et attendez l’éditeur.
Ajouter le plugin
Utilisez la version compilée correspondant à votre UE sur Windows x64. Pour une installation Fab, ajoutez le plugin à la bonne version du moteur depuis la bibliothèque du Launcher. Pour une installation par projet, fermez l’éditeur et placez tout le dossier du plugin dans YourProject/Plugins/VoiceDirector/. Créez Plugins si nécessaire.
YourProject/Plugins/VoiceDirector/VoiceDirector.upluginNe doublez pas le dossier VoiceDirector. Un projet uniquement Blueprint a besoin du paquet compilé et de tous ses fichiers de compilation fournis. Les sources seules nécessitent un compilateur C++ et une compilation.
- Rouvrez le projet, allez dans Edit > Plugins, trouvez VoiceDirector et activez-le.
- Redémarrez l’éditeur si demandé.
- Ouvrez Tools > VoiceDirector.
Installez une seule copie, dans le moteur ou le projet. Deux copies peuvent empêcher l’ouverture du projet.
Votre première réplique jouable
#Cette leçon utilise un enregistrement fourni, sans configuration de Kokoro ou ElevenLabs.
Une première réplique prête à importer
Une ligne CSV et un vrai WAV disant « Keep your voice down. ». Cet exemple a été généré localement avec Kokoro. Aucun serveur ni compte n’est nécessaire pour l’importer.
- Dans Settings, réglez Output Content folder (/Game/...) sur
/Game/VoiceDirector/Audio, puis Save Output Folder./Gamedésigne le dossier Content du projet, pas un disque Windows. - Téléchargez les deux fichiers d’exemple dans un dossier facile à retrouver.
- Dans Lines > Import script, réglez Import SourceId sur
MyScript, cliquez sur Import CSV et choisissez le CSV. - Vérifiez l’aperçu et cliquez sur Apply Import. Laissez Full snapshot désactivé.
- Sélectionnez
L-001, langueen. Cliquez sur Import WAV et choisissez l’exemple. - Au besoin, cliquez sur Select take, puis Play. Vous entendrez « Keep your voice down. ». Stop arrête la lecture.
- Cliquez sur Approve take.
- Ouvrez Publish ou Review publishing. Cliquez sur Refresh Preview, cochez le nouveau SoundWave et cliquez sur Apply Selected Approved.
- Ouvrez Content Drawer avec Ctrl + Space, puis Content > VoiceDirector > Audio. Passez à la lecture dans le jeu.
Dans une fenêtre étroite, ouvrez Sources & filters pour accéder à l’import et Take review pour les prises. Vous pouvez aussi double-cliquer sur la réplique. Les noms d’assets VD_... sont normaux ; Copy copie leur chemin.
Écrire et importer le script
#Écrivez les répliques dans un tableur ou un éditeur et exportez un CSV UTF-8 séparé par des virgules.
LineId,CharacterId,Culture,Text,Context
L-001,rowan,en,Keep your voice down.,At the city gate| Colonne | Signification |
|---|---|
| LineId | Identifiant stable de réplique, à conserver lors des corrections. |
| CharacterId | Identifiant stable du personnage pour son attribution de voix. |
| Culture | Code de langue : en, fr, ru, etc. |
| Text | Dialogue affiché, obligatoire. |
| Context | Indication de scène ou d’interprétation, facultative. |
| SpokenText | Texte précis à prononcer ; vide, utilise Text. |
| SourceNamespace / SourceKey / SourceRevision | Métadonnées de provenance facultatives. |
Dans Lines > Import script, choisissez un Import SourceId stable, puis Import CSV. Vérifiez Added / Changed / Archived / Unchanged et appliquez avec Apply Import. L’aperçu seul ne modifie rien.
Réimportez avec les mêmes SourceId et LineId pour conserver identités et prises. La paire LineId/Culture doit être unique par source ; un LineId peut exister dans plusieurs langues avec le même personnage.
Full snapshot archive les répliques absentes de cette source dans les langues représentées. Activez-le uniquement pour remplacer un ensemble complet. Sinon les absentes restent. L’archivage ne supprime pas les enregistrements.
Mettez les cellules contenant une virgule entre guillemets et doublez les guillemets internes : "Il dit ""Attends.""". Un export avec points-virgules doit être reconverti. Limites : 16 MiB et 10 000 lignes.
Importer une DataTable Unreal
#Une DataTable stocke des lignes dans Unreal. Sélectionnez-la directement, sans préparer de CSV ni de JSON.
- Dans Settings > Script DataTable, sélectionnez l’asset.
- Associez les colonnes à LineId, CharacterId, Culture, Text et éventuellement Context, SpokenText. Types acceptés : String, Name et Text.
@RowNameutilise le nom de ligne comme LineId. - La source est déterminée automatiquement par le chemin de la DataTable. Cliquez sur Preview DataTable Import.
- Vérifiez les changements dans Lines et cliquez sur Apply Import.
Créer une table
Dans Content Browser, créez une Blueprint Structure. Ajoutez les champs String LineId, CharacterId, Culture et les champs Text Text, Context, SpokenText. Enregistrez, créez une Data Table avec cette structure et remplissez une ligne avec l’exemple. Maximum : 10 000 lignes.
VoiceDirectorScriptRow est aussi disponible pour l’import dans l’éditeur. Pour une table utilisée par le jeu empaqueté, préférez votre propre structure d’exécution. Les SoundWave publiés sont des assets de jeu standards.
Attribuer une voix au personnage
#Les voix viennent du catalogue Kokoro ou ElevenLabs. L’attribution lie une voix à CharacterId + Culture ; elle ne crée pas de modèle vocal.
- Configurez un fournisseur avec les sections suivantes.
- Dans Voices, choisissez-le et cliquez sur Check Connection / List Voices. Cela lit le catalogue sans synthèse.
- Saisissez CharacterId et Culture du script, choisissez Voice et Model, ajustez les options et cliquez sur Save Voice Assignment.
- Dans Lines, sélectionnez une variante et cliquez sur Generate new take.
Exemple : rowan, en, voix Kokoro af_heart, modèle kokoro. Utilisez une voix compatible avec la langue. Un WAV importé n’exige aucune attribution. Une modification agit sur les futures générations ; les anciennes prises gardent leurs réglages.
Configurer Kokoro localement
#Kokoro-FastAPI fonctionne séparément sur votre ordinateur ou un serveur accessible. VoiceDirector ne l’installe ni ne le démarre. Prévoyez de l’espace pour les dépendances et modèles.
- Suivez l’installation officielle de Kokoro-FastAPI v0.9.0. Pour Windows CPU, installez les prérequis, téléchargez le modèle et lancez
.start-cpu.ps1dans son dossier. - Attendez le chargement. L’installation locale standard répond à
http://127.0.0.1:8880/docs. - Dans Settings, réglez Kokoro-FastAPI base URL sur
http://127.0.0.1:8880/v1, puis Save Settings. - Dans Voices, chargez le catalogue et commencez avec
af_heart,kokoro,enet vitesse1.0.
Vitesse Kokoro : 0.5-2.0. Les langues dépendent du modèle et de la voix. Les textes et WAV russes sont importables, mais cette intégration Kokoro ne génère pas de russe ; utilisez une autre source adaptée.
Le serveur doit fonctionner pendant la génération. Le son déjà publié reste jouable sans serveur.
Configurer ElevenLabs
#Il faut votre compte ElevenLabs, des crédits et une clé autorisée. La génération consomme votre quota. Consultez les tarifs avant un grand lot.
- Dans le compte, ouvrez Developers > API Keys. Créez une clé avec Voices: Read et Text to Speech: Access. Si l’accès aux modèles est restreint, autorisez votre modèle.
- Dans Windows, recherchez Modifier les variables d’environnement de votre compte. Sous les variables utilisateur, cliquez sur Nouvelle : nom
VOICEDIRECTOR_ELEVENLABS_KEY, valeur votre clé. Validez les fenêtres. - Fermez entièrement Unreal et Epic Games Launcher, y compris son icône de notification, puis relancez-les.
- Dans Voices, sélectionnez ElevenLabs, cliquez sur Check Connection / List Voices et choisissez une voix et un modèle accessibles.
- Enregistrez l’attribution et générez d’abord une courte réplique.
La clé reste dans la variable d’environnement. Settings n’a pas de champ de clé. Ne la placez pas dans un script, un asset, une capture ou un message au support.
Le plugin demande pcm_24000, puis construit un WAV PCM. L’accès au catalogue ne garantit pas celui à ce format. Vitesse : 0.7-1.2 ; style et speaker boost uniquement si le modèle les accepte.
Modifiez une clé existante via More Actions (...) > Edit. Voir le guide officiel. Résolvez droits, quota ou accès régional auprès du fournisseur avant de réessayer.
Génération et file d’attente
#- Dans Lines, choisissez des variantes avec Ctrl ou Shift pour une sélection multiple.
- Cliquez sur Generate new take pour une variante ou Generate selected pour plusieurs. Vérifiez fournisseur, requêtes, caractères et estimation avant confirmation.
- Suivez Jobs. Pause bloque les nouveaux envois, Resume les reprend, Cancel arrête le reste.
- Pour Completed, cliquez sur Open take. La prise précise s’ouvre dans Lines, même si des filtres la masquaient.
Une prise terminée doit encore être écoutée, approuvée et publiée. Les diagnostics sont copiables. Maximum : 1 000 variantes par lot et 5 000 caractères par requête TTS.
UnknownRemoteOutcome signifie qu’une requête envoyée peut avoir abouti sans réponse reçue. Consultez l’historique du fournisseur avant de régénérer. Annuler ne rappelle pas une requête déjà envoyée.
Écouter et choisir une prise
#Le panneau présente les prises, leur texte enregistré, origine, date, durée et une forme d’onde calculée sur le WAV réel. Une autre réplique affiche son propre historique.
| État | Signification |
|---|---|
| Selected | Prise examinée, sans modifier le son du jeu. |
| Approved | Interprétation approuvée pour la variante. |
| In game / publiée | Prise présente dans les assets jusqu’à la prochaine publication appliquée. |
| Current / Stale / Unknown | Correspondance avec les données actuelles. Une modification du texte ou de la voix peut rendre une prise ancienne. |
| Human / AI | Import WAV ou génération par le fournisseur. Un WAV importé peut avoir été généré ailleurs. |
Utilisez Select take, Play, Stop puis Approve take. Toutes les prises restent comparables. L’affichage de l’onde est ajusté pour la lisibilité ; comparez le volume à l’oreille.
Importer votre enregistrement
Sélectionnez une variante puis Import WAV. Format : RIFF WAV little-endian, PCM 16 bits, 24 ou 48 kHz, mono ou stéréo, maximum 64 MiB. Convertissez MP3, WAV flottant et PCM 24 bits avant import.
More line actions propose verrouillage, validation de traduction, renommage à ID stable et contexte. Déverrouillez avant de remplacer l’approbation. Pour une nouvelle prise identique, activez Create another take even if input matches.
Publier les assets audio
#Seule la publication modifie le son utilisé par le jeu. Importer, générer et approuver laisse les assets existants en place.
- Ouvrez Publish > Refresh Preview.
- Vérifiez chemins et actions : Create, création ; Update, mise à jour ; Conflict, problème à résoudre.
- Cochez les lignes approuvées souhaitées et leurs dépendances de SoundWave de base ou de dialogue.
- Cliquez sur Apply Selected Approved et inspectez le résultat. Copy copie le chemin.
Les assets modifiés extérieurement, non sauvegardés ou en lecture seule ne sont pas écrasés automatiquement. Corrigez le conflit puis actualisez. Une prise approuvée ancienne exige l’option explicite pour stale takes ; comparez d’abord son texte et son audio.
Une prise approuvée et la prise déjà dans le jeu peuvent être différentes. Publish applique ce changement.
Lire la réplique dans le jeu
#- Ouvrez le niveau, puis Blueprints > Open Level Blueprint dans la barre principale.
- Trouvez Event BeginPlay ; sinon ajoutez-le via clic droit et recherche.
- Tirez depuis sa broche blanche d’exécution et créez Play Sound 2D.
- Dans Sound, sélectionnez le SoundWave publié.
- Cliquez sur Compile, sauvegardez Blueprint et niveau, puis Play dans l’éditeur.
Le son joue au début du niveau. Pour une voix située dans l’espace, utilisez les nœuds audio spatialisés d’Unreal et votre logique de dialogue. Référencez l’asset dans le jeu pour l’inclure dans l’empaquetage.
La lecture ne nécessite ni modules éditeur, ni clé, ni serveur TTS. Voir Play Sound 2D chez Epic.
Langues et contextes de dialogue
#Les traductions conservent LineId et CharacterId avec une autre Culture : L-001,rowan,en et L-001,rowan,fr. Fournissez vos traductions et un enregistrement ou une voix adaptée.
La culture source par défaut est en. Publiez le SoundWave de base avec les nouvelles variantes localisées. Les assets suivent /Game/L10N/<culture>/.... Référencez l’asset de base ; la culture active d’Unreal choisit la localisation.
Dans Project Settings > Packaging, incluez les cultures nécessaires et les données d’internationalisation adaptées. La langue de l’éditeur seule ne définit pas celle des dialogues du jeu.
DialogueWave
Créez des assets DialogueVoice pour le locuteur et les auditeurs éventuels. Dans More line actions, choisissez Dialogue speaker, les auditeurs et un Context key stable, puis Save Dialogue Context. Publiez SoundWave et DialogueWave nécessaires ensemble.
DialogueVoice est une métadonnée, pas un modèle vocal. Un contexte par LineId ; utilisez des IDs distincts pour d’autres contextes.
Recevoir les prises des comédiens
#- Préparez le script et cliquez sur Settings > Export Actor Manifest CSV.
- Envoyez le manifeste au comédien en conservant IDs et noms WAV demandés. Demandez le format compatible.
- Utilisez Choose Actor Manifest pour le manifeste original et Choose Returned WAV Folder pour le dossier reçu.
- Cliquez sur Preview Actor Matching. Vérifiez prises prêtes, absentes et ambiguës ; corrigez les fichiers d’abord.
- Sélectionnez les lignes prêtes et Import Selected Actor WAVs, puis écoutez, approuvez et publiez.
Le texte enregistré reste celui du manifeste d’origine. Si le script a changé entre-temps, la prise peut être ancienne : comparez les mots.
Réglages et limites
#Settings regroupe URL Kokoro, sortie, DataTable, outils de comédiens et limites. Save Settings enregistre connexion et génération ; Save Output Folder, le dossier.
Définissez des limites de requêtes et de caractères. Pour une estimation USD, saisissez le tarif par 1 000 caractères. Tarif -1 : inconnu ; budget USD -1 : pas de plafond monétaire. Un plafond avec tarif inconnu bloque la génération cloud jusqu’au calcul possible.
L’estimation dépend du tarif saisi. Ce n’est ni le solde des crédits ni un prix final garanti. Tenez aussi compte du quota du fournisseur.
Ce sont des préférences locales. Le fonctionnement normal ne demande pas d’éditer du JSON.
Sauvegarder et récupérer le travail
#Sauvegardez le projet entier :
| Dossier | Contenu |
|---|---|
| Content/ | Assets publiés et DataTables sources. |
| VoiceDirector/ | Script, historique des prises et WAV sources conservés. |
| Saved/VoiceDirector/ | Réglages locaux, journaux et sauvegardes de récupération. |
Un SoundWave seul ne restitue pas tout l’historique. Un seul éditeur écrit par projet ; une seconde instance peut être en lecture seule. Fermez l’autre instance, puis redémarrez l’éditeur actuel pour obtenir l’accès en écriture. Ne supprimez pas un verrou encore utilisé.
Après interruption, consultez Jobs. Les requêtes envoyées à résultat inconnu ne sont pas répétées automatiquement ; vérifiez le fournisseur.
Dans Publish, utilisez Review interrupted publication pour une opération détectée ou Restore From Publish Journal avec Saved/VoiceDirector/Publish/<batch>/Journal.json du projet. Lisez la confirmation. Gardez journaux et sauvegardes jusqu’à résolution. Les modifications externes deviennent des conflits ; des assets nouvellement créés peuvent rester à examiner. Si nécessaire, conservez une copie et contactez le support.
Résoudre un problème
#| Symptôme | Vérification |
|---|---|
| Plugin absent | Edit > Plugins, redémarrage, Tools ; version UE adaptée et une seule copie. |
| Bouton désactivé | Bonne sélection, verrouillage, lecture seule, import ou file active ; approbation requise pour publier. |
| CSV refusé | UTF-8, virgules, en-têtes exacts, IDs remplis et paires LineId/Culture uniques ; lire le diagnostic. |
| Kokoro vide | Serveur actif, /docs accessible, URL sauvegardée avec /v1 ; recharger le catalogue. |
| ElevenLabs refuse | Variable héritée après relance, permissions Voices: Read et Text to Speech: Access, modèle/format, crédits et accès API. |
| HTTP 429 | Attendre selon le fournisseur, réduire le lot et réessayer manuellement. |
| Pas d’onde ou de son | WAV source présent et PCM compatible, sortie audio et volume ; restaurer un fichier absent depuis la sauvegarde. |
| Résultat inconnu | Consulter l’historique fournisseur avant une nouvelle génération. |
| Conflict | Diagnostic et chemin ; corriger modifications externes, non sauvegardées ou lecture seule, actualiser. |
| Jeu muet | Broches reliées, Sound correct, compilation et sauvegarde, volume, asset et culture inclus dans le jeu empaqueté. |
Questions fréquentes
#Faut-il payer pour la première leçon ?
Aucun compte fournisseur pour importer CSV/WAV ou lire les assets. ElevenLabs utilise ses tarifs et crédits. Kokoro local nécessite l’installation du serveur et des modèles.
D’où viennent texte et voix ?
Vous fournissez le texte. Le son vient des WAV ou du fournisseur. VoiceDirector organise les prises sans écrire une histoire ni entraîner une voix.
Faut-il du C++ ou du JSON ?
Le paquet compilé fonctionne dans un projet Blueprint. Réglages, voix et DataTable passent par l’interface. Compiler les sources est un autre parcours.
Une prise remplace-t-elle immédiatement le son ?
Non. Écoutez, approuvez, puis appliquez explicitement la publication. Avant cela, l’ancienne prise publiée reste utilisée.
Le changement de langue conserve-t-il ma place ?
Oui, le sélecteur garde la section actuelle. Les noms des boutons restent ceux du plugin en anglais.
Le jeu empaqueté génère-t-il de la parole ?
VoiceDirector 1.0.0 est un outil d’éditeur. Le jeu lit les assets publiés ; il n’y a pas de TTS à l’exécution.
Obtenir de l’aide
#Écrivez à nexusforgeuesupport@gmail.com avec versions VoiceDirector/Unreal, fournisseur, étapes, message d’erreur et capture de l’onglet concerné.
N’envoyez pas de clé API. Un petit exemple partageable est préférable à un projet privé complet. Conservez une copie avant d’examiner une récupération.