(57)【要約】      （修正有）【課題】ハイブリッド音声認識に基づく音声理解を行った上でアプリケーションを実行する際の遅延を抑制する技術を提供する。【解決手段】第１装置を制御する音声理解プログラムであって、前記第１装置に、音声信号に対する前記第１装置による第１音声認識結果に基づいて、第１アプリケーションに対応する第１スロットと第２アプリケーションに対応する第２スロットとに対して第１スロットフィリング処理を行い、前記第１スロットフィリング処理の結果に基づいて、前記第１装置とネットワークで接続された第２装置による前記音声信号に対する第２音声認識に基づく前記第２スロットに対する第２スロットフィリング処理の結果を採用するかの判定を行い、前記判定の結果に基づいて、前記第１アプリケーションまたは前記第２アプリケーションを実行する処理を実行させる。【選択図】図２
2019179116.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータである第１装置に、
音声信号に対する前記第１装置による第１音声認識結果に基づいて、第１アプリケーションに対応する第１スロットと第２アプリケーションに対応する第２スロットとに対して第１スロットフィリング処理を行い、
前記第１スロットフィリング処理の結果に基づいて、前記第１装置とネットワークで接続された第２装置による前記音声信号に対する第２音声認識に基づく前記第２スロットに対する第２スロットフィリング処理の結果を採用するかの判定を行い、
前記判定の結果に基づいて、前記第１アプリケーションまたは前記第２アプリケーションを実行する
処理を実行させる音声理解プログラム。
【請求項２】
前記音声信号を前記ネットワークを介して前記第２装置に送信し、
前記第２スロットフィリング処理の結果を採用すると前記判定を行った場合、前記第２スロットフィリング処理の結果を前記第２装置から受信する
処理を実行させる、請求項１に記載の音声理解プログラム
【請求項３】
前記第１スロットは第１キースロットを有し、
前記第１スロットフィリング処理において前記第１キースロットが埋まった場合、前記第２スロットフィリング処理の結果を採用しないと前記判定を行い、
前記第２スロットフィリング処理を待つことなく、前記第１アプリケーションを実行する
処理を実行させる、請求項１または２に記載の音声理解プログラム。
【請求項４】
前記第２スロットは第２キースロットを有し、
前記第１スロットフィリング処理において前記第２キースロットが埋まった場合、前記第２スロットフィリング処理の結果を採用すると前記判定を行い、
前記第２スロットフィリング処理の結果に基づいて、前記第２アプリケーションを実行する
処理を実行させる、請求項３に記載の音声理解プログラム。
【請求項５】
前記第１スロットフィリング処理において前記第１キースロットと前記第２キースロットの両方が埋まった場合、前記第２スロットフィリング処理の結果を採用しないと前記判定を行い、
前記第２スロットフィリング処理を待つことなく、前記第１アプリケーションを実行する
処理を実行させる、請求項３に記載の音声理解プログラム。
【請求項６】
前記第１スロットフィリング処理において前記第１キースロットと前記第２キースロットの両方が埋まった場合、前記第２スロットフィリング処理の結果を採用すると前記判定を行い、
前記第２スロットフィリング処理の結果に基づいて、前記第２アプリケーションを実行する
処理を実行させる、請求項３に記載の音声理解プログラム。
【請求項７】
前記第１スロットフィリング処理において前記第１キースロットと前記第２キースロットの両方が埋まらなかった場合、前記第２スロットフィリング処理の結果を採用すると前記判定を行い、
前記第２スロットフィリング処理の結果に基づいて、前記第２アプリケーションを実行する
処理を実行させる、請求項３に記載の音声理解プログラム。
【請求項８】
前記第２装置は、前記第１装置よりも計算機資源が大規模な装置である
請求項１〜７のいずれか一項に記載の音声理解プログラム。
【請求項９】
前記第２アプリケーションは、前記第１アプリケーションよりも、語彙が豊富な音声認識を要する
請求項１〜８のいずれか一項に記載の音声理解プログラム。
【請求項１０】
音声理解装置であって、
音声信号に対する前記音声理解装置による第１音声認識結果に基づいて、第１アプリケーションに対応する第１スロットと第２アプリケーションに対応する第２スロットとに対して第１スロットフィリング処理を行うスロットフィリング部と
前記第１スロットフィリング処理の結果に基づいて、前記音声理解装置とネットワークで接続された他装置による前記音声信号に対する第２音声認識に基づく前記第２スロットに対する第２スロットフィリング処理の結果を採用するかの判定を行う判定部と、
前記判定の結果に基づいて、前記第１アプリケーションまたは前記第２アプリケーションを実行する実行部と、
を備える音声理解装置。
【請求項１１】
音声理解装置が、音声信号に対する前記音声理解装置による第１音声認識結果に基づいて、第１アプリケーションに対応する第１スロットと第２アプリケーションに対応する第２スロットとに対して第１スロットフィリング処理を行い、
前記音声理解装置が、前記第１スロットフィリング処理の結果に基づいて、前記音声理解装置とネットワークで接続された他装置による前記音声信号に対する第２音声認識に基づく前記第２スロットに対する第２スロットフィリング処理の結果を採用するかの判定を行い、
前記音声理解装置が、前記判定の結果に基づいて、前記第１アプリケーションまたは前記第２アプリケーションを実行する、
音声理解方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声理解プログラム、音声理解装置および音声理解方法に関する。
【背景技術】
【０００２】
音声認識技術の精度向上に伴い、音声認識を利用するアプリケーション（アプリケーションソフトウェア）の普及が進んでいる。そのようなアプリケーションには、挨拶のやりとりなどの簡単なものから、飛行機のチケット予約などの複雑なものまで、様々な難易度のものが存在する。
【０００３】
音声認識を利用するアプリケーションは、音声認識結果に対して音声理解を行った上で実行される。音声理解は、スロットフィリングと呼ばれる方法を用いて行うことができる。スロットフィリングにおいては、アプリケーションごとに用意された１つ以上のスロット（スロットセットと呼ばれる）を音声認識結果に基づいて埋める処理（フィリング）を行う。一例としては、飛行機予約を行うアプリケーションの場合、タスク（飛行機予約）、日付、時刻、出発地、到着地等をするスロットが用意され、音声認識結果に基づいてそれらを埋めることにより、アプリケーションを実行することができる。
【０００４】
音声認識結果を利用するアプリケーションには、音声認識に対して豊富な語彙を必要とするものと、そうでないものとがある。簡単なアプリケーションであれば、音声認識に対してそれほど豊富な語彙は必要としない。少ない語彙の音声認識による認識結果であっても、簡単なアプリケーション向けのスロットは埋まる場合が多いためである。一方、複雑なアプリケーションであれば、豊富な語彙を有する音声認識を行わないと、アプリケーションが適切に動作しない等の支障が生じる。これは、豊富な語彙を有する音声認識による認識結果でなければ、複雑なアプリケーション向けのスロットを埋めることは難しい場合が多いためである。
【０００５】
一般に、豊富な語彙を有する音声認識には、潤沢な計算機リソースを要することから、クラウド装置等において実行される。これに対し、語彙が少ない音声認識は、貧弱な計算機リソースでも実行可能なことから、パソコン、タブレット、スマートフォン、携帯電話等のローカル端末において実行される。特許文献１には、ローカル端末およびクラウド装置でそれぞれ音声認識処理を実行するハイブリッド音声認識に関する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−２３２００１号公報
【特許文献２】特開２００６−０５３４７０号公報
【特許文献３】特開２０１６−０６１９５４号公報
【特許文献４】特開２００３−０５８１８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
音声認識を利用してアプリケーションを実行する際、人手でアプリケーションを選択する方法もあるが、音声認識結果に基づいてアプリケーションを自動的に選択することも考えられる。これをハイブリッド音声認識を用いて実現する場合、例えば次のような実現方法が考えられる。
【０００８】
まず、入力音声をローカル端末側で音声認識を行うとともに、その入力音声をクラウド装置に転送してクラウド装置側でも音声認識を行う。次に、ローカル端末側の音声認識結果を用いて、多くの語彙を必要としないアプリケーション向けの各スロットセットに対して、スロットフィリングを行う。また、ローカル端末はクラウド装置側の音声認識結果を受信し、多くの語彙を必要とするアプリケーション向けの各スロットセットに対して、スロットフィリングを行う。そして、スロットフィリングが成功した（すなわち、キースロットを含む必要なスロットが埋まった）スロットセットについて、そのスロットセットに対応するアプリケーションを実行する。
【０００９】
このようにすれば所望の機能は実現されうるが、問題も残っている。具体的には、多くの語彙を必要とするアプリケーションに対応するスロットセットに対しては、クラウド装置側の音声認識結果を待たなければ、スロットフィリングを行うことができない（すなわち、音声理解を行うことができない）。これにより、多くの語彙を必要とするアプリケーションについては、クラウド装置側の音声認識を受信するまでは何の処理も開始できず、換言すれば、開始時間に遅延が生じる。また、この遅延は、クラウド装置内での音声認識に掛かる時間に加え、ローカル端末とクラウド装置との間の入力音声や音声認識結果の送受信に掛かる時間も含む。そのため、多くの語彙を必要とするアプリケーションに対してハイブリッド音声認識を適用する場合、処理の開始が大きく遅れることになる。これが上述した実現方法の問題である。
【００１０】
開示の技術は、ハイブリッド音声認識に基づく音声理解を行った上でアプリケーションを実行する際の遅延を抑制することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、第１装置を制御する音声理解プログラムであって、前記第１装置に、音声信号に対する前記第１装置による第１音声認識結果に基づいて、第１アプリケーションに対応する第１スロットと第２アプリケーションに対応する第２スロットとに対して第１スロットフィリング処理を行い、前記第１スロットフィリング処理の結果に基づいて、前記第１装置とネットワークで接続された第２装置による前記音声信号に対する第２音声認識に基づく前記第２スロットに対する第２スロットフィリング処理の結果を採用するかの判定を行い、前記判定の結果に基づいて、前記第１アプリケーションまたは前記第２アプリケーションを実行する処理を実行させる。
【発明の効果】
【００１２】
本件の開示する技術の一態様によれば、ハイブリッド音声認識に基づく音声理解を行った上でアプリケーションを実行する際の遅延を抑制できるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、ハイブリッド音声認識システムのハードウェアブロック図である。
【図２】図２は、ハイブリッド音声認識システムの機能ブロック図である。
【図３】図３は、音声認識言語モデルの規模イメージ図である。
【図４】図４は、スロットフィリング処理結果に基づく判定処理のフローチャートである。
【図５】図５は、アプリケーション毎のスロットフィリングのイメージ図である。
【図６】図６は、スロットフィリング処理の第一のイメージ図である。
【図７】図７は、スロットフィリング処理の第二のイメージ図である。
【図８】図８は、スロットフィリング処理の第三のイメージ図である。
【図９】図９は、スロットフィリング処理の第四のイメージ図である。
【発明を実施するための形態】
【００１４】
図１は、ハイブリッド音声認識システムのハードウェアブロック図である。図１において、ハイブリッド音声認識システム１は、ローカル端末２、クラウド装置３、ルーター２２を有する。ローカル端末２、クラウド装置３、およびルーター２２は、ネットワーク２１により互いに接続されている。ローカル端末２は、ルーター２２との無線通信接続を経由するか、または有線によりネットワーク２１に接続することができる。
【００１５】
ローカル端末２はユーザからの音声入力を受け付けると共に、ユーザへ音声認識処理に基づく音声理解を行う音声理解装置として機能する。ローカル端末２は、例えばパソコン、タブレット、スマートフォン、携帯電話等のコンピュータである。ローカル端末２は、ＳｏＣ２３、無線通信部２４、マイク部２５、スピーカ部２６、センサ部２７、ＢＬＥ部２８、タッチパネル部２９、カメラ部３０、ＲＡＭ３１、ＦＬＡＳＨ３２、通信部３３を有する。ＳｏＣ２３は、無線通信部２４、マイク部２５、スピーカ部２６、センサ部２７、ＢＬＥ部２８、タッチパネル部２９、カメラ部３０、ＲＡＭ３１、ＦＬＡＳＨ３２、通信部３３とそれぞれ電気的に接続されている。
【００１６】
ＳｏＣ２３は、Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐである。ＳｏＣ２３は、中央演算処理装置であるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）および、ローカル端末２の機能を制御するためのシステムを有する。ＳｏＣ２３は、例えばＦＬＡＳＨ３２に記憶されているＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を読出し、ローカル端末２の様々な機能を実行するプロセッサである。
【００１７】
無線通信部２４は、ルーター２２とローカル端末２との無線通信接続を行う。無線通信接続は例えば、Ｗｉ−Ｆｉなどの無線ＬＡＮでの接続である。ローカル端末２とネットワーク２１との接続は、ＬＴＥなどの移動体通信による接続であっても良いし、通信部３３による有線接続であっても良い。
【００１８】
マイク部２５は、ユーザからの音声入力を受信し、空気振動を電気信号に変換する。マイク部２５は、アナログの電気信号をデジタル信号に変換するＡＤＣ（Ａｎａｌｏｇ  ｔｏ  Ｄｉｇｉｔａｌ  Ｃｏｎｖｅｒｔｅｒ）を有しても良い。
【００１９】
スピーカ部２６は、ＳｏＣ２３の処理結果をアナログ音声としてユーザに伝達する。スピーカ部２６は、ＳｏＣ２３の処理結果であるデジタル信号をアナログ信号に変換するＤＡＣ（Ｄｉｇｉｔａｌ  ｔｏ  Ａｎａｌｏｇ）を有しても良い。
【００２０】
センサ部２７は、ローカル端末２の周辺環境に関する情報をデジタル信号に変換する。センサ部２７は例えば、温度センサ、湿度センサ、加速度センサ、ＧＰＳなどである。ここでＧＰＳは、Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍの略であり、人工衛星からの電波に基づき、地球上の現在位置を測定する装置である。センサ部２７は、各種センサに基づき定期的または不定期にセンシングデータを収集し、ＳｏＣ２３に送信してもよい。
【００２１】
ＢＬＥ部２８は、近距離無線通信技術であるＢｌｕｅｔｏｏｔｈ（登録商標）の拡張仕様の一つであるＢｌｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙである。ＢＬＥ部２８は、ローカル端末２と外部装置との近距離無線通信を実現する。
【００２２】
タッチパネル部２９は、液晶パネルのような表示装置とタッチパッドのような位置入力装置を組み合わせた電子部品である。ユーザは、タッチパネル部２９の表示を押すことで、ローカル端末２を操作することができる。
【００２３】
カメラ部３０は、映像を撮影するための装置である。カメラ部３０は、撮影した映像データをＳｏＣ２３へ送信する。
【００２４】
ＲＡＭ３１は、記憶装置の一種であるＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙである。ＲＡＭ３１は、例えばＳｏＣ２３の演算処理結果を一時記憶する。
【００２５】
ＦＬＡＳＨ３２は、不揮発な記憶装置の一種であるＦｌａｓｈ  Ｍｅｍｏｒｙである。ＦＬＡＳＨ３２は、例えばＳｏＣ２３により実行されるＯＳや、本実施形態を実現するための音声理解プログラムを記憶する。
【００２６】
通信部３３は、ローカル端末２とネットワーク２１とを有線接続する。通信部３３は、例えば無線通信部２４とルーター２２との無線通信接続が不安定な場合に使用することにより、ローカル端末２とネットワーク２１との接続を安定させることができる。クラウド装置３は、ローカル端末２と同様に、無線通信によりネットワーク２１に接続しても良い。
【００２７】
クラウド装置３は、ローカル端末２から受信した音声信号に基づき、ローカル端末２よりも大きな計算機リソースを活用し、ローカル端末２よりも精度の高い音声認識処理を実行する。なお、クラウド装置３は計算機リソースが比較的大きい装置またはシステムの一例であり、これの代わりに複数の装置によるグリッド・コンピューティング・システムや単一のサーバ装置等であっても構わない。
【００２８】
バス３５は、クラウド装置３内の各部を接続する。通信部３６は、クラウド装置３とネットワーク２１とを有線接続する。記憶部３７は、後述するＲＡＭ３８やＲＯＭ３９以外の記憶装置であり、例えばＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）である。ＲＡＭ３８はＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙであり、データを一時記憶する。ＲＯＭ３９はＲｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙであり、例えばＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）などのプログラムを記憶する。ＣＰＵ４０は、例えば記憶部３７に記憶されたＯＳを実行する。入力部４１は、ユーザがクラウド装置３に対しプログラムの実行条件などを入力するためのキーボードやマウスである。表示部４２は、ＣＰＵ４０の処理結果などをユーザに見せるためのディスプレイである。
【００２９】
図２は、ハイブリッド音声認識システムの機能ブロック図である。図２のハイブリッド音声認識システム１について、図１のハードウェア構成に対応するブロックには同じ符号を付している。
【００３０】
ローカル端末２において、ローカル音声認識部４、スロットフィリング部７、スロットフィリング部８、判定部１０、音声合成部１３、対話制御部１１、実行部１２、各アプリケーション１４Ａ〜Ｂまたは１５Ａ〜Ｂの機能は、図１におけるＳｏＣ２３がＦＬＡＳＨ３２に記憶された音声理解プログラムを読み出して実行することにより実現される。また、ローカル音声認識言語モデル５、ローカルスロット６、クラウドスロット９は、ＦＬＡＳＨ３２、ＲＡＭ３１等に記憶される。
【００３１】
マイク部２５は、受信したアナログ音声をＡＤ変換し、ローカル端末２のローカル音声認識部４およびクラウド装置３のクラウド音声認識部１６にデジタル音声信号を送信する。
【００３２】
ローカル端末２におけるローカル音声認識部４は、受信したデジタル音声信号に対し、ローカル音声認識言語モデル５に基づく音声認識処理を行う。ローカル音声認識言語モデル５は、音声認識処理に必要な音素の並び方に関する制約などの言語的な特徴を言語モデルとして記録したものである。
【００３３】
クラウド装置３におけるクラウド音声認識部１６は、受信したデジタル音声信号に対し、クラウド音声認識言語モデル１７に基づく音声認識処理を行う。クラウド音声認識言語モデル１７は、ローカル音声認識言語モデル５と同様に、音声認識処理に必要な音素の並び方に関する制約などの言語的な特徴を言語モデルとして記録したものである。
【００３４】
図３は、音声認識言語モデルの規模イメージ図である。図３において円の大きさは、それぞれの音声認識モデルのデータサイズを示す。図３において、クラウド音声認識言語モデル１７のデータサイズは、ローカル音声認識言語モデル５のデータサイズよりも大きい。
【００３５】
音声認識処理において、参照する言語モデルが多いほど、認識可能な語彙数は多くなるが、入力されたデジタル音声と言語モデルとの比較参照処理に必要なハードウェアのリソースは多くなる。従って、計算機リソースの制限を受けやすいローカル端末２におけるローカル音声認識言語モデル５の規模は、計算機リソースの制限を受けにくいクラウド装置３におけるクラウド音声認識言語モデル１７よりも小さくなる。よって、ローカル音声認識部４の音声認識処理は、認識可能な語彙数がクラウド音声認識部１６よりも少なくなる。一方、クラウド音声認識部１６は、認識可能な語彙数はローカル音声認識部４よりも多くなるが、デジタル音声信号をネットワーク２１を経由して受信するため、ローカル音声認識部４よりも音声処理の開始タイミングが遅くなる。また、クラウド音声認識部１６が参照するクラウド音声認識言語モデル１７の規模はローカル音声認識言語モデル５よりも大きい。従って、クラウド音声認識部１６において音声認識処理が完了するのは、ローカル音声認識部４よりも遅くなる。
【００３６】
ローカル音声認識部４は、音声認識処理結果をスロットフィリング部７およびスロットフィリング部８に送信する。クラウド音声認識部１６は、音声認識処理結果をスロットフィリング部１８に送信する。
【００３７】
スロットフィリング部７および８は、受信した音声認識処理結果に基づき、スロット（ローカルスロット６およびクラウドスロット９）に対しスロットフィリング処理を行う。上述したように、スロットフィリングは音声理解のために行われる処理である。音声認識結果を利用するアプリケーション毎に、それぞれが１つ以上のスロットを有するスロットセットが用意される。ここでスロットとは、ユーザのインテントを満たすために取得すべきデータの断片であり、インテントとは、ユーザが達成したいゴール（テレビをつける、飛行機のチケットを買う、天気予報を取得する、など）を示す。スロットフィリング処理とは、各インテントを満たすために用意したスロットに、音声認識処理結果に基づき取得したデータを埋めていくことにより、音声理解を行う処理である。
【００３８】
ところで、本実施形態においては、語彙が比較的少ない音声認識であっても高い確率で実行可能なアプリケーション（すなわち、語彙が比較的少ない音声認識であっても高い確率で十分なスロットが埋まるアプリケーション）を、ローカルアプリケーション１４と称する。これに対し、語彙が比較的多い音声認識を用いなければ高い確率では実行できないアプリケーション（すなわち、語彙が比較的少ない音声認識では高い確率で十分なスロットが埋まらないアプリケーション）を、クラウドアプリケーション１５と称する。ここで、クラウドアプリケーション１５とは便宜上の呼称であり、必ずしもクラウド装置３において実行される必要は無いことには留意されたい。本実施形態においては、後述するように、ローカルアプリケーション１４のみならず、クラウドアプリケーション１５もローカル端末２において実行される。
【００３９】
また、ローカルアプリケーション１４に対応するスロット（スロットセット）をローカルスロット６と称する。これに対し、クラウドアプリケーション１５に対応するスロット（スロットセット）をクラウドスロット９と称する。これらの呼称も便宜上のものであり、本実施形態においてはクラウドスロット９はクラウド装置３とローカル端末２との両者により更新されうる。
【００４０】
ローカル端末２は二つのスロットフィリング部７および８を備える。スロットフィリング部７は、ローカル音声認識部４による音声認識結果に基づき、ローカルスロット６に対するスロットフィリングを行う。一方、スロットフィリング部８は、ローカル音声認識部４による音声認識結果に基づき、クラウドスロット９に対するスロットフィリングを行う。
【００４１】
これに対し、クラウド装置３は一つのスロットフィリング部１８を備える。スロットフィリング部１８は、スロットフィリング部８と同様に、ローカル端末２のクラウドスロット９に対してスロットフィリング処理を行う。なお、現実には、スロットフィリング部１８はクラウド装置３が有するクラウドスロット（不図示）に対してスロットフィリング処理を行い、その処理結果をローカル端末２に対して送信することで、ローカル端末２におけるクラウドスロット９を更新することができる。
【００４２】
判定部１０は、ローカルスロット６およびクラウドスロット９のスロットフィリング処理結果に基づき、ユーザのインテントの推定を行うと共に、いずれのスロットフィリング処理結果を用いてユーザのインテントを満たすべきか（換言すれば、どのアプリケーションを実行するべきか）の判定（調停）を行う。判定部１０は、推定したユーザのインテントに関する情報およびローカルスロット６またはクラウドスロット９のスロットデータを対話制御部１１および実行部１２に送信する。判定部１０の処理の詳細については後述する。
【００４３】
対話制御部１１は、スロットフィリングの結果に基づき、値が不足しているスロットがあれば、ユーザに対し追加の情報を要求する質問等を出力する。また、対話制御部１１は、各アプリケーション（ローカルアプリケーション１４やクラウドアプリケーション１５）の処理結果を音声合成部１３に送信する。
【００４４】
実行部１２は、受信したインテントに関する情報およびスロットデータに基づき、前述したローカルアプリケーション１４またはクラウドアプリケーション１５を選択して実行する。なお、ローカルアプリケーション１４またはクラウドアプリケーション１５は、それぞれスタンドアロン型のアプリケーションであっても良いし、クライアント型のアプリケーションであっても良い。例えば、音声認識に基づいて挨拶を返すようなアプリケーションや、音声認識に基づいて家電を操作するようなアプリケーションは、スタンドアロン型のアプリケーションとして実現できる。一方、音声認識に基づく飛行機予約や天気予報等については、通常はサーバ（不図示）への問合せを要することから、クライアント型のアプリケーションとして実現される。クライアント型のアプリケーションは、音声理解の結果に基づくリクエスト（例えばユーザが予約を希望する飛行機の条件）をサーバに対して送信し、リクエストに対するレスポンス（例えば飛行機予約結果）をサーバから受信することで、ユーザにサービスを提供する。
【００４５】
音声合成部１３は、受信した処理結果に応じて音声合成処理を行い、音声信号をスピーカ部２６へ送信する。スピーカ部２６は、受信した音声信号に応じて音声出力する。
【００４６】
なお、音声出力はアプリケーションによる出力の一例に過ぎず、アプリケーションはこれ以外の出力を行うこともできる。例えば、挨拶を返すようなアプリケーションの出力は音声出力となるが、テレビを操作するようなアプリケーションの出力はテレビをコントロールするための無線信号となるし、飛行機予約を行うようなアプリケーションの出力は飛行機予約結果に関する画面上の出力とすることができる。
【００４７】
あいさつ１４Ａおよびテレビ操作１４Ｂは、上述したローカルアプリケーション１４の例である。また、天気予報１５Ａおよび飛行機予約１５Ｂは、上述したクラウドアプリケーション１５の例である。なお、これらは例示に過ぎず、各アプリケーションの種類や数はこれに限定されるものでは無いことは言うまでもない。
【００４８】
以上の通りハイブリッド音声認識システム１は、ローカル端末２およびクラウド装置３におけるスロットフィリング処理結果に基づき、ユーザのインテントを効率よく適切に判定し、ユーザへの応答処理を実行することができる。
【００４９】
図４は、スロットフィリング処理結果に基づく判定処理のフローチャートである。ローカル端末２は、受信した音声入力に対し、図４のフローチャートに従い、スロットフィリング処理結果（すなわち、音声理解処理結果）の判定処理を実行する。
【００５０】
ローカル端末２は、マイク部２５によりユーザからの音声入力を受信する（ステップＳ１）。ローカル端末２は、受信した音声入力をデジタル信号に変換し、クラウド装置３へ音声データを送信する（ステップＳ７）。クラウド装置３は、ローカル端末２から送信された音声データを受信する（ステップＳ２１）。クラウド装置３は、クラウド音声認識部１６によりクラウド音声認識処理を行う（ステップＳ２２）。クラウド装置３は、クラウドスロットフィリング処理を実行する（ステップＳ２３）。クラウド装置３は、クラウドスロットフィリングの処理結果をローカル端末２へ送信する（ステップＳ２４）。
【００５１】
クラウド装置３は、ローカル端末２に入力された音声データをネットワーク２１経由で受信するため、ローカル端末２よりも遅く音声認識処理を開始する。また、クラウド装置３はローカル端末２よりも十分なリソースを有するため、音声認識において参照するクラウド音声認識言語モデル１７の規模はローカル音声認識言語モデル５よりも大きくなる。参照する音声認識言語モデルの規模が多くなると、音声認識処理における検索負荷が大きくなり、音声認識処理時間は長くなる。従って、クラウド装置３がスロットフィリング処理結果をローカル端末２へ送信する時点で、ローカル端末２でのスロットフィリング処理が完了している可能性が高い。ただし、クラウド音声認識言語モデル１７の規模はローカル音声認識言語モデル５よりも大きいため、クラウド音声認識の方がローカル音声認識よりも語彙が多い。そのため、たとえ音声認識処理時間が長くても、クラウドアプリケーション１５においてはクラウド音声認識に基づくクラウドスロットフィリングの処理結果が必要な場合が起こり得る。そこでローカル端末２は、以下の通りスロットフィリング処理を行い、スロットフィリング処理結果に基づいて、クラウド装置３でのスロットフィリング処理結果を採用（取得）するか否かを判断する。
【００５２】
ローカル端末２は、受信した音声入力をデジタル信号に変換し、ローカル音声認識部４によるローカル音声認識処理を行う（ステップＳ２）。ローカル端末２は、ローカル音声認識処理結果に基づき、ローカルスロット６を埋めるローカルスロットフィリング処理を実行する（ステップＳ３）。ローカル端末２は、ローカルスロットフィリング処理と並行して、ローカル音声認識処理結果に基づき、クラウドスロット９を埋めるクラウドスロットフィリング処理を実行する（ステップＳ４）。
【００５３】
図５は、アプリケーション毎のスロットフィリングのイメージ図である。図５（ａ）は、テレビ操作アプリケーション１４Ｂのスロットフィリング（スロットセット）のイメージ図である。テレビ操作アプリケーション１４Ｂは、ローカルアプリケーション１４の一例である。一方、図５（ｂ）は、飛行機予約アプリケーション１５Ｂのスロットフィリング（スロットセット）のイメージ図である。飛行機予約アプリケーション１５Ｂは、クラウドアプリケーション１５の一例である。
【００５４】
図５（ａ）において、列５０はスロット名を示し、列５１は、それぞれのスロットに対応する値を示す。同様に、図５（ｂ）において、列５２はスロット名を示し、列５３は、それぞれのスロットに対応する値を示す。
【００５５】
列５０および列５２のスロット名には、いずれも「タスク」という名称のスロットが存在する。そして、この例においては「タスク」のスロットの内容によって、実行すべきアプリケーションを特定することができる。このようなスロットは、キースロットと呼ばれる。なお、スロットセットの構成によっては、１つのスロットセットに複数のキースロットが存在する場合もありうる。一例としては、例えば図５（ａ)のスロットセットの場合、たとえテレビと発生しなくても、「チャンネルを８チャンネルに変更」という音声から、「操作種別」と「チャンネル」のスロットが埋まり、実行すべきアプリケーションがテレビ操作アプリケーションと特定できるような場合が挙げられる。
【００５６】
ローカル端末２は、図５（ａ）に示すスロットフィリング（ローカルスロットフィリング）において、キースロットであるタスクのスロットに「テレビ」という値が入った場合、テレビ操作アプリケーション１４Ｂを実行すべく、図５（ａ）に示される残りのスロット（操作種別や指定するチャンネル等）に対するスロットフィリングを行う。一方、ローカル端末２は、図５（ｂ）に示すスロットフィリング（クラウドスロットフィリング）において、キースロットであるタスクのスロットに「飛行機予約」という値が入った場合、飛行機予約アプリケーション１５Ｂを実行すべく、図５（ｂ）に示される残りのスロット（日時や出発地等）に対するスロットフィリングを行う。
【００５７】
図４の説明に戻る。ローカル端末２は、ローカルスロット６およびクラウドスロット９のスロットフィリング処理結果に基づき、いずれのスロットフィリング処理結果を採用すべきかの判定処理を行う。まず、ローカル端末２は、ローカル端末２において処理したクラウドスロット９のキースロットが埋まっているか否かをチェックする（ステップＳ５）。ローカル端末２は、クラウドスロットのキースロットが埋まっていると判定した場合（ステップＳ５：ＹＥＳ）、クラウド装置３から受信したクラウドスロットフィリング処理結果を採用する（ステップＳ８）。そして、採用したクラウドスロットフィリング処理結果をもって、ハイブリッド音声認識に基づく音声理解結果を確定させ（ステップＳ１０）、それに対応するクラウドアプリケーション１５を実行する（ステップＳ１１）。
【００５８】
一方、ローカル端末２は、ローカル端末２において処理したクラウドスロットのキースロットが埋まっていないと判定した場合（ステップＳ５：ＮＯ）、ローカル端末２が処理したローカルスロット６のキースロットが埋まっているか否かをチェックする（ステップＳ６）。ローカル端末２は、ローカルスロット６のキースロットが埋まっていると判定した場合（ステップＳ６：ＹＥＳ）、ローカル端末２が処理したローカルスロットフィリング処理結果を採用する（ステップＳ９）。そして、採用したローカルスロットフィリング処理結果をもって、ハイブリッド音声認識に基づく音声理解結果を確定させ（ステップＳ１０）、それに対応するローカルアプリケーション１４を実行する（ステップＳ１１）。
【００５９】
ローカル端末２は、ローカルスロット６が埋まっていないと判定した場合（ステップＳ６：ＮＯ）、ステップＳ２以降のスロットフィリング処理を継続する。ローカル端末２は、ローカルスロット６が埋まっていないと判定した場合、埋まっていないスロットの情報を取得するためのユーザへの質問を作成し、対話制御部１１を制御してユーザへの質問をスピーカ部２６から発信してもよい。ローカル端末２は、質問に対するユーザからの回答を音声で受信することにより、埋まっていないスロットの情報を取得することができる。      
【００６０】
上述したように、クラウドアプリケーションは豊富な語彙を有するクラウド音声認識を前提とするものである。しかしながら、クラウド音声認識を待ってからクラウドアプリケーションに関する処理を開始するのでは、開始時間に遅延が発生するのは既に述べた通りである。これに対し、本実施形態においては、クラウド音声認識を待たずに、ローカル音声認識結果を用いてローカルスロットフィリングに加えてクラウドスロットフィリングも行ってしまう。その理由は、クラウドスロットフィリングを完了させるためには最終的にはクラウド音声認識が必要となる場合が多いとしても、ローカル音声認識結果がクラウドスロットをある程度埋めることができる場合も多いと考えられるためである。例えば飛行機予約アプリケーションに対応するスロットセット中の出発地や到着地等のスロットについては、固有名詞の認識を行うためにクラウド音声認識が必要となるかもしれないが、キースロットである「飛行機」については、基本的な単語であるためローカル音声認識でも十分に埋めることができる。このようにすることで、少なくともどのスロットセットを埋めるべきか（換言すれば、どのアプリケーションを実行するべきか）については、クラウド音声認識を待つことなく、決定することが可能となる。そして、クラウドスロットフィリングにおいては、最終的にはクラウド音声認識を待つことになるかもしれないが、その間にスロットを埋めるために必要な処理（ユーザへの問合せ等）をある程度進めることもできる。以上により、本実施形態においては、豊富な語彙を有するクラウド音声認識を前提とするクラウドアプリケーションであっても、クラウド音声認識の結果を待つことなく音声理解を行い、関連する処理を開始することができる。
【００６１】
以上の通りハイブリッド音声認識システム１は、音声入力の内容に応じて、ローカル端末２におけるスロットフィリング処理結果に基づいてクラウド装置３での音声認識を取得すべきか否かを判定することにより、適切な音声認識を選択しつつ応答速度を高めることができる。その結果、ハイブリッド音声認識に基づく音声理解を行った上でアプリケーションを実行する際の遅延を抑制することができる。
【００６２】
図６は、スロットフィリング処理の第一のイメージ図である。図６において、行６Ａはローカルスロット６のスロットフィリング処理結果であり、行９Ａはクラウドスロット９のスロットフィリング処理結果である。図６において、ローカルスロット６およびクラウドスロット９はそれぞれ４つのスロットを有し、最も左のスロットをキースロットとする。行６Ａおよび行９Ａの白丸は何もデータが入っていない空のスロットを表す。行６Ａの黒丸は、データが入っているスロットを表す。
【００６３】
ローカル端末２は、スロットフィリング処理の結果、図６のようにローカルスロット６にデータがあり、クラウドスロット９にデータが無い場合、クラウド装置３でのスロットフィリング処理結果を待たずにローカル端末２でのスロットフィリング処理結果に基づいて対話制御処理を進める。例えばローカル端末２は、ローカルスロット６のスロットフィリング処理結果に基づき、空のスロットを埋めるための質問を生成し、音声信号としてユーザに出力する。ローカル端末２は、ローカルスロット６のスロットフィリング処理結果に基づきユーザへの質問を出力することにより、ユーザからの音声入力に対し高い応答速度で音声認識処理を実行することができる。
【００６４】
図７は、スロットフィリング処理の第二のイメージ図である。図７における行６Ｂおよび行９Ｂは、図６における行６Ａおよび９Ａに対応するため、説明は省略する。
【００６５】
ローカル端末２は、スロットフィリング処理の結果、図７のようにクラウドスロット９にデータがあり、ローカルスロット６にはデータが無い場合、クラウド装置３でのスロットフィリング処理結果が必要と判断する。ローカル端末２は、クラウド装置３でのスロットフィリング処理結果を受信後、ローカル端末２でのスロットフィリング処理結果と合わせて対話制御処理を進める。例えばローカル端末２は、ローカルスロット６のスロットフィリング処理結果とクラウド装置３のスロットフィリング処理結果に基づき、空のスロットを埋めるための質問を生成し、音声信号としてユーザに出力する。ローカル端末２は、クラウドスロット９のスロットフィリング処理結果およびクラウド装置３のスロットフィリング処理結果に基づきユーザへの質問を出力することにより、ユーザからの複雑な要求に対し、必要に応じて高い信頼性で音声認識処理を実行することができる。
【００６６】
ところで、上述した図４に示されるフローチャートにおいては、図６や図７のように、ローカルスロット６のキースロットとクラウドスロット９のキースロットのいずれか一方が埋まるような比較的通常の場合を想定している。しかしながら現実には、ローカルスロット６のキースロットとクラウドスロット９のキースロットの両方が埋まる場合や、両方が埋まらない場合も起こり得る。以下ではこれらの場合について説明する。
【００６７】
図８は、スロットフィリング処理の第三のイメージ図である。図８における行６Ｃおよび行９Ｃは、図６における行６Ａおよび９Ａに対応するため、説明は省略する。
【００６８】
図８は、例外的にクラウドスロット９とローカルスロット６との両方のキースロットが埋まった場合を示している。この場合の処理としては、音声対話の戦略／方針に応じていくつかの処理が考えられる。例えば、応答速度の速さを優先させ、ローカルスロット６に対応するローカルアプリケーション１４を実行する。また、ユーザのインテント理解を優先させ、クラウド装置３によるスロットフィリング結果が得られるのを待ち、クラウドアプリケーション１５を実行する。さらには、時間差をもって、両者を実行してもよい。
【００６９】
図９は、スロットフィリング処理の第四のイメージ図である。図９における行６Ｄおよび行９Ｄは、図６における行６Ａおよび９Ａに対応するため、説明は省略する。
【００７０】
図９は、例外的にクラウドスロット９とローカルスロット６のいずれのキースロットも埋まらなかった場合を示している。この場合の処理としては、音声対話の戦略／方針に応じていくつかの処理が考えられる。例えば、クラウドスロット９とローカルスロット６のどちらにおいて多くのスロットが埋まっているかを判定し、多く埋まっている方のアプリケーションを実行することができる。また、応答速度の速さを優先させ、クラウド音声認識を待たずに、ローカルアプリケーション１４を実行することができる。さらに、音声認識における語彙の多さを優先させ、クラウド音声認識を待って、クラウドアプリケーション１５を実行することもできる。この場合、即時にクラウドアプリケーション１５を実行することはできないため、クラウド装置３によるクラウドスロットフィリングの結果を待って、クラウドスロット９を更新することができる。また、ユーザのインテント理解を優先させ、例えば「もう一度発声してください」等とユーザに再発話を促す音声出力を行い、音声認識およびスロットフィリングをやり直すことも可能である。
【００７１】
なお、本発明の目的および利点は、例えば、請求項におけるエレメントおよび組み合わせにより実現され、かつ達成されるものである。また、上記の一般的な記述および下記の詳細な記述のいずれも、例示的かつ説明的なものであり、請求項のように、本発明を制限するものではない。
【符号の説明】
【００７２】
１：ハイブリッド音声認識システム
２：ローカル端末
３：クラウド装置
【図１】
2019179116.tif 000003
【図２】
2019179116.tif 000004
【図３】
2019179116.tif 000005
【図４】
2019179116.tif 000006
【図５】
2019179116.tif 000007
【図６】
2019179116.tif 000008
【図７】
2019179116.tif 000009
【図８】
2019179116.tif 000010
【図９】
2019179116.tif 000011