QtSpeech、テキスト読み上げへのアクセス

TTS(テキスト読み上げ)をクロスプラットフォームで使用するための小さくても便利なモジュールを紹介したいと思います。 現在サポートされている主要なプラットフォーム:
* SAPIを使用するWindows、
* Festivalプロジェクトを使用したUnix
* SpeechSynthesisを使用したMacOSX

ネイティブAPIはWindowsおよびMacで使用されるため、システムにインストールされているすべての音声エンジンが自動的に利用可能になります。 Unixの場合、すべてがバラ色ではなく、一般的なシステムであるapiはありません。そのため、Festivalプロジェクトが選択されただけで、英語とLGPLライセンスの品質が向上します。 Macでは、Alexの素晴らしい声にいつでも期待できます。

ライブラリの使用は非常に簡単です。したがって、アプリケーションは最終的に「Hello World!」と言うでしょう。

<QtSpeech>に接続する必要があります。 これで、アプリケーションが何かを同期的に発言する必要がある場合(音声が機能するまで実行はこの時点で待機します)、次のコードで十分です。
#include <QtSpeech> ... QtSpeech voice; voice.say("Hello World!"); 


非同期が必要な場合(アプリケーションがブロックされていない場合)、tell()を使用します。
 QtSpeech * voice = new QtSpeech(this); voice->tell("Hello asynchronous world!"); 


最後に特定のロジックを実行する必要がある場合:
 voice->tell("Hello!", this, SLOT(onSpeechFinished())); 


システムの投票リストも取得できます。
 QtSpeech::VoiceNames vs = QtSpeech::names() 


今、声について。 さまざまな音声と言語の最大セットは、アカペラによってWindowsおよびMac用に販売されています。Macでは、Infovox iVoxという異なる名前で配布されています。 また、IBMおよび他のいくつかの企業からの声もあります。 悪いのは、これらの声をプログラムに組み込んで配布できないことです。会社と交渉するか、SDKがある場合はSDKを購入する必要があります。 しかし、英語の場合、いつでもデフォルトの音声を使用できます(またはフェスティバルと提携します)。

アプリケーションは最も多様です。 何か速く声を出す必要がありますか? 単純なおもちゃの機械的な声? Qtでクロスプラットフォームになりました。

計画:Qtにバインドせずにバージョンを作成します(多くの場合、boost:threadsを使用します)。 その他の機能-一時停止など ただし、3つすべてのプラットフォームですぐに利用できる機能のみが可能性が高くなります。

参照:
1 Gitoriusのリポジトリ、ダウンロード: http ://gitorious.org/qt-speech
2プロジェクトのWebサイト: http : //lynxline.com/projects/qtspeech/

Source: https://habr.com/ru/post/J121157/


All Articles