Domanda

Esiste un modo per utilizzare l'utilità MS Speech dalla riga di comando? Posso farlo su un Mac, ma non riesco a trovare alcun riferimento ad esso su Windows XP.

Grazie.

È stato utile?

Soluzione

Non credo che ci sia uno strumento da riga di comando, ma qualcuno ne ha scritto uno:

http://krolik.net/post/Say-exe-a-simple-command-line-text-to-speech-program-for-Windows.aspx

Altri suggerimenti

I miei 2 centesimi sull'argomento, riga di comando a riga singola:

C'è un bel programma open source che fa quello che stai chiedendo su Windows chiamato Text's Speech di Peter disponibile qui: http://jampal.sourceforge.net/ptts.html

Contiene un file binario chiamato ptts.exe che pronuncia il testo dall'input standard, quindi è possibile eseguirlo in questo modo:

echo hello there | ptts.exe

In alternativa, è possibile utilizzare il seguente script VBS a tre righe per ottenere TTS di base simili:

'say.vbs
set s = CreateObject("SAPI.SpVoice")
s.Speak Wscript.Arguments(0), 3
s.WaitUntilDone(1000)

E puoi invocarlo dalla riga di comando in questo modo:

cscript say.vbs "hello there"

Se segui il percorso dello script, probabilmente vorrai trovare alcuni esempi di codice più estesi con timeout variabile e gestione degli errori.

Spero che sia d'aiuto.

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

Se non riesci a trovare un comando puoi sempre racchiudere System.Speech.Synthesis.SpeechSynthesizer da .Net 3.0 (Non dimenticare di fare riferimento a" 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);
        }
    }
}

Esiste anche un modo PowerShell:

Crea un file chiamato speak.ps1

param([string]$inputText)
Add-Type –AssemblyName System.Speech 
$synth = New-Object System.Speech.Synthesis.SpeechSynthesizer
$synth.Speak($inputText);

Quindi puoi chiamarlo

.\speak.ps1 "I'm sorry Dave, I'm afraid I can't do that"

Il tuo approccio migliore è quello di scrivere una piccola utility da riga di comando che lo farà per te. Non richiederebbe molto lavoro: basta leggere il testo e quindi utilizzare la libreria ms tts.

Un'altra alternativa è utilizzare Cepstral . Viene fornito con una bella utility da riga di comando e suona anni luce meglio dei messaggi.

C'è anche Balabolca : http: // www. cross-plus-a.com/bconsole.htm Ha uno strumento da riga di comando balcon.exe . Puoi usarlo in questo modo:

  1. Elenco voci:

    balcon.exe -l
    
  2. Pronuncia file:

    balcon.exe -n "IVONA 2 Jennifer" -f file.txt
    
  3. Parla dalla riga di comando:

    balcon.exe -n "IVONA 2 Jennifer" -t "hello there"
    

Sono disponibili altre opzioni da riga di comando. L'ho provato su Ubuntu con SAPI5 installato in Wine. Funziona bene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top