在命令行毫秒讲话(ms speech from command line)

2019-06-24 02:22发布

有没有办法使用命令行的MS语音转换工具的方法吗? 我能做到这一点在Mac上,但无法找到在Windows XP中对它的任何引用。

谢谢。

Answer 1:

我不认为有它的命令行工具,但有人写了一个:

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



Answer 2:

我的2美分的话题,命令行的俏皮话:

  • 使用赢PowerShell.exe

     PowerShell -Command "Add-Type –AssemblyName System.Speech; (New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak('hello');" 
  • 在Win使用mshta.exe

     mshta vbscript:Execute("CreateObject(""SAPI.SpVoice"").Speak(""Hello"")(window.close)") 
  • 使用OSX say

     say "hello" 
  • 使用本地Ubuntu桌面(> = 2015) spd-say

     spd-say "hello" 
  • 对其他Linux

    • 请参阅如何使用命令行的文本到语音输出?
    • 命令行功能使用谷歌TTS (wget来MP3-> mplayer)中
  • 在树莓派,温,OSX使用节点红

    npm i node-red-contrib-sysmessage



Answer 3:

还有,做你要求在Windows什么叫彼得的文本到语音可这里一个很好的开源项目: http://jampal.sourceforge.net/ptts.html

它包含一个名为ptts.exe会说话从标准输入文本二进制文件,这样你就可以像这样运行:

echo hello there | ptts.exe

或者,您可以使用以下三种线VBS脚本来获得类似的基本TTS:

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

你可以调用,从这样的命令行:

cscript say.vbs "hello there"

如果你去的脚本路线,你可能会想找到一个可变的超时和错误处理一些更广泛的代码示例。

希望能帮助到你。



Answer 4:

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


Answer 5:

如果你不能找到一个命令可以随时包裹System.Speech.Synthesis.SpeechSynthesizer从.net 3.0(不要忘了参考“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);
        }
    }
}


Answer 6:

有一个PowerShell的方式也:

创建一个名为speak.ps1文件

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

然后,你可以叫它

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


Answer 7:

你最好的办法是写一个小的命令行实用工具,将你做它。 它不会是大量的工作 - 只是阅读文本,然后使用MS TTS库。

另一种方法是使用倒谱系 。 它配备了一个不错的命令行实用工具和声音光年比MS TTS更好。



Answer 8:

还有Balabolca: http://www.cross-plus-a.com/bconsole.htm它有一个命令行工具balcon.exe 。 您可以使用它像这样:

  1. 名单的声音:

     balcon.exe -l 
  2. 讲文件:

     balcon.exe -n "IVONA 2 Jennifer" -f file.txt 
  3. 在命令行讲:

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

更多的命令行选项。 我用安装在葡萄酒SAPI5试过在Ubuntu上。 它工作得很好。



文章来源: ms speech from command line