Synthèse vocale dans Unity : répliques et voix en jeu
Un jeu Unity a besoin de répliques doublées bien avant d’avoir des comédiens : pour les prototypes, les dialogues provisoires, les tutoriels et les petites équipes qui ne réserveront jamais de studio. La synthèse vocale donne une voix à chaque réplique le jour où elle est écrite et la refait en quelques secondes quand le script change.
Le moteur gratuit SuperClonica vocalise hors ligne sur un processeur ordinaire. Ce guide montre les deux façons de l’utiliser avec Unity, clips générés à l’avance et voix en jeu depuis C#, et quelles voix vous pouvez publier.
Deux façons de donner une voix à un jeu Unity
L’ordinateur d’un joueur ne fera pas tourner de serveur vocal, un jeu solo publié doit donc embarquer les clips.
- Clips générés à l’avance : vocalisez chaque réplique pendant le développement et livrez des fichiers WAV comme des AudioClips ordinaires. Rien de plus ne tourne sur l’ordinateur du joueur.
- Voix en jeu : le jeu envoie du texte à un serveur SuperClonica et joue la réponse. Idéal pour les outils d’éditeur, les prototypes et les jeux en ligne avec leur propre serveur.
- Dans les deux cas, la synthèse tourne sur un processeur ordinaire, sans frais par caractère.
- Le modèle parle 31 langues ; le chinois n’est pas encore pris en charge.
Choisir des voix gratuitement
Sur la page de n’importe quelle voix, saisissez une réplique de votre PNJ, 30 à 100 caractères, choisissez la langue et cliquez sur le bouton de synthèse. En quelques secondes, vous entendez si la voix convient au personnage, sans compte.
Générer les dialogues à l’avance
Le même texte, la même voix et le même seed donnent toujours le même audio : ne régénérez que les répliques modifiées et versionnez le script, pas l’audio.
- Installez le moteur : python -m pip install superclonica-cpu.
- Gardez les répliques dans un tableau avec un identifiant, une langue et le texte.
- Un court script le parcourt : superclonica --text "Bienvenue au village" --voice npc.json --lang fr --output Assets/Audio/Lines/npc_greeting_01.wav.
- Unity importe tout seul les nouveaux WAV placés dans Assets ; utilisez Decompress On Load pour les répliques courtes et Streaming pour les longues narrations.
La voix en jeu depuis C#
Lancez le serveur sur n’importe quel processeur : docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu. Puis appelez-le avec UnityWebRequest, intégré, sans paquet : [Serializable] class Line { public string text; public string voice; public string lang; } — puis, dans une coroutine : var req = new UnityWebRequest("http://localhost:8000/synthesize", "POST"); req.uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(JsonUtility.ToJson(new Line { text = "Bon retour parmi nous", voice = "F1", lang = "fr" }))); req.downloadHandler = new DownloadHandlerAudioClip(req.url, AudioType.WAV); req.SetRequestHeader("Content-Type", "application/json"); yield return req.SendWebRequest(); source.PlayOneShot(DownloadHandlerAudioClip.GetContent(req)); Une phrase courte prend environ une demi-seconde sur un processeur ; mettez en cache les clips des répliques qui reviennent. N’embarquez jamais une clé d’API dans le build du jeu, d’où les joueurs peuvent l’extraire : laissez votre propre serveur de jeu appeler le serveur vocal.
Les voix que vous pouvez publier
Pour les prototypes, n’importe quelle voix du catalogue convient. Pour un jeu publié, utilisez une voix dont vous avez les droits : les dix voix de base du modèle, M1 à M5 et F1 à F5, votre propre voix entraînée dans le studio SuperClonica à partir d’un enregistrement propre de 5 à 10 secondes d’un comédien consentant, sur un ordinateur doté d’une carte graphique NVIDIA, ou une voix commandée sur la bourse. Les voix de personnages faites par des fans sont pour les parodies et les jeux de fans, pas pour les jeux commerciaux.