Existe-t-il un moyen d'utiliser l'utilitaire MS Speech à partir de la ligne de commande? Je peux le faire sur un Mac, mais je n'y trouve aucune référence sous Windows XP.
Merci.
Je ne pense pas qu'il existe un outil en ligne de commande pour cela, mais quelqu'un en a écrit un:
http://krolik.net/post/Say-exe-a-simple-command-line-text-to-speech-program-for-Windows.aspx
Mes 2 cents sur le sujet, les lignes de commande en ligne:
sur Win en utilisant PowerShell.exe
PowerShell -Command "Add-Type –AssemblyName System.Speech; (New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak('hello');"
sur Win en utilisant mshta.exe
mshta vbscript:Execute("CreateObject(""SAPI.SpVoice"").Speak(""Hello"")(window.close)")
sous OSX en utilisant say
say "hello"
Ubuntu Desktop (> = 2015) en utilisant natif spd-say
spd-say "hello"
sur tout autre Linux
sur Raspberry Pi, Win, OSX en utilisant Node-Red
Il y a un joli programme open source qui fait ce que vous demandez sous Windows appelé Peter's Text to Speech disponible ici: http://jampal.sourceforge.net/ptts.html
Il contient un binaire appelé ptts.exe qui prononcera du texte à partir de l'entrée standard, vous pouvez donc l'exécuter comme ceci:
echo hello there | ptts.exe
Alternativement, vous pouvez utiliser le script VBS à trois lignes suivant pour obtenir des TTS de base similaires:
'say.vbs
set s = CreateObject("SAPI.SpVoice")
s.Speak Wscript.Arguments(0), 3
s.WaitUntilDone(1000)
Et vous pouvez invoquer cela à partir de la ligne de commande comme ceci:
cscript say.vbs "hello there"
Si vous suivez la route des scripts, vous voudrez probablement trouver des exemples de code plus complets avec un délai d'attente variable et une gestion des erreurs.
J'espère que ça aide.
Il existe également une méthode PowerShell:
Créez un fichier appelé speak.ps1
param([string]$inputText)
Add-Type –AssemblyName System.Speech
$synth = New-Object System.Speech.Synthesis.SpeechSynthesizer
$synth.Speak($inputText);
Ensuite, vous pouvez l'appeler
.\speak.ps1 "I'm sorry Dave, I'm afraid I can't do that"
Si vous ne trouvez pas de commande, vous pouvez toujours envelopper le System.Speech.Synthesis.SpeechSynthesizer de .Net 3.0 (N'oubliez pas de faire référence à "System.Speech")
using System.Speech.Synthesis;
namespace Talk
{
class Program
{
static void Main(string[] args)
{
using (var ss = new SpeechSynthesizer())
foreach (var toSay in args)
ss.Speak(toSay);
}
}
}
rem The user decides what to convert here
:input
cls
echo Type in what you want the computer to say and then press the enter key.
echo.
set /p text=
rem Making the temp file
:num
set num=%random%
if exist temp%num%.vbs goto num
echo ' > "temp%num%.vbs"
echo set speech = Wscript.CreateObject("SAPI.spVoice") >> "temp%num%.vbs"
echo speech.speak "%text%" >> "temp%num%.vbs"
start temp%num%.vbs
pause
del temp%num%.vbs
goto input
pause
Il y a aussi Balabolca : http://www.cross-plus-a.com/bconsole.htm Il a une commande outil de ligne balcon.exe
. Vous pouvez l'utiliser comme ceci:
Liste des voix:
balcon.exe -l
Fichier Speak:
balcon.exe -n "IVONA 2 Jennifer" -f file.txt
Parlez à partir de la ligne de commande:
balcon.exe -n "IVONA 2 Jennifer" -t "hello there"
D'autres options de ligne de commande sont disponibles. Je l'ai essayé sur Ubuntu avec SAPI5 installé dans Wine. Cela fonctionne très bien.
Votre meilleure approche consiste à écrire un petit utilitaire de ligne de commande qui le fera pour vous. Ce ne serait pas beaucoup de travail - il suffit de lire le texte et d'utiliser la bibliothèque ms tts.
Une autre alternative consiste à utiliser Cepstral . Il est livré avec un utilitaire de ligne de commande Nice et sonne des années-lumière mieux que le ms tts.