命令say
可能是 OS X 终端最引人注目的功能 - 它以文本作为输入并通过计算机扬声器将其读出。Windows 上是否有任何等效的命令行工具,无论是内置的还是通过第三方程序?
答案1
肺结核是一个非常简单的 Microsoft Windows 命令行程序,用于将文本转换为语音。它使用 Microsoft 文本转语音引擎和 Microsoft Speech SDK。文本转语音引擎随 Windows XP 安装,但声音质量较差。Jampal 安装程序包含两个声音质量较好的声音。(引自网站)
只需通过重定向或管道将文本输入到程序中即可使用它:
ptts < file.txt
echo Hello there|ptts
答案2
我厌倦了尝试让过时的工具发挥作用,因此我创建了wsay
。
它的工作原理是say
,您可以选择不同的声音,然后可以轻松地输出到波形文件。
https://github.com/p-groarke/wsay/releases
干杯
答案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 变量引用的目录中。
此程序根据您的输入创建一个简单的 vbs,然后使用系统语音朗读。执行结束时,脚本将被删除,以便为下一次执行留出空间。
答案4
他们在 SDK 中有这个库,您可以通过一些个人努力来制作更高级的实用程序。
https://www.microsoft.com/en-us/download/details.aspx?id=27224
虽然这可能是最方便的方式,因为它是内置于系统中的,并且可以通过 powershell 访问。
从命名空间调用该函数(https://msdn.microsoft.com/en-us/library/gg145021(v=vs.110).aspx)
# Call the function from the namespace
Add-Type -AssemblyName System.Speech
# Instantiate the Object
$synth = New-Object -TypeName System.Speech.Synthesis.SpeechSynthesizer
# Call the function and input your words as it's argument.
$synth.Speak('hey man')