音声合成-応用2

応用1では、テキストボックスに入力された文字列を単純に読み上げるだけでしたが、この場合、不都合なども発生するので、これらの回避方法・拡張方法を説明します。

音声再生の不都合・拡張 bookmark

  • .NETと記述されている場合に、どのように読みますか?開発関係の方なら、ドットネットと読むでしょうが、音声のLH Kenjiくんは、ネットとしか読んでくれません。
  • 迷子のアナウンスのように、最初と最後にピンポンパンポーンのような音をつけたい。
  • Vistaビスタのスペルブイ・アイ・エス・ティー・エーを読ませたい。
  • 文章の途中でLH KeinjiからLH Naokoにしたい。
  • 読み上げ内容をファイルで保存したい。
  • ファイル(SSML:Speech Synthesis Markup Language)より読み込んだ文章を読み上げたい。

などがあると思います。これらに対応することは可能なので、説明していきます。
SSML(Speech Synthesis Markup Language)については、別途、W3Cなどで公開されている情報を参考にして頂ければと思います。

PromptBuilder? bookmark

PromptBuilder?クラスを利用することに、対応するSSML形式のドキュメントを生成します。これにより、読み上げる内容を拡張することが可能になります。

AppendTextWithAlias? bookmark

通常の読み方とは別の読み方をしたい時に利用します。

AppendAudio? bookmark

音声ファイルを追加することができます。

AppendBreak?メソッドは、一定時間待機させるメソッドです。

AppendTextWithHint? bookmark

読み上げるテキストを、特定の方法を指定して読み上げます。

StartVoice?EndVoice? bookmark

音声を切り替えます。

SetOutputToWaveFile? bookmark

読み上げ内容をWaveファイルに保存します。
通常は、SetOutputToDefaultAudioDevice?の標準で指定された出力先(スピーカ)ですが、SetOutputToWaveFile?メソッドを利用することにより、ファイルに保存することができます。

SpeakSsml?SpeakSsmlAsync? bookmark

SSML(Speech Synthesis Markup Language)を読み込む事によって、読み上げることも可能です。

上記のようなSSML(sample.xml)を読み上げるには、

のようにします。
PromptBuilder?クラスを利用して作成したドキュメントをSSMLで保存したい場合は、ToXml?メソッドで可能です。

または、FilePrompt?クラスを利用してテキスト、SSML、オーディオファイルを読み込む事も可能です。

まとめ bookmark

音声合成(読み上げ)の技術は昔よりあり、真新しい技術ではありませんが、.Net Framework 3.0よりSystem.Speech名前空間が提供されているので、容易にプログラムに機能を追加することができます。
SDKのドキュメントなど日本語情報が不足しているので、細かなところまで解説できていませんが、「昔と比べたら簡単に読み上げができるようになった」と思って頂ければと思います。