ms discours en ligne de commande
-
22-07-2019 - |
Question
Est-il possible d'utiliser l'utilitaire MS Speech à partir d'une ligne de commande? Je peux le faire sur un Mac, mais je ne trouve aucune référence à cela sous Windows XP.
Merci.
La solution
Je ne pense pas qu'il existe un outil de 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
Autres conseils
Mes 2 centimes sur le sujet, lignes de commande simples:
-
sous Win avec
PowerShell.exe
PowerShell -Command "Add-Type –AssemblyName System.Speech; (New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak('hello');"
-
sous Win avec
mshta.exe
mshta vbscript:Execute("CreateObject(""SAPI.SpVoice"").Speak(""Hello"")(window.close)")
-
sur OSX en utilisant
dites
say "hello"
-
Ubuntu Desktop (> = 2015) utilisant un
natif spd-say
spd-say "hello"
-
sur tout autre Linux
- reportez-vous à la Procédure de synthèse de la synthèse vocale à l'aide de la ligne de commande?
- fonction en ligne de commande en utilisant google TTS (wget to mp3- > mplayer)
-
sur Raspberry Pi, Win, OSX avec Node-Red
Il existe un bon programme open source qui fait ce que vous demandez sous Windows, appelé Text to Speech de Peter: http://jampal.sourceforge.net/ptts.html
Il contient un fichier binaire appelé ptts.exe qui parlera du texte à partir de l'entrée standard. Vous pouvez donc l'exécuter comme suit:
echo hello there | ptts.exe
Vous pouvez également utiliser le script VBS de trois lignes suivant pour obtenir un TTS de base similaire:
'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 du script, vous voudrez probablement trouver des exemples de code plus complets avec un délai d'expiration variable et la gestion des erreurs.
J'espère que ça aide.
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
Si vous ne trouvez pas de commande, vous pouvez toujours envelopper le System.Speech.Synthesis.SpeechSynthesizer à partir 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);
}
}
}
Il y a aussi un moyen 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"
Votre meilleure approche consiste à écrire un petit utilitaire de ligne de commande qui le fera pour vous. Cela ne représenterait pas beaucoup de travail - il suffit de lire le texte, puis d’utiliser la bibliothèque ms tts.
Une autre alternative consiste à utiliser Cepstral . Il est livré avec un utilitaire de ligne de commande agréable et sonne des années lumière mieux que les ms tts.
Il existe également Balabolca : http: // www. cross-plus-a.com/bconsole.htm
Il dispose d'un outil de ligne de commande balcon.exe
. Vous pouvez l'utiliser comme ceci:
-
Répertoriez les voix:
balcon.exe -l
-
Fichier de discussion:
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"
Plus d'options de ligne de commande sont disponibles. Je l'ai essayé sur Ubuntu avec SAPI5 installé dans Wine. Cela fonctionne très bien.