在 OS X 的终端中,如果您键入“say”并按回车,则命令不会退出,并且系统会说出任何后续键入的内容(后跟回车)。怎样才能达到这样的效果?
问问题
112 次
1 回答
2
如果您键入cat
并按回车,该命令不会退出,并且任何后续键入的内容,然后是回车,都将打印在屏幕上(而不是通过扬声器转换为语音,如say
)。因此,简单的一点是读取行直到 EOF;你可以fgets()
很容易地使用它,或者getline()
.
int main(void)
{
char buffer[4096];
while (fgets(buffer, sizeof(buffer), stdin) != 0)
{
fputs(buffer, stdout);
// Or invoke appropriate text-to-speech function(s)
}
return(0);
}
文本到语音的转换将通过 Apple 提供的电话来完成。您可能需要使用 Objective C 来明智地访问接口,在这种情况下,您可能还需要使用其他一些输入函数或将字符串转换为适当的 Objective C 构造。
该/usr/bin/say
命令使用库:
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 633.0.0)
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 41.0.0)
/System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.0.0)
AudioToolBox、AudioUnit 和 CoreAudio 的组合将提供文本到语音的服务。
于 2012-07-21T17:26:05.840 回答