Android女子部

2010年3月15日月曜日

日本Androidの会 3月の定例イベント潜入レポート!その1

2010年3月8日(月)に開催された日本Androidの会3月の定例イベントにいってまいりました!その模様を女子部のゴン太くんこと、ニシヲカがレポートします。

今回のテーマは「音声認識」になります。音声認識とは、機械が人の声をきいてそれを文章にする技術です。人が何気なくやってることを機械にやってもらおう! というもので、最近はiPhoneやAndroidのアプリでもぽつぽつ見かけるようになりました。でもまだ、日常では使えないよね〜と思っている方も多いのではないでしょうか?しかしそれはとっても難しい技術なんです。そんな未来の技術を頑張って取り組んでいる方々の熱いお話を聞くことができました。
 
トップバッターは、NTTコミュニケーション科学基礎研究所の中村 篤さん。NTTでの音声認識研究の最前線をお話ししていただけました。専門的な言葉が飛び交いまるで大学の講義のような雰囲気です。

まずは、音声認識の簡単なご説明。一口に音声認識といってもいろいろな処理が必要です。なんと、音が入力されてから言葉になるまで、こんなにも処理をしないといけないのです。
  1. 音を読み取ってきれいな波形信号に加工する。(音響処理)
  2. 音声以外のノイズを除去して単なる音のかたまりから音声の部分だけをとりだす。そして音の特徴だけを取り出す。(音響音声処理)
  3. 認識エンジンにかける!(音声認識)
  4. 1つ1つ音声を単語にする(音声言語処理)
  5. 単語をまとめてちゃんとした文章を作る(自然言語解析)
まったくもってよくわかりません…。つくづく人の脳みそって賢いですね!実際、機械に音声認識させることはとっても難しいのだそうです。

人が人の言葉を聞きとるのはこんなに簡単なのに、機械にやらせるとなんて難しいのか…。では人間の場合はどういう仕組みで言葉を聞いているのでしょうか?
  • 音を感じる…耳から聴覚野という大脳の音を刺激として感じる部分に伝達される
  • 言葉を聞く…耳から聴覚野を経由して、大脳の側頭連合野という言葉を理解する特別な部分へ伝達される
言葉を聞く場合は、音と違って脳への伝達も特別です。人はまず言葉と音とを区別して聞き、声から発せられた言葉は意味のあるものとして特別な方法で処理しています。音声認識でも同様で、声と音を区別する仕組み/声を言葉として理解する仕組みが必要となります。そこでNTTさんでは2つの技術で音声認識を実現 しています。

声と音を区別する仕組み…音声区間検出&雑音抑制技術DIVINE


言葉を聞き取るためには、まず、声の部分だけ取り出したい。そのために音の部分は除去する技術がDIVINEです。NTTで研究開発されたこの技術のすごいところは、雑音などの下でも、正確に目的の声だけをとりだせるところ!例えば、会話しているときに車が通ったら場合でも、会話内容だけを抽出します。人でも騒音の中で会話は聞きとりにくくてむずかしいですよね?難しいことを機械にやらせちゃおうというのだからすごいです!

DIVINEでの音を除去する方法としては
  • 観測信号から音(ノイズ)だけのとこをまずカット(時間軸上の分割)
  • 音声部分から音(ノイズ)の影響を除去(周波数上の分割)
…難しいですね。ノイズを時間的に追従して、どこがノイズかを予測計算して抽出・除去するので、精度がとってもいいそうです。軽量化できており、組み込み機器への搭載も問題ないとのこと。そのうちAndroid端末への搭載もアリ?ですね!

今後の課題としては、雑音の定義はひとそれぞれなところ。オカーサンのうるさい小言も聞きようによってはありがたい忠告ですし、単なる雑音だったりもします。と考えると、音の時空間位置を特定し、聞きたくない音を取り除く技術へが必要になります。それには、どんな内容の文を誰がしゃべっているのかを区別 する仕組みが必要です。そのためにNTTさんでは日夜研究開発に取り組まれているそうです!がんばって!

声を言葉として理解する仕組み…WFSTを使った音声認識エンジン


次に、DIVINEで取り出した人の声を言葉として理解して聞く仕組みが必要です。声を言葉にして理解するためには、以下のような3つの処理を順番に行います。
  1. 声を一つ一つの音節として理解する (例)「し」「ろ」「い」「は」「な」「が」「さ」「い」「た」
  2. 一つ一つの音節を単語にする (例)「しろい」「はな」「が」「さいた」
  3. 単語を組み合わせて文脈にあった文をつくる (例)「白い花」○「白い鼻」× 「が」○ 「咲いた」○「最多」×
音声認識エンジンは、この3つの処理のそれぞれにモデルと呼ばれる辞書のようなものを準備して、入力された音と合致するものを探索します。そして最も最適な言葉の並びが何になるのかを判断します。

きちんと意図したとおりの文を機械が認識するためには、多くのパターンを準備して、その中から正確に意図通りのパターンを探す処理が必要となってしまいます。例えば10個の単語でできた文章の場合、それぞれ同音の語彙がNパターンあるとした場合の文章の組み合わせは、Nの10乗通りもあるからです。N=2 の場合は1024通りですが、N=10の場合は10,000,000,000通り!いくら最近の携帯はお利口さんとはいえ、あのような小さなサイズの機械ではこのような多くの処理はできそうにもありません!オーバーヒートして煙がでちゃいそうです!

そこでNTTでは新しくWFSTと呼ばれる独自の技術を研究開発されました。これは、3つの処理を1つ1つ実行するのではなくて、合成して一気に処理させよう!といったものです。



音声認識のようなTransducerにはよく有限オートマトン(FSM) が使用されますが、NTTで開発されたWFSTも有限オートマトンの一種です。重みだけでなく、入力値/出力値をもつことが特徴です。音声認識の3つモデルはそれぞれ異なった仕組みで探索しますが、WFSTではこれらの仕組みを包括しますので、合成した場合のアルゴリズムとしてWFSTはとっても適しているといえ ます。

この合成によって、今まで音声の特徴量→音素→単語→文という処理だったのが、特徴量→文とダイレクトに短時間で検索することができます。WFSTを使ったおかげで、処理がすっごく早くてすっごく認識精度のいい音声認識エンジンを処理することできました。

この結果、NTTでは世界で初めて短時間で1000万語もの音声認識処理が可能なエンジンを開発しました。広辞苑ですら24万語ですから、それだけすごいかわかりますよね?現在この技術は、アメリカのMITでのオンライン講義などに応用されているそうです。英語の講義に字幕をつけて、まるでカラオケでの歌詞のように映像と同期する字幕を自動で作成する仕組みです。世界で日本のNTTさんの技術が活用されています。すごいですね!

今後の課題としては、認識率の向上をあげられてました。一般的に音声認識率についてよく質問されるのだそうですが、条件が違えば認識率が異なるので一概には回答できないもののようです。例えば、一人の人の声をヘッドセットで拾う場合と、2、3人でおしゃべりする音声をマイクで拾う場合とは認識率が全く違います。もちろん前者の方が簡単なしくみで認識できるようで、現在の技術では前者は90%程度、後者は50〜55%程度の認識率だそうです。これから複数の人の会話でもちゃんと認識出来るようなエンジンの研究をすすめられているとのこと。とても未来を感じる研究ですね!いつかくる素晴らしい未来のために、わたしたちも応援したいです!

まるで大学の授業のような理論中心のセッションでした。次のセッションではもう少し実践編というか、日常的な音声認識のサービス・アプリについての内容になっております。乞うご期待!

5 件のコメント:

  1. いやー。日本アンドロイドの会がまるで非常に高尚な会であるかのごとく妄想してしまうような素晴らしいレポート。つつしんでニシヲカさんを「ひとりNHK教育」と呼ばせていただきます。
    ぶちょー

    返信削除
  2. Googleの音声検索で一度も成功したことが無いんだけど。
    音声認識って難しいんだな~と実感。
    アタシの声は、認識されにくいんだな。
    良いレポありがとう♪
    by ギーク母ちゃん

    返信削除
  3. これはすごくわかりやすい!
    さすがです。
    その2も期待してまーす。

    返信削除
  4. 良くまとまっていてすばらしいです。

    私も参加させてもらいましたが、こんなふうにまとめられませんでした。

    返信削除
  5. こんなにウマく文章書けるなんて・・・凄い。

    返信削除