GUIDE

Synthèse vocale dans PowerShell avec des voix naturelles

PowerShell sait parler sans rien installer : Windows fournit le synthétiseur System.Speech, et quelques lignes suffisent pour qu’un script annonce la fin d’une sauvegarde ou l’échec d’une compilation. Ce sont toutefois les voix robotiques que Windows garde depuis des années, et elles varient d’une machine à l’autre.

Le moteur gratuit SuperClonica fait tourner des voix neuronales naturelles sur votre ordinateur ou serveur, et PowerShell l’atteint en un seul appel Invoke-RestMethod. Ce guide montre les deux méthodes et quand choisir l’une ou l’autre.

Deux façons de parler depuis PowerShell

Pour une alerte rapide en mots, System.Speech suffit ; pour tout ce que les gens écoutent, prenez une voix naturelle.

  • System.Speech : intégré à Windows ; chargez-le avec Add-Type -AssemblyName System.Speech et utilisez la classe SpeechSynthesizer.
  • Il fonctionne hors ligne sans rien d’autre, mais les voix sonnent robotiques et dépendent des voix Windows installées.
  • SuperClonica : un serveur HTTP local avec des voix naturelles, des voix de personnages et votre propre voix entraînée.
  • Il parle 31 langues ; le chinois n’est pas encore pris en charge.

Écouter les voix gratuitement

Sur la page de n’importe quelle voix, saisissez la phrase que dira votre script, 30 à 100 caractères, choisissez la langue et cliquez sur le bouton de synthèse. En quelques secondes, vous entendez la différence, sans compte.

Appeler un serveur SuperClonica local

Windows PowerShell 5.1 envoie un corps texte dans le mauvais encodage, d’où les octets UTF-8 ci-dessus, et lit un .ps1 sans BOM comme de l’ANSI : enregistrez les scripts avec des accents en UTF-8 avec BOM.

  • Lancez le serveur une fois, sous Windows avec Docker Desktop : docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu.
  • Vocalisez une phrase depuis PowerShell : $json = @{text='La sauvegarde de nuit est terminée'; voice='F1'; lang='fr'} | ConvertTo-Json; Invoke-RestMethod -Method Post -Uri http://localhost:8000/synthesize -ContentType 'application/json' -Body ([Text.Encoding]::UTF8.GetBytes($json)) -OutFile hello.wav.
  • Le fichier est un WAV mono 16 bits utilisable par n’importe quel lecteur, logiciel de montage ou script.
  • Définissez SUPERCLONICA_API_KEY sur le serveur et ajoutez -Headers @{Authorization="Bearer VOTRE-CLÉ"} si d’autres machines peuvent l’atteindre.

Des scripts qui parlent

Jouez le WAV tout de suite avec (New-Object Media.SoundPlayer "hello.wav").PlaySync(), ou gardez les annonces pour plus tard. Une tâche planifiée peut lire un résumé du matin, un job de CI annoncer une compilation ratée sur le haut-parleur du bureau, et une boucle sur un CSV vocaliser des centaines de messages en une passe. Une phrase courte prend bien moins d’une seconde sur un processeur ordinaire.

Quand System.Speech suffit

System.Speech suffit quand la voix doit seulement être comprise, pas appréciée : une alerte rapide pendant que vous êtes au bureau, un test d’accessibilité, une machine sans Docker. Utilisez SuperClonica quand l’audio quitte votre bureau, dans des vidéos, des messages, des annonces ou des produits, ou quand la même voix doit sonner pareil sur chaque machine.