(57)【要約】      （修正有）【課題】ユーザが発話する自然な音声命令に対応する制御コードを正確に生成し、端末装置に予め設定されていない制御動作を実行するように端末装置の制御範囲を拡張する。【解決手段】端末装置１００は、ユーザ１が発話する音声命令を認識し、音声命令を対応する入力文字列に変換する音声認識部、入力文字列をプログラミング言語に変換して、入力文字列に対応する制御コードを生成するコード生成部および生成した制御コードを実行して、制御コードに応じた制御動作を実行する制御信号を生成する動作制御部を含む。コード生成部は、ディープラーニングモデルａを用いることができる。【選択図】図２
2019212302.tif 000002
【特許請求の範囲】
【請求項１】
ユーザが発話する音声命令を認識し、前記音声命令を対応する入力文字列に変換する音声認識部、
前記入力文字列をプログラミング言語に変換して、前記入力文字列に対応する制御コードを生成するコード生成部、および
前記生成した制御コードを実行して、前記制御コードに応じた制御動作を実行する制御信号を生成する動作制御部
を含む端末装置。
【請求項２】
前記コード生成部は、
ディープラーニングモデルを用いて、前記入力文字列を前記端末装置に対応するドメイン固有言語（ＤＳＬ）のＤＳＬコードに変換し、前記ＤＳＬコードを前記制御コードに設定することを特徴とする、請求項１に記載の端末装置。
【請求項３】
前記ディープラーニングモデルは、
サンプル文字列と前記サンプル文字列に対応した制御動作を定義したＤＳＬをマッチングした複数のサンプルを、ディープラーニング技法を用いて学習して形成することを特徴とする、請求項２に記載の端末装置。
【請求項４】
前記コード生成部は、
前記ドメイン固有言語と汎用プログラミング言語との間に設定された変換規則に従い、前記ＤＳＬコードを前記汎用プログラミング言語の汎用コードに変換し、前記汎用コードを前記制御コードに設定することを特徴とする、請求項２に記載の端末装置。
【請求項５】
前記音声認識部は、
前記音声命令をサーバに転送して前記音声命令に対応する入力文字列への変換を要請し、前記サーバから前記入力文字列を受信することを特徴とする、請求項１に記載の端末装置。
【請求項６】
端末装置からユーザが発話した音声命令を受信すると、前記音声命令に対応する入力文字列を生成する音声受信部、
前記入力文字列をプログラミング言語に変換して、前記入力文字列に対応する制御コードを生成するコード生成部、および
前記生成した制御コードを前記端末装置に転送するコード転送部
を含むサーバ。
【請求項７】
前記コード生成部は、
ディープラーニングモデルを用いて、前記入力文字列を前記端末装置に対応するドメイン固有言語（ＤＳＬ）のＤＳＬコードに変換し、前記ＤＳＬコードを前記制御コードに設定することを特徴とする、請求項６に記載のサーバ。
【請求項８】
前記ディープラーニングモデルは、
サンプル文字列と前記サンプル文字列に対応した制御動作を定義したＤＳＬをマッチングした複数のサンプルを、ディープラーニング技法を用いて学習して形成することを特徴とする、請求項７に記載のサーバ。
【請求項９】
前記コード生成部は、
前記ドメイン固有言語と汎用プログラミング言語との間に設定された変換規則に従い、前記ＤＳＬコードを前記汎用プログラミング言語の汎用コードに変換し、前記汎用コードを前記制御コードに設定することを特徴とする、請求項７に記載のサーバ。
【請求項１０】
前記コード転送部は、
前記制御コードに関数が含まれ、前記端末装置から前記関数に対する呼び出しの要請を受ける場合、前記関数に対応するコードを転送することを特徴とする、請求項６に記載のサーバ。
【請求項１１】
端末装置からユーザが発話した音声命令を受信すると、前記音声命令に対応する入力文字列を生成する音声受信部、
前記入力文字列をプログラミング言語に変換して、前記入力文字列に対応する制御コードを生成するコード生成部、および
前記生成した制御コードを実行して前記制御コードに応じた制御動作を実行する制御信号を生成し、前記制御信号を前記端末装置に転送する制御信号転送部
を含むサーバ。
【請求項１２】
ユーザが発話する音声命令を認識し、前記音声命令を対応する入力文字列に変換する音声認識ステップ、
前記入力文字列をプログラミング言語に変換して、前記入力文字列に対応する制御コードを生成するコード生成ステップ、および
前記生成した制御コードを実行して、前記制御コードに応じた制御動作を実行する制御信号を生成する動作制御ステップ
を含む端末装置におけるコード自動生成方法。
【請求項１３】
端末装置からユーザが発話した音声命令を受信すると、前記音声命令に対応する入力文字列を生成する音声受信ステップ、
前記入力文字列をプログラミング言語に変換して、前記入力文字列に対応する制御コードを生成するコード生成ステップ、および
前記生成した制御コードを前記端末装置に転送するコード転送ステップ
を含むサーバにおけるコード自動生成方法。
【請求項１４】
ハードウェアと結合されて、請求項１２または１３に記載のコード自動生成方法を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、コード自動生成方法、それを用いる端末装置およびサーバに関し、音声認識を用いて端末装置の制御コードを自動で生成できるコード自動生成方法、それを用いる端末装置およびサーバに関する。
【背景技術】
【０００２】
最近、電子装置に適用されるユーザ入力インターフェースは、ユーザの物理的な操作に基づいたユーザ入力（例えば、ボタン式キーパッド、キーボード、マウス、タッチパネルなどを介した入力）だけでなく、音声入力に基づいたユーザ入力を支援できる形態に実現されている。
【０００３】
音声入力インターフェースを支援する電子装置は、ユーザの発話（ｓｐｅｅｃｈまたはｕｔｔｅｒａｎｃｅ）を入力として取得して電気信号に変換することができる。電子装置は、音声から変換された電気信号に基づいて有用なコンテンツをユーザに提供するか、または電気信号を電子装置の制御に用いることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本出願は、音声認識を用いて端末装置の制御コードを自動で生成できるコード自動生成方法、それを用いる端末装置およびサーバを提供する。
【０００５】
本出願は、ユーザが発話する自然な音声命令に対応する制御コードを正確に生成できるコード自動生成方法、それを用いる端末装置およびサーバを提供する。
【０００６】
本出願は、ユーザの音声命令を用いて、端末装置に予め設定されていない制御動作を実行するように端末装置の制御範囲を拡張できるコード自動生成方法、それを用いる端末装置およびサーバを提供する。
【課題を解決するための手段】
【０００７】
本発明の一実施形態による端末装置は、ユーザが発話する音声命令を認識し、前記音声命令を対応する入力文字列に変換する音声認識部、前記入力文字列をプログラミング言語（ｐｒｏｇｒａｍｍｉｎｇ  ｌａｎｇｕａｇｅ）に変換して、前記入力文字列に対応する制御コードを生成するコード生成部、および前記生成した制御コードを実行して、前記制御コードに応じた制御動作を実行する制御信号を生成する動作制御部を含む。
【０００８】
本発明の一実施形態によるサーバは、端末装置からユーザが発話した音声命令を受信すると、前記音声命令に対応する入力文字列を生成する音声受信部、前記入力文字列をプログラミング言語に変換して、前記入力文字列に対応する制御コードを生成するコード生成部、および前記生成した制御コードを前記端末装置に転送するコード転送部を含む。
【０００９】
本発明の他の実施形態によるサーバは、端末装置からユーザが発話した音声命令を受信すると、前記音声命令に対応する入力文字列を生成する音声受信部、前記入力文字列をプログラミング言語に変換して、前記入力文字列に対応する制御コードを生成するコード生成部、および前記生成した制御コードを実行して前記制御コードに応じた制御動作を実行する制御信号を生成し、前記制御信号を前記端末装置に転送する制御信号転送部を含む。
【００１０】
本発明の一実施形態による端末装置におけるコード自動生成方法は、ユーザが発話する音声命令を認識し、前記音声命令を対応する入力文字列に変換する音声認識ステップ、前記入力文字列をプログラミング言語に変換して、前記入力文字列に対応する制御コードを生成するコード生成ステップ、および前記生成した制御コードを実行して、前記制御コードに応じた制御動作を実行する制御信号を生成する動作制御ステップを含む。
【００１１】
本発明の一実施形態によるサーバにおけるコード自動生成方法は、端末装置からユーザが発話した音声命令を受信すると、前記音声命令に対応する入力文字列を生成する音声受信ステップ、前記入力文字列をプログラミング言語に変換して、前記入力文字列に対応する制御コードを生成するコード生成ステップ、および前記生成した制御コードを前記端末装置に転送するコード転送ステップを含む。
【００１２】
なお、課題を解決するための手段の欄に記載される事項は、本発明の特徴を全て列挙したものではない。本発明の様々な特徴とそれに応じた長所および効果は下記の具体的な実施形態を参照してより詳細に理解できるものである。
【発明の効果】
【００１３】
本発明の一実施形態によるコード自動生成方法、それを用いる端末装置およびサーバによれば、ユーザの音声を認識して端末装置の制御コードを自動で生成することができる。それにより、端末装置に予め設定されていない制御動作を実行するように端末装置の制御範囲を拡張させることができる。
【００１４】
本発明の一実施形態によるコード自動生成方法、それを用いる端末装置およびサーバによれば、ユーザが発話する自然な音声命令に対応する制御コードを正確に生成することができる。それにより、ユーザは特定の単語や形式を使うように意識する必要なく自然に音声命令を入力することができる。
【００１５】
なお、本発明の実施形態によるコード自動生成方法、それを用いる端末装置およびサーバが達成できる効果は以上で言及したものに制限されず、言及されていない他の効果は下記の記載によって本発明が属する技術分野で通常の知識を有する者に明らかに理解できるものである。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態によるコード自動生成システムを示す概略図である。
【図２】本発明の一実施形態による端末装置を示すブロック図である。
【図３】本発明の一実施形態によるサーバを示すブロック図である。
【図４】本発明の一実施形態による端末装置およびサーバの動作を示すタイミング図である。
【図５】本発明の一実施形態による端末装置におけるコード自動生成方法を示すフローチャートである。
【図６】本発明の一実施形態によるサーバにおけるコード自動生成方法を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下では添付図面を参照して本明細書に開示された実施形態について詳しく説明するが、図面に関係なく同一または類似した構成要素には同一の参照番号を付し、それに対する重複する説明は省略することにする。以下の説明で用いられる構成要素に対する接尾辞「モジュール」および「部」は、明細書の作成の容易さだけを考慮して付与または混用されるものであって、それ自体で互いに区別される意味または役割を有するものではない。すなわち、本発明で用いられる「部」という用語はソフトウェア、ＦＰＧＡまたはＡＳＩＣのようなハードウェア構成要素を意味し、「部」はある役割をする。ところが、「部」はソフトウェアまたはハードウェアに限定される意味ではない。「部」は、アドレッシングできる格納媒体にあるように構成されてもよく、１つまたはそれ以上のプロセッサを再生させるように構成されてもよい。よって、一例として「部」は、ソフトウェア構成要素、オブジェクト指向ソフトウェア構成要素、クラス構成要素およびタスク構成要素のような構成要素と、プロセス、関数、属性、プロシージャ、サブルーチン、プログラムコードのセグメント、ドライバ、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイおよび変数を含む。構成要素と「部」の中から提供される機能は、さらに小さい数の構成要素および「部」で結合されるか、または追加の構成要素と「部」にさらに分離されてもよい。
【００１８】
また、本明細書に開示された実施形態を説明するにおいて、関連の公知技術に関する具体的な説明が本明細書に開示された実施形態の要旨をあいまいにする恐れがあると判断される場合には、その詳細な説明は省略する。また、添付された図面は本明細書に開示された実施形態を容易に理解できるようにするためのものに過ぎず、添付された図面によって本明細書に開示された技術的思想が制限されるものではなく、本発明の思想および技術範囲に含まれる全ての変更、均等物乃至代替物を含むものとして理解しなければならない。
【００１９】
図１は、本発明の一実施形態によるコード自動生成システムを示す概略図である。
【００２０】
図１を参照すれば、本発明の一実施形態によるコード自動生成システムは、端末装置１００およびサーバ２００を含むことができる。
【００２１】
以下では、図１を参照して、本発明の一実施形態によるコード自動生成システムについて説明する。
【００２２】
端末装置１００は、ユーザ１の音声を認識することができ、受信した音声に対応する動作を実行して、ユーザに様々なサービスを提供することができる。具体的には、端末装置１００は、ユーザ１の音声を受信するマイクロホン（ｍｉｃｒｏｐｈｏｎｅ）を含むことができ、マイクロホンから受信したユーザ１の音声を分析して音声内に含まれる制御命令を抽出することができる。その後、端末装置１００は、抽出した制御命令に応じて動作を実行してユーザに対応のサービスを提供することができる。
【００２３】
ここで、端末装置１００は、音声認識を支援するものであればいかなるものを用いてもよく、図１に示すように、音声認識スピーカであってもよい。その他にも、実施形態によっては、携帯電話、スマートフォン（Ｓｍａｒｔ  ｐｈｏｎｅ）、ラップトップ型コンピュータ（ｌａｐｔｏｐ  ｃｏｍｐｕｔｅｒ）、デジタル放送用端末、ＰＤＡ（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔｓ）、ＰＭＰ（ｐｏｒｔａｂｌｅ  ｍｕｌｔｉｍｅｄｉａ  ｐｌａｙｅｒ）、スレートＰＣ（ｓｌａｔｅＰＣ）、タブレットＰＣ（ｔａｂｌｅｔＰＣ）、ウルトラブック（ｕｌｔｒａｂｏｏｋ）、ウェアラブルデバイス（ｗｅａｒａｂｌｅ  ｄｅｖｉｃｅ、例えば、スマートウォッチ（ｓｍａｒｔｗａｔｃｈ）、スマートメガネ（ｓｍａｒｔ  ｇｌａｓｓ）、ヘッドマウントディスプレイ（ＨＭＤ：ｈｅａｄ  ｍｏｕｎｔｅｄ  ｄｉｓｐｌａｙ））などが端末装置１００に該当することができる。
【００２４】
端末装置１００には、ユーザの音声入力を受信するマイクロホン、ユーザの音声入力に対応した動作を実行するための、ディスプレイ部、スピーカ、アクチュエータ（ａｃｔｕａｔｏｒ）などが含まれることができる。また、端末装置１００には、キーパッド、タッチパネルなどの入力部、少なくとも１つのプログラムが格納されるメモリおよびプロセッサなどが含まれることができる。
【００２５】
一方、端末装置１００はサーバ２００とネットワークを介して連結されることができ、端末装置１００とサーバ２００を連結するネットワークは有線ネットワークまたは無線ネットワークであってもよい。具体的には、ローカルエリア・ネットワーク（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ：Ｍｅｔｒｏｐｏｌｉｔａｎ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、広域ネットワーク（ＷＡＮ：Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのような様々なネットワークを含むことができ、公知のワールド・ワイド・ウェブ（ＷＷＷ：Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）なども含むことができる。但し、本発明に係るネットワークは、上記で列挙されたネットワークに限定されず、公知の無線データネットワーク、公知の電話ネットワーク、公知の有線または無線テレビネットワークなどを含むことができる。
【００２６】
サーバ２００は、ネットワークを介して端末装置１００に様々なサービスを提供することができ、実施形態によっては、端末装置１００のコード自動生成を支援することができる。端末装置１００がユーザの音声命令に対応してインターネット検索や音源再生などを実行する場合、サーバ２００は、インターネット検索結果を生成して端末装置１００に提供するか、または端末装置１００が要請する音源や動画をストリーミングなどの方式で端末装置１００に提供することができる。また、コードの自動生成時に必要な演算などをサーバ２００が代わって実行することもできる。
【００２７】
従来の音声認識を支援する端末装置の場合、各々の音声命令に対応して予め設定された動作を実行するようにプログラミングされる。この場合、ユーザは、正確な用語を使って特定の制御動作を実行するように指示しなければならないため、ユーザが対話するように自然に端末装置の動作を要請する場合には端末装置が動作しないことがある。また、ユーザが端末装置に予めプログラミングされていない動作を要請する場合には、対応する動作を実行することができない。
【００２８】
これに対し、本発明の一実施形態によるコード自動生成システムによれば、端末装置１００がユーザの音声命令に対応して自動で制御コードを生成することができるため、ユーザの自然な音声命令を認識し、それに対応する制御動作を実行することができる。また、端末装置に予めプログラミングされていない制御動作の場合にも、ユーザの音声命令に応じて自動で制御コードを生成することができるため、端末装置１００の制御範囲を拡張することが可能である。以下では、本発明の一実施形態による端末装置１００およびサーバ２００について説明する。
【００２９】
図２は、本発明の一実施形態による端末装置を示すブロック図である。
【００３０】
図２を参照すれば、本発明の一実施形態による端末装置は、音声認識部１１０、コード生成部１２０および動作制御部１３０を含むことができる。
【００３１】
音声認識部１１０は、ユーザ１が発話する音声命令を認識することができ、認識した音声命令を変換して対応する入力文字列を生成することができる。音声認識部１１０には、マイクロホンが含まれ、マイクロホンを介してユーザの音声命令を受信することができる。ここで、マイクロホンはユーザの音声命令を電気信号に変換することができ、音声認識部１１０は電気信号を変換して対応する入力文字列を生成することができる。
【００３２】
例えば、音声認識部１１０には、各々の文字に対応する標準音声パターンが格納された音声モデルデータベースなどが備えられており、音声認識部１１０は入力される音声命令の電気信号を、音声モデルデータベースに格納された標準音声パターンと比較することができる。その後、音声命令に対応する標準音声パターンを抽出して対応する文字に変換することができ、変換された文字を結合して入力文字列を生成することができる。但し、音声認識部１１０が音声を文字に変換する方式はこれに限定されず、この他にも様々な方式で音声を文字に変換することができる。
【００３３】
コード生成部１２０は、入力文字列をプログラミング言語（ｐｒｏｇｒａｍｍｉｎｇ  ｌａｎｇｕａｇｅ）に変換して、入力文字列に対応する制御コードを生成することができる。入力文字列内にはユーザが端末装置１００に要請する制御動作が含まれるため、コード生成部１２０は入力文字列を用いて端末装置１００に対する制御コードを生成することができる。このとき、コード生成部１２０は、ディープラーニングモデル（Ｄｅｅｐ  ｌｅａｒｎｉｎｇ  ｍｏｄｅｌ）（ａ）を用いることができる。
【００３４】
具体的には、コード生成部１２０は、ディープラーニングモデルを用いて、入力文字列を端末装置１００に対応するドメイン固有言語（ＤＳＬ：Ｄｏｍａｉｎ  Ｓｐｅｃｉｆｉｃ  Ｌａｎｇｕｇａｇｅ）のＤＳＬコードに変換することができる。ドメイン固有言語は端末装置１００に対して特化されて用いられるプログラミング言語であって、端末装置１００が実行できる各々の機能や動作に対応するＤＳＬコードの命令語などが設定されていてもよい。例えば、端末装置１００が人工知能スピーカである場合、人工知能スピーカが実行するアラーム設定や音源再生、天気情報などのような各々の機能に対応する命令語が予め設定されていてもよい。したがって、人工知能スピーカに特化されたドメイン固有言語を用いれば、入力文字列をより容易にＤＳＬコードに変換することができる。
【００３５】
一方、コード生成部１２０が用いるディープラーニングモデルは様々な方法を用いて学習されることができる。例えば、ｓｅｑ２ｓｅｑ（ｓｅｑｕｅｎｃｅ  ｔｏ  ｓｅｑｕｅｎｃｅ）、Ｔｒａｎｓｆｏｒｍｅｒ、ＣＳＳＬ（Ｃｏｎｖｏｌｕｔｉｏｎ  Ｓｅｑｕｅｎｃｅ  ｔｏ  Ｓｅｑｕｅｎｃｅ  Ｌｅａｒｎｉｎｇ（畳み込みｓｅｑ２ｓｅｑラーニング））などのように翻訳と関わってよく知られた技法が用いられてもよい。このとき、ディープラーニングモデルの学習のために用いられるサンプルは、入力文字列、および各々の入力文字列に対応した制御動作が定義されたＤＳＬコードの対であってもよい。すなわち、各々の入力文字列に対応して設定されるＤＳＬコードのサンプルが学習されてディープラーニングモデルを生成することができる。この場合、ユーザが入力した様々な入力文字列に対応するＤＳＬコードが学習されるため、ディープラーニングモデルを用いれば、各々の入力文字列に対応するＤＳＬコードを容易に抽出することができる。
【００３６】
その後、コード生成部１２０は、ＤＳＬコードを汎用プログラミング言語（ｇｅｎｅｒａｌ−ｐｕｒｐｏｓｅ  ｐｒｏｇｒａｍｍｉｎｇ  ｌａｎｇｕａｇｅ）の汎用コードに変換し、変換された汎用コードを制御コードに設定することができる。この場合、端末装置１００に特化されたドメイン固有言語と汎用プログラミング言語との間には変換規則が予め設定されていてもよく、変換規則に従ってＤＳＬコードを汎用コードに変換することができる。コード生成部１２０により生成された制御コードは、その後、サーバ２００などの他の装置などにも活用されるため、汎用コードを制御コードとして用いることによって互換性と活用度を高めることができる。但し、実施形態によっては、生成したＤＳＬコードを制御コードに設定することができ、ＤＳＬコードを用いて端末装置１００を制御するように実現することもできる。
【００３７】
一方、コード生成部１２０は、「明日の朝に雨が降れば音楽を再生してちょうだい」という入力文字列の入力を受けた場合、以下のような制御コードを生成することができる。
【００３８】
ｄｅｆ  ｉｎｓｔａｎｔ＿ｐｒｏｇｒａｍ（）
ｉｆ  ｗｅａｔｈｅｒ＝＝‘ｒａｉｎ’；
ｐｌａｙ＿ｍｕｓｉｃ（）
ａｄｄ  ｃｒｏｎ（ｉｎｓｔａｎｔ＿ｐｒｏｇｒａｍ、‘０９００’、’ｏｎｃｅ”）
ここで、「雨が降れば音楽を再生」するために、コード生成部１２０は、インスタントプログラムｉｎｓｔａｎｔ＿ｐｒｏｇｒａｍ（）を定義することができ、インスタントプログラムは、変数であるｗｅａｔｈｅｒの値が「ｒａｉｎ」に該当すれば、音楽を再生する関数ｐｌａｙ＿ｍｕｓｉｃを実行するように設定されることができる。その後、「明日の朝」にインスタントプログラムｉｎｓｔａｎｔ＿ｐｒｏｇｒａｍ（）を実行するために、コード生成部１２０は、コンピュータオペレーティングシステムのスケジューラであるｃｒｏｎを用いてインスタントプログラムｉｎｓｔａｎｔ＿ｐｒｏｇｒａｍ（）を追加するようにすることができる。このとき、「朝」であるので時間は０９：００、繰り返されるイベントではないので一度だけ「ｏｎｃｅ」実行されるようにすることができる。
【００３９】
ここで、各々の制御コードはディープラーニングを介した学習を通じて生成されるものであって、コード生成部１２０は各々のユーザに応じて様々な方式に変形される場合にも同一の制御コードを生成することができる。例えば、ユーザが「雨が降る朝には音楽が聞きたい」という音声命令を入力する場合にも同一の制御コードを生成することができる。また、コード生成部１２０は、ユーザが「明日の午後にＰＭ（ｐａｒｔｉｃｕｌａｔｅ  ｍａｔｔｅｒ）濃度が高ければアラームを鳴らしてちょうだい」などのような音声命令を入力する場合にも、ディープラーニングモデルを用いて類似した方式で制御コードを生成することができる。
【００４０】
さらに、コード生成部１２０は、関数を含む制御コードを生成することもできる。例えば、ユーザが音声命令として「私の友だち３人をランダムに知らせてちょうだい」を入力する場合、コード生成部１２０は以下のような制御コードを生成することができる。
【００４１】
Ｓｐｅａｋ（ｔｏｐ（ｒａｎｄｏｍ（ｇｅｔＣｏｎｔａｃｔ（））、３））
すなわち、先ず、ｇｅｔＣｏｎｔａｃｔ（）関数を用いてユーザの連絡先情報に含まれる友だちの連絡先を抽出することができ、このとき、ｒａｎｄｏｍ（）関数を用いて３個の連絡先を任意に抽出するようにすることができる。その後、抽出した３個の連絡先を整列し（ｔｏｐ（））、抽出した３個の連絡先を、スピーカを介して出力するようにすることができる。ここで、コード生成部１２０が呼び出す各々の関数は、端末装置１００に予め格納されていてもよい。
【００４２】
この他にも、コード生成部１２０は、ユーザの音声命令を用いて別の関数またはインスタントプログラムを生成し、生成した関数またはインスタントプログラムを呼び出して使用する制御コードを実現することができる。例えば、ユーザが「居間に電気をつけてと言ったら１番、３番、４番の電気をつけてちょうだい」という音声命令を入力する場合、コード生成部１２０は、「居間に電気をつけて」に対応する関数を生成して格納することができる。その後、ユーザが「居間に電気をつけて」という音声命令を入力すれば、コード生成部１２０が、それに対応する関数を用いて制御コードを生成することができる。
【００４３】
コード生成部１２０は、上述したように種々の制御コードを生成することができ、このような制御コードは、ディープラーニングモデルを介して抽出する方式で生成することができる。
【００４４】
動作制御部１３０は、生成した制御コードを実行して、制御コードに応じた制御動作を実行する制御信号を生成することができる。すなわち、動作制御部１３０が生成した制御信号に応じて端末装置１００に含まれるスピーカ、ディスプレイ部、アクチュエータなどが動作することができ、スピーカ、ディスプレイ部、アクチュエータなどの動作に応じて制御動作が実現されることができる。動作制御部１３０は、コンパイラ（ｃｏｍｐｉｌｅｒ）またはインタープリタ（ｉｎｔｅｒｐｒｅｔｅｒ）を用いて制御コードを実行することができ、制御コードに対応する制御信号を生成することができる。
【００４５】
上述したように、本発明の一実施形態による端末装置１００は、端末装置１００自体で音声認識を用いて制御コードを自動で生成することができ、生成した制御コードに応じた制御動作を実行することができる。但し、実施形態によっては、端末装置１００がサーバ２００との通信を介して制御コードを生成するか、または生成した制御コードに対応する制御動作を実行するように実現することもできる。
【００４６】
一実施形態によれば、音声認識を介した入力文字列の生成をサーバ２００が実行するようにすることができる。音声認識の場合、音声モデルデータベースに格納された標準音声パターンと受信した音声命令を比較しなければならないため、対応する入力文字列を抽出するのに多くの演算が必要である。実施形態によっては、端末装置１００の演算処理能力が不足することがあるため、端末装置１００がサーバ２００に音声命令を転送した後、サーバ２００が音声認識を実行するようにすることができる。すなわち、音声認識部１１０は、音声命令をサーバ２００に転送することができ、該音声命令に対応する入力文字列への変換を要請することができる。その後、サーバ２００から入力文字列を受信すれば、それを用いて制御コードを生成し制御動作を実行することができる。
【００４７】
他の実施形態によれば、端末装置１００がサーバ２００に音声命令を転送すると、サーバ２００が音声認識およびコード生成を実行し、端末装置１００はサーバから制御コードを受信して制御コードを実行することもできる。すなわち、端末装置１００は音声命令をサーバ２００に転送した後、サーバ２００から音声命令に対応する制御コードを受信することができ、端末装置１００は受信した制御コードを用いて制御動作を実行することができる。
【００４８】
また他の実施形態によれば、端末装置１００がサーバ２００に音声命令を転送すると、サーバ２００において音声認識、コード生成およびコード実行まで実行した後、サーバ２００から制御信号を受信して制御動作を実行することもできる。例えば、ユーザが「明日の朝９時に知らせてちょうだい」という音声命令を入力する場合、端末装置１００は、対応する音声命令をサーバ２００に転送することができ、サーバ２００は、受信した音声命令を入力文字列に変更し、入力文字列に対応する制御コードを生成した後、それを実行することができる。この場合、サーバ２００のスケジューラに「明日の朝９時」に「アラーム」を生成するプログラムが登録され、その後、アラーム発生時点に達すれば、サーバ２００は、端末装置１００にアラーム信号を転送して端末装置１００がアラームを出力するように制御することができる。すなわち、端末装置１００は、サーバ２００の制御に応じて動作する機能のみを実行することができる。
【００４９】
図３は、本発明の一実施形態によるサーバを示すブロック図である。
【００５０】
図３を参照すれば、本発明の一実施形態によるサーバ２００は、音声受信部２１０、コード生成部２２０およびコード転送部２３０を含むことができ、実施形態によっては、コード転送部２３０の代わりに制御信号転送部２４０を含むこともできる。
【００５１】
音声受信部２１０は、端末装置１００からユーザが発話した音声命令を受信することができ、受信した音声命令に対応する入力文字列を生成することができる。すなわち、サーバ２００が端末装置１００から音声命令に対する入力文字列への変換の要請を受ければ、音声受信部２１０が受信した音声命令を入力文字列に変換することができる。具体的には、サーバ２００には各々の文字に対応する標準音声パターンが格納された音声モデルデータベースなどが備えられていてもよく、音声受信部２１０は入力される音声命令の電気的パターンを、音声モデルデータベースに格納された標準音声パターンと比較することができる。その後、音声命令に対応する標準音声パターンを抽出し、抽出した標準音声パターンに対応する文字に変換する方式で入力文字列を生成することができる。但し、音声受信部２１０が音声を文字に変換する方式はこれに限定されず、その他にも様々な方式で音声を文字に変換することができる。
【００５２】
コード生成部２２０は、入力文字列をプログラミング言語に変換して、入力文字列に対応する制御コードを生成することができる。コード生成部２２０は、ディープラーニングモデルを用いて、入力文字列を端末装置１００に対応するドメイン固有言語（ＤＳＬ）のＤＳＬコードに変換することができる。ここで、ＤＳＬコードを制御コードに設定することができるが、実施形態によっては、ドメイン固有言語と汎用プログラミング言語との間に設定された変換規則に従い、ＤＳＬコードを汎用プログラミング言語の汎用コードに変換し、汎用コードを制御コードに設定することもできる。コード生成部２２０が用いるディープラーニングモデルは、サンプル文字列と該サンプル文字列に対応した制御動作を定義したＤＳＬをマッチングした複数のサンプルを、例えば、ｓｅｑ２ｓｅｑ、Ｔｒａｎｓｆｏｒｍｅｒ、ＣＳＳＬなどのような技法によりディープラーニングして形成するものであってもよい。ディープラーニングモデルを用いて自動で制御コードを生成する内容は前述したため、ここでは具体的な説明は省略する。
【００５３】
コード転送部２３０は、生成した制御コードを端末装置１００に転送することができる。端末装置１００から受信した音声命令に対応して制御コードを生成した後には、制御コードを端末装置１００に転送して、端末装置１００が制御コードに応じて動作するようにすることができる。一方、実施形態によっては、端末装置１００に転送した制御コードに、関数またはインスタントプログラムが含まれることができる。この場合、端末装置１００が制御コードを実行すれば、サーバ２００が端末装置１００から該関数またはインスタントプログラムに対する呼び出しの要請を受けることができる。このとき、コード転送部２３０は、該関数またはインスタントプログラムに対応する制御コードを端末装置１００に転送して、端末装置１００が該関数またはインスタントプログラムを実行するようにすることができる。
【００５４】
さらに、図３（ｂ）に示すように、サーバ２００にコード転送部２３０の代わりに制御信号転送部２４０が含まれてもよい。すなわち、実施形態によっては、サーバ２００が制御コードを実行して制御信号を生成することができ、制御信号を端末装置１００に転送する方式で、端末装置１００が制御コードに応じて動作するように制御することができる。具体的には、制御信号転送部２４０は、生成した制御コードを実行して制御コードに応じた制御動作を実行する制御信号を生成することができ、生成した制御信号を端末装置１００に転送することができる。
【００５５】
図４は、本発明の一実施形態による端末装置１００とサーバ２００を用いたコード自動生成を示す概略図である。
【００５６】
図４（ａ）に示すように、端末装置１００はユーザから音声命令の入力を受け（Ｓ１１）、入力を受けた音声命令をサーバ２００に転送することができる（Ｓ１２）。すなわち、端末装置１００は、マイクロホンなどを介してユーザの音声命令を受信した後、電気信号としてサーバ２００に転送することができる。その後、サーバ２００は、受信した音声命令を対応する入力文字列に変換し（Ｓ１３）、入力文字列をプログラミング言語に変換して制御コードを生成することができる（Ｓ１４）。音声命令を入力文字列に変換するときには各々の文字に対応する標準音声パターンに格納された音声モデルデータベースを用いることができ、入力文字列を用いて制御コードを生成するときにはディープラーニングモデルを活用することができる。その後、制御コードの生成が完了すれば、サーバ２００は制御コードを端末装置１００に転送し（Ｓ１５）、端末装置１００は受信した制御コードを実行して制御コードに対応する制御動作を実行することができる（Ｓ１６）。すなわち、端末装置１００とサーバ２００との通信を用いて、制御コードを自動で生成することができる。
【００５７】
一方、図４（ｂ）に示すように、サーバ２００が制御コードの生成およびコンパイルまで実行し、端末装置１００は制御信号に応じた制御動作のみを実行するようにすることもできる。具体的には、端末装置１００はユーザから音声命令の入力を受け（Ｓ２１）、入力を受けた音声命令はサーバ２００に転送することができる（Ｓ２２）。その後、サーバ２００は受信した音声命令を入力文字列に変換し（Ｓ２３）、入力文字列に対応する制御コードを生成することができる（Ｓ２４）。その後、サーバ２００がコンパイラまたはインタープリタなどを用いて制御コードを実行し（Ｓ２５）、制御コードの実行に応じた制御信号を端末装置１００に転送することができる（Ｓ２６）。制御信号を受信した端末装置１００は、制御信号に対応して制御動作を実行することができる（Ｓ２７）。
【００５８】
図５は、本発明の一実施形態による端末装置におけるコード自動生成方法を示すフローチャートである。
【００５９】
図５を参照すれば、本発明の一実施形態による端末装置におけるコード自動生成方法は、音声認識ステップ（Ｓ１１０）、コード生成ステップ（Ｓ１２０）および動作制御ステップ（Ｓ１３０）を含むことができる。
【００６０】
以下、図５を参照して、本発明の一実施形態による端末装置におけるコード自動生成方法について説明する。
【００６１】
音声認識ステップ（Ｓ１１０）では、ユーザが発話する音声命令を認識し、音声命令を対応する入力文字列に変換することができる。音声認識ステップ（Ｓ１１０）では、端末装置に備えられたマイクロホンを介してユーザの音声命令を受信することができ、マイクロホンを介してユーザの音声命令を電気信号に変換することができる。その後、音声命令を変換して対応する入力文字列を生成することができる。
【００６２】
具体的には、各々の文字に対応する標準音声パターンが格納された音声モデルデータベースなどが存在し、音声認識ステップ（Ｓ１１０）では、入力される音声命令の電気信号を音声モデルデータベースに格納された標準音声パターンと比較することができる。その後、音声命令に対応する標準音声パターンを抽出して対応する文字に変換することができ、変換された文字を結合して入力文字列を生成することができる。但し、音声を文字に変換する方式はこれに限定されず、この他にも様々な方式で音声を文字に変換することができる。
【００６３】
コード生成ステップ（Ｓ１２０）では、入力文字列をプログラミング言語に変換して、入力文字列に対応する制御コードを生成することができる。入力文字列内にはユーザが端末装置に要請する制御動作が含まれるため、入力文字列を用いて制御コードを生成することができる。このとき、ディープラーニングモデルを用いることができる。
【００６４】
具体的には、ディープラーニングモデルを用いて、入力文字列を端末装置に対応するドメイン固有言語（ＤＳＬ）のＤＳＬコードに変換することができる。ドメイン固有言語は端末装置に対して特化されて用いられるプログラミング言語であって、端末装置が実行できる各々の機能や動作に対応するＤＳＬコードの命令語などが設定されていてもよい。したがって、人工知能スピーカに特化されたドメイン固有言語を用いれば、入力文字列をより容易にＤＳＬコードに変換することができる。
【００６５】
一方、コード生成ステップ（Ｓ１２０）において用いられるディープラーニングモデルは、例えば、ｓｅｑ２ｓｅｑ、Ｔｒａｎｓｆｏｒｍｅｒ、ＣＳＳＬなどのような様々な技法によって学習され、ディープラーニングモデルの学習のために用いられるサンプルは、入力文字列、および各々の入力文字列に対応した制御動作が定義されたＤＳＬコードの対であってもよい。この場合、ユーザが入力した様々な入力文字列に対応するＤＳＬコードが学習されるため、ディープラーニングモデルを用いれば、各々の入力文字列に対応するＤＳＬコードを容易に抽出することができる。
【００６６】
その後、ディープラーニングモデルから抽出したＤＳＬコードを汎用プログラミング言語の汎用コードに変換し、変換された汎用コードを制御コードに設定することができる。この場合、端末装置に特化されたドメイン固有言語と汎用プログラミング言語との間には変換規則が予め設定されていてもよく、変換規則に従ってＤＳＬコードを汎用コードに変換させることができる。制御コードは、その後サーバなどの他の装置などにも活用されるため、汎用コードを制御コードとして用いることによって互換性と活用度を高めることができる。但し、実施形態によっては、生成したＤＳＬコードを制御コードに設定することができ、ＤＳＬコードを用いて端末装置を制御するように実現することもできる。
【００６７】
動作制御ステップ（Ｓ１３０）では、生成した制御コードを実行して、制御コードに応じた制御動作を実行する制御信号を生成することができる。すなわち、動作制御ステップ（Ｓ１３０）において生成した制御信号に応じて、端末装置に含まれるスピーカ、ディスプレイ部、アクチュエータなどを動作させることができ、スピーカ、ディスプレイ部、アクチュエータなどの動作に応じて制御動作が実現されることができる。このとき、制御コードはコンパイラまたはインタープリタを用いて実行することによって、制御コードに対応する制御信号を生成することができる。
【００６８】
上述したように、本発明の一実施形態による端末装置におけるコード自動生成方法は、端末装置が直接音声認識を実行して制御コードを自動で生成し、生成した制御コードを用いて端末装置に対する制御動作を実行することができる。但し、実施形態によっては、サーバとの通信を介して制御コードを生成するか、または生成した制御コードに対応する制御動作を実行するように実現することもできる。
【００６９】
図６は、本発明の一実施形態によるサーバにおけるコード自動生成方法を示すフローチャートである。
【００７０】
図６を参照すれば、本発明の一実施形態によるサーバにおけるコード自動生成方法は、音声受信ステップ（Ｓ２１０）、コード生成ステップ（Ｓ２２０）およびコード転送ステップ（Ｓ２３０）を含むことができる。
【００７１】
以下、図６を参照して、本発明の一実施形態によるサーバにおけるコード自動生成方法について説明する。
【００７２】
音声受信ステップ（Ｓ２１０）では、端末装置からユーザが発話した音声命令を受信すると、音声命令に対応する入力文字列を生成することができる。すなわち、サーバは、端末装置から音声命令に対する入力文字列への変換の要請を受けると、端末装置から受信した音声命令を入力文字列に変換することができる。実施形態によっては、標準音声パターンが格納された音声モデルデータベースを用いて、音声命令に対応する入力文字列を生成することができる。
【００７３】
コード生成ステップ（Ｓ２２０）では、入力文字列をプログラミング言語に変換して、入力文字列に対応する制御コードを生成することができる。具体的には、ディープラーニングモデルを用いて、入力文字列を端末装置に対応するドメイン固有言語（ＤＳＬ）のＤＳＬコードに変換することができる。ここで、ＤＳＬコードを制御コードに設定することができるが、実施形態によっては、ドメイン固有言語と汎用プログラミング言語との間に設定された変換規則に従い、ＤＳＬコードを汎用プログラミング言語の汎用コードに変換し、汎用コードを制御コードに設定することもできる。コード生成ステップ（Ｓ２２０）において用いるディープラーニングモデルは、サンプル文字列と、該サンプル文字列に対応した制御動作を定義したＤＳＬをマッチングした複数のサンプルを、ｓｅｑ２ｓｅｑ、Ｔｒａｎｓｆｏｒｍｅｒ、ＣＳＳＬなどのような様々な技法によりディープラーニングして形成するものであってもよい。但し、ディープラーニングモデルを用いて自動で制御コードを生成する内容は前述したため、ここでは具体的な説明は省略する。
【００７４】
コード転送ステップ（Ｓ２３０）では、生成した制御コードを端末装置に転送することができる。端末装置から受信した音声命令に対応して制御コードを生成した後には、制御コードを端末装置に転送して、端末装置が制御コードに応じて動作するようにすることができる。一方、実施形態によっては、端末装置に転送した制御コードに関数またはインスタントプログラムが含まれることができる。この場合、端末装置が制御コードを実行すれば、サーバが端末装置から該関数またはインスタントプログラムに対する呼び出しの要請を受けることができる。このとき、サーバは該関数またはインスタントプログラムに対応する制御コードを端末装置に転送して、端末装置が該関数またはインスタントプログラムを実行するようにすることができる。
【００７５】
さらに、コード転送ステップ（Ｓ２３０）において制御コードを転送する代わりに制御信号を端末装置に転送することもできる。すなわち、サーバが制御コードを実行して制御信号を生成することができ、生成された制御信号を端末装置に転送して端末装置が対応する動作を実行するようにすることができる。
【００７６】
前述した本発明は、プログラムが記録された媒体にコンピュータ読取可能なコードとして実現することができる。コンピュータ読取可能な媒体は、コンピュータで実行可能なプログラムを続けて格納するか、実行またはダウンロードのために臨時格納するものであってもよい。また、媒体は単一または数個のハードウェアが結合された形態の様々な記録手段または格納手段であってもよく、あるコンピュータ・システムに直接接続される媒体に限定されず、ネットワーク上に分散存在するものであってもよい。媒体の例示としては、ハードディスク、フロッピーディスクおよび磁気テープのような磁気媒体、ＣＤ−ＲＯＭおよびＤＶＤのような光気録媒体、フロプティカルディスク（ｆｌｏｐｔｉｃａｌ  ｄｉｓｋ）のような磁気−光媒体（ｍａｇｎｅｔｏ−ｏｐｔｉｃａｌ  ｍｅｄｉｕｍ）、およびＲＯＭ、ＲＡＭ、フラッシュメモリなどを含めてプログラム命令語が格納されるように構成されたものがある。また、他の媒体の例示として、アプリケーションを流通するアプリストアやその他の様々なソフトウェアを供給乃至流通するサイト、サーバなどが管理する記録媒体乃至格納媒体も挙げられる。したがって、上記の詳細な説明は、全ての面で制限的に解釈されてはならず、例示的なものに考慮されなければならない。本発明の範囲は添付された請求項の合理的な解釈によって決定されなければならず、本発明の等価的な範囲内での全ての変更は本発明の範囲に含まれる。
【００７７】
本発明は、前述した実施形態および添付された図面によって限定されるものではない。本発明が属する技術分野で通常の知識を有した者であれば、本発明の技術的思想を逸脱しない範囲内で本発明に係る構成要素を置換、変形および変更できることは明らかである。
【符号の説明】
【００７８】
１  ・・・ユーザ
１００  ・・・端末装置
１１０  ・・・音声認識部
１２０  ・・・コード生成部
１３０  ・・・動作制御部
２００  ・・・サーバ
２１０  ・・・音声受信部
２２０  ・・・コード生成部
２３０  ・・・コード転送部
２４０  ・・・制御信号転送部
Ｓ１１０  ・・・音声認識ステップ
Ｓ１２０  ・・・コード生成ステップ
Ｓ１３０  ・・・動作制御ステップ
Ｓ２１０  ・・・音声受信ステップ
Ｓ２２０  ・・・コード生成ステップ
Ｓ２３０  ・・・コード転送ステップ
【図１】
2019212302.tif 000003
【図２】
2019212302.tif 000004
【図３】
2019212302.tif 000005
【図４】
2019212302.tif 000006
【図５】
2019212302.tif 000007
【図６】
2019212302.tif 000008