音声合成ソフトの可能性

音声合成という技術は決してあたらしいものではありませんが、日常の生活ではあまり取り入れられていません。留守番電話や自動応答、カーナビ、自動販売機等ではよく使われていますが、映画やアニメで使われているような自由な会話的に何かを調べたり、計算したりする機能としては使われていないのが現状です。
最近ではApple社がSiriという会社を買収し、iPhone4Sに音声コマンドに対して音声で返答する機能が採用されました。Siriでは、受け取った音声のデータをインターネット上のサーバに送り、その返答をサーバから受け取る方式がとられています。そのため、返事を考える頭脳にあたる部分はiPhone本体には実装されておらず、サーバ上の頭脳に入力されたデータが送られ、頭脳は常に学習する事ができます。(実機でテストした事がないのでわからないのですがネットに繋がっていない環境でもSiriが動作するのかはわかりません)
先日テスト版として公開したSPEECHAPPに使われているマイクロソフト社の、スピーチプラットフォーム(speech platform)はXBOX360のKINNECT用に開発され、あまり広く知られてはいませんが、音声認識、音声合成、音声コマンドの技術は成熟しているように思われます。Windows XPくらいからOSに標準で入っているSpeech API(SAPI)は以前英語版のWindows MEのユーザ登録のガイド役としてマーリンが声でナビゲートしていました。
では、なぜ人間との会話をコマンドとし便利に使えるソフトが一般的に使われないのでしょうか。
Siriで実現されている音声コマンドは、ある特定のプログラムされた(人間がプログラムした)データの検索結果を返しているのにすぎません。サーバ上に保存された大量のデータの中から、場所やその他の条件にあった結果を検索して情報を与えているだけの話です。たとえば、「今から車で空港まで行き、客先まで着くにはどのくらいかかるか」という質問に対してSiriの場合、ユーザの位置、道路の渋滞、飛行機の運航状況、行き先の空港から客先までの道のりを計算しなくてはなりません。(最近は駅から駅までの時間を計算するようなソフトもありますが、その日の天候や状況は含まれていないような気がする)プログラム可能といえば可能ですが、こんなケースは無限大に発生すると考えられます。
あらかじめ発生するケースを予測し、決まった行動がプログラムされているだけではそれ以上のことはできないのです。
たとえば、プログラム自身がマクロを生成し、プログラムはマクロを蓄積していき、プログラム本体は過去のマクロから適切な答えを導き出すマクロを選択して、マクロの結果を返事として返す。今のソフトは人間の返答待ち(「はい」とか「いいえ」とか)が多いですが、ユーザがいない間に、どっちのケースも終わらせておき、これではこうなりますとかそこまでやれるはずなんだけど。ハードウェアの処理能力は必要以上に上がっているこのご時勢そのくらいの無駄な処理、無駄なデータを蓄積してもいいはずです。
あとは、過去の実績から実際にかかる時間の予測も考慮したりして経験的なデータの蓄積もできると正確性が上がるかも知れません。質問やコマンドに対して、前回はこうしたけどこうなったので、こうやったら早く終わらせられるとか。(あまりコンピュータに考え込まれすぎて無言状態で反応しなくなったりしてもそれはそれでソフトとしては不良品だけど)
人間の満足度というのも、ひとつの要因かもしれません。たとえソフトが一番効率の良い方法を考えてもそのソフトを使うユーザがなぜそうなるのかを理解し、このソフトは優秀だと認識されないと一般的には普及しないでしょう。人間の経験や、作業の工程から出た結果をソフトが一瞬で解析しその正確さを見出していくのは必要なこととはいえ、ユーザがソフトに学習させていくような工程も人間に対する満足感を作り出すのかもしれません。(サイバーフォーミュラというアニメは一緒に学習するということを考慮されていた)
今のソフトは、いちいちユーザに質問しすぎです。もうちょっと考えてよねっていつも思う。
そういえば、新人の頃、フローチャートからアセンブラのプログラムを書くソフトの開発をやっていた事もあった。決まった動作を四角いブロックが何行かのアセンブラの関数になっていて、それをドラックドロップすることによってソースコードを書いていくソフト。今考えると結構合理的ではあったが、業界が一般的なソフト業界ではなかったので今はどうなったか知りませんが、そういうことをC++や、COMでできてもいいように思う。
ソフトが自分でCOMオブジェクトを操作してOSの機能を実行していくなんてできるといいかもしれません。
長くなりましたが、今回はこんなところで。ではでは。

コメントを残す