トピック

まもなく誕生8周年、 「Yahoo!音声アシスト」のこれまで、そして未来

 ヤフーがAndroid向けに提供するアプリ「Yahoo!音声アシスト」はスマートフォンの音声エージェントアプリとして、2012年から提供されてきた。

 その実力はどの程度のものなのか、また日本語認識力の高さを裏付けるヤフーの研究者たちはどのような技術を開発してきたか――今回、開発に携わっているYahoo! JAPAN研究所およびサイエンス統括本部 部長で博士(情報学)の颯々野学氏に話を伺った。

ヤフー株式会社 Yahoo! JAPAN研究とサイエンス統括本部で部長を務める博士(情報学)の颯々野学氏に話を伺った

「Yahoo!音声アシスト」アプリでできること

 「Yahoo!音声アシスト」は、Androidスマートフォンで利用できる「音声対話アプリ」だ。マイクを通じてスマートフォンに話しかけると、合成音声・テキスト・画像など駆使して、さまざまな答えを返してくれる。

Yahoo!音声アシストのアプリアイコン

 画面インターフェイスは実にシンプルだが、用途は多彩。単純な検索アプリとしても使え、例えば「インターネットとは」と話しかければ、キーワード「インターネット」で検索したときの結果を表示してくれる。同様に「キリンの画像が見たい」と喋れば、やはり画像検索の結果を出してくれる。

「Yahoo!音声アシスト」のメイン画面。右下のマイクボタンをタップして話しかけると、さまざまな結果を返してくれる
「キリンの画像が見たい」と話しかければ、このように画像検索の結果を表示

 また、「新宿から名古屋まで」と言えば電車の乗換案内を出してくれるし、他にも全国各地の天気を調べたり、「Yahoo!ニュース」の主要トピックを呼び出すことも可能。音声入力を起点に、Yahoo! JAPANの各種サービスを使うことができる。

電車の乗り継ぎ方を調べたり……
天気予報もおてのもの

 実用機能が充実する一方で、お遊び・息抜き系の機能も豊富。「歌って」とお願いすると、「私下手ですからね?」と前置きしつつ、しっかり歌を歌ってくれる。「しりとり」も、音声アシストの実力を知る上でオススメしたい機能だ。

合成音声で歌ってくれる
しりとり遊びもできる

 「Yahoo!音声アシスト」の初版がリリースされたのは2012年4月のこと。誕生から間もなく8周年を迎えるが、この間、さまざまなバージョンアップが行われてきた。2015年には、音声認識エンジンにディープラーニング技術を導入。2018年末には、アプリ実行中に「ねぇヤフー」と話しかけることで音声認識がスタートするハンズフリー機能が追加された。

 そして、この音声認識関連の機能は、Yahoo! JAPANのその他アプリでも有効活用されている。「Yahoo! JAPAN」アプリにおける検索キーワード入力を筆頭に、「Yahoo!乗換案内」や無料カーナビアプリ「Yahoo!カーナビ」での目的地指定においても、音声での入力が行えるようになっている。

「Yahoo!音声アシスト」開発者・颯々野氏にインタビュー

 音声入力は、使えば使うほど、その便利さが分かってくる。片手に荷物を持っていてスマホが操作しづらい、漢字・数字・アルファベットが混ざり合う言葉・文章を調べたいなど、ちょっとした不便を補うためのツールとしても、非常に有効である。

 では、音声を正確に文字にできさえすればいいのか? いや、それだけでなく“利用者の意図”を探し当てることが重要なのだという。ここからは颯々野学氏へのインタビューをお届けする。

――本日はよろしくお願いします。さて「Yahoo!音声アシスト」アプリがリリースされたのは、およそ8年前の2012年4月のことでしたが、開発のきっかけや、当時の背景について教えて頂けますか?

颯々野氏
 ヤフーでは2012年よりも前から、いわゆる学問分野としての「自然言語処理」や「音声認識」の研究を、ずっと進めていました。特に、自然言語処理のほうは、(Web検索サービスにも関わる)書き言葉をどう処理するか、という部分にも関わってきます。

 一方で音声認識は、マイクに喋った内容をどう処理するかという話になりますが、2012年はいよいよ技術として実用化できそうだぞ、というタイミングを迎える頃でした。スマートフォンが一通り登場し、マイクなどの性能も上がっていたんです。

 2011年末にはアップルのSiriもリリースされました。ヤフーとしては2011年3月に、iOS向けに「音声検索」アプリを出しています。音声認識を利用してヤフー検索などが利用できるもので、まだ意図解析は非常に限定的でした。しかし、社会的に注目を浴びるタイミングでしたし、社としても遅れをとる訳にはいきません。そんなところから、より本格的な「Yahoo!音声アシスト」を公開しました。

――現在の機能は、どのような機能が提供されているのでしょうか?

颯々野氏
 当初は、音声認識されたキーワードをもとにWeb検索・画像検索したり、路線情報や天気予報を返したりするなど、ごく限られた機能だけでした。現在は、スポーツ、地図、ニュースなどヤフーが提供するサービスなどを呼び出せるようになっています(注:サービス紹介サイトで現在の機能が紹介されています)。

 さらに「Yahoo!音声アシスト」アプリ以外でも、音声認識関連の機能が使えるようになっています。たとえば「Yahoo!カーナビ」「Yahoo!乗換案内」では、音声入力で目的地が指定できます。

――ちなみに、颯々野さんはいつごろから「Yahoo!音声アシスト」の開発に携わられているんでしょうか?

颯々野氏
 さきほども少し触れましたが、「Yahoo!音声アシスト」が生まれる前の段階から携わっています。もともと私自身は、自然言語処理の領域が専門なんです。

 1990年~2000年頃にかけて、電子化されたテキストがPCやインターネットの広まりによって、大量に出回るようになりました。そのおかげで、確率や統計、機械学習の力を使って、自然言語処理の品質がグッとよくなったんです。

 (新聞や小説で書かれるような)キチンとした文体については、処理精度が上がりました。でも、日本語はそれだけではありません。話し言葉になるとグッと(センテンスが)短くなり、助詞や目的語の省略も頻繁にされます。こうした領域にどう向き合っていくかが、とてもチャレンジングでした。

音声認識の精度を上げるためには、大量の音声データが必要

――「Yahoo!音声アシスト」を開発にあたっては、どんなご苦労がありましたか?

颯々野氏
 自然言語処理や音声認識を研究開発する上で課題なのが、「実際のユーザーのみなさんがどう使っているか」というデータの不足なんです。

 これが自然言語処理の領域では、インターネットが大きな役割を果たしました。(1990年代中期以降)Webサイトが世界的に増えていき、かなりの年月も経ちましたので、人々がどんな言葉を書いているか──新聞ではこう書くが、ブログの文体はまた違う──といったようなデータが莫大になっているので、これらを研究材料に使えます。

 ところが音声認識は、そこまでのデータの蓄積がありません。ですので、こうしたアプリを実際に使って頂き、どんなシチュエーションで、どんな声で喋っているのかを実際にデータとして集めたいというのも、開発の狙いとしてあります。もちろんお客様のプライバシーに配慮することは大前提です。

――「Yahoo!音声アシスト」は、技術的にはどういった要素で構成されているのでしょうか?

颯々野氏
 大きく分けて3つあります。「音声認識」と「意味理解」、そして応答のための「情報取得」です。

 まず前段にあるのが「音声認識」です。マイクから入ってくる音をどう言葉に直すか、という部分です。

――なるほど。

颯々野氏
 次が「意味理解」。たとえば「今日の天気を教えて」と喋ったとしたら、その発話の“意図”を勘案する作業ですね。

 「天気情報が知りたいのだろう。そして恐らく、今日の天気が知りたいはず。そしてどの天気を知りたいかといえば、現在地である可能性が高い。ならば該当する天気情報APIを引っぱってきて……」と、そこまでもっていかなければならない。

 開発者の立場からすると「○○年○○月○○日の東京の天気を教えて」とまで指定してくれれば楽なんですけれども(笑)。

――そうですよね(笑)。

颯々野氏
 でも人によっては、同じ天気を知りたくても「今日は傘が要るかな?」「洗濯物、干せそうかな」と聞いてくるかもしれません。

 そのユーザーの根源的な欲求は「天気予報を知りたい」だったとしても、表現はいろいろあるわけです。

 繰り返しになりますが、重要な要素は大きく3つ。「音声認識」と「意味理解」、そして応答を作るための「情報取得」です。

実際にアプリを運用して分かった、意外な使われ方

――なるほど、文字による検索と違って、音声検索・音声対話の場合は、発話の内容から意図を探り当てなければいけないと。それには、具体的にどんな手順をとっているんでしょうか?

颯々野氏
 まずはプラクティカル(実践的)なアプローチですね。一度とにかく製品を出してみて、その動作ログなどを見ながら対応を重ねていく。

 今のお話とも繋がりますが、天気を知りたいとして、その表現は無数にありますから、とても開発者側だけで考えきれるものではありません。

 幸いにも我々は「Yahoo!音声アシスト」アプリをリリースでき、それを日々、ユーザーの皆さんに使っていただいています。その利用例からまさに、修正を重ねていっているんです。

――そうした更新対応は、どういったサイクルで進められているんですか?

颯々野氏
 アプリそのものの更新と、バックエンド側のサーバーの処理を変更するという2つの手段がありますが、どちらも1~3カ月くらいのペースで改修しています。

 ただ2012年のリリース直後は、そもそものデータが少なかったので、更新作業は大変でした。機能としては、Web検索や画像検索、天気、路線の情報取得ができるくらいで。

 必然的に、発話してくれた内容をアプリ側で理解できない機会が多いので、なんらかのエラーメッセージを音声で返す必要があります。これが結構難しくて、「できません」というのか、あるいは認識した言葉をWeb検索して返すのか、いろいろ対応が考えられます。

 結局、その段階ではうまく意図が解析できなかったときは「わかりません。ごめんなさい」と返答するようにしたんです。

 すると、全く想定していなかった発話をユーザーさんが多数なさったんです。「謝らないで」と。

――それは思わぬ反応ですね。機械相手のはずなのに。

颯々野氏
 人間同士の、相手を気遣うコミュニケーションとまったく一緒ですよね。

 でも最初のうちは、「謝らないで」という言葉自体、システム側は理解していないので、また謝ってしまう。

現在は「謝らないで」と音声入力すると、「そう言ってもらえるとホッとします」という場合と、「ありがとうございます」のどちらかで返事してくれる

 逆に、天気の結果を出力した後に、ユーザーさんが「ありがとう」と発話するケースも少なからずあって。こうした事態は本当に想定してなかったんですよ。

 このように用例が積み重なっていくと、たとえばユーザーさんが「どういう意味?」と発話されたら、それはちょっと怒っていて、その直前にシステムがなにか怒らせるような表現をしたのではないかと推定して、そこからログ分析を優先して行うといったことも可能になりました。

 今お話しした事例はまさに、「Yahoo!音声アシスト」を実際に出してみて、お客様に使って頂き、適切に対応していくサイクルがなければ、わかり得ないことでした。研究室の中だけでは、簡単には分からなかったと思います。

同音異義語をどう解釈? そして「コンビニある?」「コンビニない?」に共通する意図

――音声入力による検索では、文字入力に検索と比べて同音異義語の処理は難しいと思うのですが、どういったアーキテクチャーになっているのでしょうか?

颯々野氏
 そうですね……ひらがな2字の「あめ」という言葉で考えたとき、それだけでは空から降る「雨」なのか、舐める「飴」なのかはハッキリしません。

 しかし「あめがふる」という一文で考えると、「雨」を当てはめるのが正しく、逆に「飴」が間違っていると分かります。単語だけでは分からなくても、少し長い文になると分かる。これがまず1つのテクニックです。

 別のケースでは、音として全く一緒だけれども、意図が違うという場合もあります。「バッテリー」という言葉をスマートフォンから音声入力したら、それは恐らく「スマートフォンのバッテリー」を指しているはずで、野球における投手と捕手のコンビを意味する「バッテリー」ではない可能性が高い。

「バッテリー」とだけ話しかけると、スマートフォン本体のバッテリー残量を表示。ただし文脈・意図によっては、野球の「バッテリー」を表示した方がよいかも知れない。そこが音声インターフェイスの難しさだ

 他にも「ゴルフに行きたい」「ゴルフに乗ってみたい」では、同じゴルフでも前者はスポーツのゴルフですし、後者はスポーツとしてのゴルフと同じ愛称を持つ自動車のことを指すでしょう。

 こういったことを前提として、ではユーザーさんが「Yahoo!音声アシスト」アプリに「ラーメン」とだけ、話したとします。これをどう処理するかは、結構難しくて。近くにあるラーメン屋さんを探しているのか、それとも雑談的な意味で「ラーメンが食べたい」とだけ言っているのか。

 仲間のエンジニアと相談していた中では、「ラーメン」「カレー」「牛丼」あたりの、外食としてポピュラーなものであれば、たぶんそれらのチェーン店一覧を返すのがいいだろうという話になりました。

 しかし、「ポトフ」のように、外食としてそこまで一般的でない凝った料理について聞かれたら、そのレシピを知りたいと考えているのだろう、と。

――もはや、人間観察の領域ですね?!

颯々野氏:えぇ、近いですね(笑)。

――こうした中で精度を上げていくには、やはり地道なトライ&エラーを繰り返すしかない?

颯々野氏
 そうですね、つぶさにログをみて対処していくか。また「Yahoo!クラウドソーシング」のようなサービスを使って、沢山の人から「どう処理するのが相応しいか」をデータとして集めるという方法も、一部でやっています。

 人に何かを尋ねる場合、「○○を教えてください」と言います。「○○について知っている人います?」もほとんど同じ意図ですが、そこで「います」という答えを期待している訳ではない。

 「近くにコンビニない?」「近くにコンビニある?」も、言葉としては違いますが、どちらもコンビニを探しているのに変わりはありません。言葉を発している人が何を意図しているかが分からないといけません。

まだまだあります、開発エピソード

――音声入力機能は、ヤフーが展開する各種アプリにも搭載されています。その元となる機能は、「Yahoo!音声アシスト」アプリで使われている仕組みと同じでしょうか?

颯々野氏
 音声認識部分の基本は同じですが、アプリによってやや調整が違います。「Yahoo!音声アシスト」では、会話するような自然文が多いので、それに最適化したモデルを使っています。ですが、キーボード入力を代替する意味での音声入力などには、ちょっと違うモデルを用意しています。

 意図理解と応答を作る部分についても、やはりアプリによって多少の違いがあります。

 たとえば「眠くなってきました」とユーザーが喋ったときに、「Yahoo!音声アシスト」ならば「少し休んではどうですか?」と答えるのが自然ですが、これが「Yahoo!カーナビ」で同じメッセージを出していいのか。もしかすると、次のサービスエリアまでの距離を返した方がいいかもしれません。

 地名もそうですね。「福島」と言っても、東北の福島を考える人もいれば、大阪市内の福島区だという人もいる。こうした意図の違いを判別するときに、スマートフォンの登場はやっぱり大きいんです。GPSが使えますので。

――ちなみにイントネーションは、音声認識においてかなり活用されているんでしょうか。

颯々野氏
 ある程度は使っているのですが、そこまで積極的には活用されていません。(人間には分かりやすいレベルの)イントネーションの違いであっても、コンピュータ側ではまだそこまで判別しきれないというのが、実情のようです。

 特に現在は、1つの統計モデル(入力された音声の周波数や音の大きさといった特徴から、どんな文字に変換すべきか推測するための確率データ)ですべてのユーザーの音声認識を行っています。

 これがもし、ある特定の1人に対して1つの統計モデルを用意することができたなら、また状況は変わってくるかもしれません。ただ、イントネーションで不満げだと分かったとしても、どういう答えを返すかを決め直さないといけないでしょうね。

――方言はどうでしょう?

颯々野氏
 やはり、それなりの認識はできるんですが、今のところユーザーの皆さんが音声エージェントを使うときは、(かしこまって)きちんと話されることが多いようなんです。我々が見ず知らずの人に話しかける時と同じ具合ですね。なので、開発の優先度としてはあまり高くないのが実情です。方言認識用のデータを集める必要もあるでしょう。

「Yahoo!音声アシスト」の将来

――「Yahoo!音声アシスト」の強みは、どんなところでしょうか?

颯々野氏
 (2012年からすでに8年間に渡って)「Yahoo!音声アシスト」を実地的なサービスとしてここまで運営してきて、それだけのデータの蓄積があるという点です。

 開発者がいくら想定発話・想定返答のデータを作っても、それはすべて想像止まりであって、実際のデータとはまた違います。ユーザーデータを得る仕組みがない状況で、ゼロから音声インターフェイスを開発するのは相当しんどいはずです。

 こうした開発環境がありますから、テストも色々できます。さきほども言いましたが、料理名で音声検索された方に、店のリストとレシピのどちらを返せばいいのか。こうした状況の分析も、システムを運用してログ解析できるからこそできます。

――音声インターフェイスのポテンシャルについては、どうお考えでしょう?

颯々野氏
 音声を用いるサービスについては、よく「検索アプリなり乗換案内アプリなりがすでにあるのだから、わざわざ使わないのではないか?」という指摘が出ます。確かに我々としても自問自答するところではあります。

 ただ、声でやりとりすることによって、温かみや親しみを感じてくれる方もいらっしゃいます。それこそ、機械音声に対して「ありがとう」と返事してくれる方ですとか。

 アプリのレビューを見てみますと、ご年配の方から「話し相手ができた」とおっしゃってくれるケースもありました。そこにはきっと利便性だけでなく、愛着をもってくださったのではないかと。

――研究開発を続けてきて、印象深かったことはありますか?

颯々野氏
 そうですね……やはり「人が喋っていることを理解する」ということは、本当に奥深いと感じますね。まだまだ研究が進んでいない領域といいますか。

 書かれた文の解析の研究でも、これが主語で、そっちが目的語、言葉のかかり方はどうだこうだというのはありますが、人が実際に話している言葉や具体的な言い方、その意図となる研究となるとまた違ってきます。

 もちろん、誰もが体感している共通認識はあるんですが、十分にまとめられているか、分かっているかといえばそうではない。会話例はいっぱいあるけれど、辞書にはなっていないと言えばいいでしょうか。

――広大な世界は見えていても、まだ一端でしかない。

颯々野氏
 ええ。機械学習ですとか技術はドンドン進んでいて、それ自体はとてもいいことですが、まだ足りない。

 単に文の構造を解析して、主語や目的語がわかるようにする、等だけでは不十分なんです。意図がわかるだけでもまだ足りません。

 たとえば「今日は仕事が大変だった」と話しかけられたとしたら、「そう話した人は仕事が大変だったのだ、疲れていそうだ」というレベルまで意図を理解することだけでもまだ難しく、仮にそのレベルに達したとしてもまだまだ足りないんです。

 「○○した」と話しかけられたとき、どうしてあげれば良いのか、どういう応答を返せば良いか――コンピューターがそこまで推測できるようになって、初めて「本当に役立つもの」になっていくと思います。そうした未来を実現するために、データを整備していかないと。

 「Yahoo!音声アシスト」を8年ほどやってきてみて、そうした答えが少しずつ貯まってきているのかな、と最近は感じています。

――今後、開発を進める上での目標をお聞かせください。

颯々野氏
 大きな目標としては、「音声の力でインターネットやスマートフォンを便利に使えるようにする」ことですね。今後、ロボットのようなものと対話するシーンも出てくるでしょうから、そこにどう音声の力を役立てていけるか。そのためには「人間のコミュニケーションとは何なのか」という領域も、突き詰めていきたいですね。