Mac OS X上でのText-To-Speech
すべての単語のサウンドデータを保持するのは事実上不可能なので、検索結果の表示にはどうしてもText-To-Speechの機能が必要になる。Mac OS X上のText-To-Speech (以下、TTS)についてまとめた。
Cocoaには、NSSpeechSynthesizerというクラスが用意されている。使い方は非常に簡単。通常通り、alloc, initしたあとで、そのインスタンスに読ませたいストリングを与えるだけ。
[speechSynth startSpeakingString: string];
標準に用意されている声のリストが, +availableVoicesというクラスメソッドでとれるので、望みのものをインスタンスに -setVoiceすればよい。
この辺のことは、Cocoa Programming For Mac OS X に詳しい。delegateを使って、発声が終わった時点で特定の操作をする(例えば、ボタンを再度enableにするとか)といった方法について触れている。
別の方法としては、NSTextViewの-startSpeaking:(id) senderもある。(ドキュメントには書かれていないが、実は NSApplicationにも speakStringというメソッドがあるらしい。 [NSApp speakString:@”foo”]; でつかえる。)
この、簡単に使えるが、実はCarbonのほうのSpeechSynthesisフレームワークをラップしているだけで、機能が制限されている。発声のスピードをかえたりしたいときには、Carbonの関数を使う必要があるようだ。詳しくは、こちら、あるいはSpeechSynthesis.hを参照してほしい。
しかし、このフレームワークそのものにも重大な問題がある。単純に言うと、英語にしか対応していないのだ。上記のspeakString, startSpeakingStringなどの関数が呼ばれると、入力された文字列は内部の辞書を参照して、音素(Phoneme)の表示に変換され、それが実際のspeech synthesizerに与えられて音に変換される。問題なのは、この音素表示がIPAではなく、英語を対象とした表示になっている点だ(参照)。これでは、世界の言語を表すことはできない。
Appleの標準のTTSを使うのはあきらめて、ほかのシステムを探す必要がありそうだ。IPAの発音表記をすでにDB内に保持している分、TTSシステムのタスクとしてはシンプルになりそうなのだが…
Project Phonethica
Combining scientific technology and art, Phonethica is an interdisciplinary project which explores the diversity of the world, through the phonetics of its 6,000 languages.
Search
Archives
- November 2007
- September 2007
- August 2007
- April 2007
- March 2007
- January 2007
- December 2006
- November 2006
- October 2006
- September 2006
- August 2006
- July 2006
- June 2006
- May 2006
- April 2006
- March 2006
- February 2006
- January 2006
- December 2005
- November 2005
- October 2005
- September 2005
- August 2005
- July 2005
- June 2005
- May 2005
No Responses to “Mac OS X上でのText-To-Speech”
Please Wait
Leave a Reply