Speech API のサンプル

概要

  • Speech API というものを使って、音声認識、テキストの音声合成ができるらしい。
  • COMインターフェイスがあるので、簡単に使える。
  • マークアップを埋め込むことで声の大きさを変えたり、高低を変化させたりできる。


テキストの音声合成の例

以下の内容のテキストファイルを、拡張子を「js」にして保存し、そのファイルをダブルクリックすると、Windowsが自らを褒め称える。

var sp = WScript.CreateObject("SAPI.SpVoice");
var speech = "Microsoft Windows is the greatest OS ever.";
sp.Speak(speech);

マークアップを使う

MSの SAPITTS markup language というマークアップを埋め込むことで、音声の大きさや、高低、スピードなどをコントロールできる。ただ、MSDNに情報が見当たらないので詳細がわからない。とりあえず次のような操作が可能。

操作 開きタグ 属性値の範囲
声の大きさ <volume level=”n”> 0 ? 100
声の速さ <rate speed=”n”> -10 ? 10
声の高さ <pitch middle=”n”> -10 ? 10

例えば以下のようにマークアップを埋め込めば、声低めでゆっくり目にしゃべってくれる。Speak メソッドの2つ目の引数には、1つ目の引数がXMLであることを指定するため、8 (SpeechVoiceSpeakFlags.SVSFIsXML)を入れている。

var sp = WScript.CreateObject("SAPI.SpVoice");
var speech = "<rate speed='-3'><pitch middle='-10'>I'm not interested in Google.</pitch></rate>";
var v = sp.Speak(speech, 8);

なお、MSDNをみると、W3Cの仕様であるSSML(Speech Synthesis Markup Language)にも対応していると書かれている。

そのほかにできること

非同期でしゃべらせる

Speak メソッドの2つ目の引数に、1を指定(1ビット目を立たせる)すると、非同期モードになって、しゃべり終わる前に次の行に処理が進む。デフォルトは同期モードなので、しゃべり終わらないと次の行に行かない。実際にアプリ作るのであれば非同期のほうがいいだろうね。

ファイル出力

実際にWAVEやMP3で出力するスクリプトを作っているひとがいる。

音声認識

音声認識もできるようだけど、詳細不明。

参考文献

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>