Windows的OS X`say`命令


22

say命令也许是OS X终端最引人注目的功能-它以文本作为输入并通过计算机的扬声器说出来。Windows上是否有任何等效的命令行工具(内置或通过第三方程序)?



2
这让我开始思考,也许我应该编写一个命令行音量更改应用程序,以防万一出现这种情况。
nhinkle

Answers:


5

PTTS是一个非常简单的Microsoft Windows命令行程序,用于将文本转换为语音。如果使用Microsoft Text to Speech Engine和Microsoft Speech SDK。文本到语音引擎已随Windows XP一起安装,但其中一种声音质量较差。Jampal安装程序包括两个更好的声音。(引自网站)

只需通过重定向或通过管道输入文本将文本输入到程序中,就可以使用它:

ptts < file.txt
echo Hello there|ptts

@bubu,除非我误解了文档,否则该软件似乎只能通过文件讲话。您是否知道有什么方法可以直接从命令行接受文本而无需创建中间文件?
nhinkle

2
Nvm,弄清楚了。您必须将其通过管道传输到程序。例如echo Hello|ptts.exe。我希望有一种方法使文本成为命令的参数,但是如果没有办法做到这一点就足够了。
nhinkle

@nhinkle是的,因为它从stdin读取的一种方法是通过它进行传输
bubu 2010年

3

为此,我创建了一个简单的批处理脚本。这是源代码

@echo off
echo Dim Speak >> %HOMEPATH%\speak.vbs
echo Set Speak=CreateObject("sapi.spvoice") >> %HOMEPATH%\speak.vbs
echo Speak.Speak "%*">> %HOMEPATH%\speak.vbs
%HOMEPATH%\speak.vbs
del %HOMEPATH%\speak.vbs

将此脚本保存在名为“ speak.bat”的文件中,然后将其移动到PATH变量引用的目录中。

该程序使用您的输入创建一个简单的vb,然后用系统声音说出来。执行结束时,该脚本将被删除,以留出空间进行下一次执行。


您能否编辑您的帖子以说明其工作原理和使用方法?另外,此解决方案移动文件有什么目的?
Cfinley

@Cfinley:帖子编辑
Alessandro Mascolo


1

他们在SDK中拥有此库,您可能会花费一些心血来制作更高级的实用程序。

https://www.microsoft.com/zh-cn/download/details.aspx?id=27224

尽管这可能是最方便的方法,因为它是本机内置于系统中,并且可以通过powershell进行访问。

从名称空间调用函数(https://msdn.microsoft.com/zh-cn/library/gg145021(v=vs.110).aspx

Add-Type -AssemblyName System.Speech

实例化对象

 $synth = New-Object -TypeName
 System.Speech.Synthesis.SpeechSynthesizer

调用该函数并输入您的单词作为其参数。

 $synth.Speak('hey man')
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.