音声合成-応用1

実際に音声合成を利用する場合には、さまざまな制御(音声・ボリューム・速度・読み方など)が必要になります。
ここでは、これら制御を行う方法を説明していきたいと思います。

利用できる音声 bookmark

利用できる音声(Microsoft Anna、LH Kenji、LH Naokoなど)を列挙するには、SpeechSynthesizer?.GetInstalledVoices?で行えます。

これにより、現在利用できる音声が分かるので、読み上げ時に設定して利用できます。

音量・音声の速度 bookmark

音量、音の速度も設定することが可能です。音量はあまり変更しないと思いますが、音の速度は案外変更するかもしれませんね。
各値は、Volume,Rateプロパティを利用します。(コードは割愛)

読み上げ(同期・非同期)・一時停止・再開 bookmark

読み上げするには、Speak(同期)、SpeakAsync?(非同期)メソッドを利用します。また、Pauseメソッドで読み上げの一時停止、Resumeメソッドで読み上げの再開を制御することができます。

イベント bookmark

読み上げ時には様々なイベントが発生しますが、まずは、SpeakStarted?SpeakCompleted?イベントだけを説明します。
SpeakStarted?は読み上げが開始された時に発生し、SpeakCompleted?は読み上げが完了した場合に発生します。
(SpeakProgress?イベントなども発生しますが、日本語の場合のイベントを正常に処理できるのを、私が確認できていません。(フィードバック中))

サンプル bookmark

では実際にテキストボックスに入力された文字列を読み上げるアプリケーションを作成してみましょう。

画面レイアウト bookmark

画面レイアウト

上記画面レイアウトのXAMLは、以下のようになっています。

コード bookmark

こんな感じで、Windowsが提供している音声合成画面とほぼ同等の機能を実装することができます。