继续接受命令行工具中的输入(如say命令)

时间:2012-07-21 17:18:44

标签: c macos command-line

在OS X上的终端中,如果键入“say”并按回到命令,则命令不会退出,系统会说出任何后续输入的内容(后跟返回)。怎样才能达到这种效果?

1 个答案:

答案 0 :(得分: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的组合将提供文字转语音服务。

相关问题