0

OS Xのターミナルで、「say」と入力してreturnキーを押すと、コマンドは終了せず、その後に入力されたもの(returnが続く)はシステムによって通知されます。このような効果はどのように達成できますか?

4

1 に答える 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 に答える