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.

Était-ce utile?

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:

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:

  1. Répertoriez les voix:

    balcon.exe -l
    
  2. Fichier de discussion:

    balcon.exe -n "IVONA 2 Jennifer" -f file.txt
    
  3. 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top