OS Xのターミナルで、「say」と入力してreturnキーを押すと、コマンドは終了せず、その後に入力されたもの(returnが続く)はシステムによって通知されます。このような効果はどのように達成できますか?
質問する
112 次
1 に答える
2
入力してreturnキーを押すcat
と、コマンドは終了せず、入力された後のreturnが画面に出力されます(のようにスピーカーから音声に変換されるのではありません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を使用する必要がある場合があります。その場合は、他の入力関数を使用するか、文字列を適切なObjectiveC構造に変換する必要があります。
この/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 に答える