クマは森で用を足しますか?

アウトプットは重要です。

Google Home 用 "My English Learner" を作りました

今年やりたいと思っていたことの中から下記の二つを実行するために、Google Home を対象とした簡単なアプリケーションをひとつ作りました。本当に簡素な実装で、ロジック部分はおそらく 100 行くらいしかないと思います。

  • 音声アシスタントのアプリケーションを作りたい
  • 英語の音読やリスニングの練習をしたい(しなければならない)

そのアプリケーションがこちら。英語の学習に使うはずだった英単語帳や英例文集を眠らせている方がいらっしゃいましたら、ちょっと持ってきてみてください。現在、Google Home第一言語設定が「日本語」だとアプリケーションを開始できませんので、ご注意ください(後述)。

assistant.google.com

Amazon Alexa 版スキルとして作成した同じものが、こちら。同じく、英語設定の Alexa からご利用頂くことを想定しています。

www.amazon.com

機能概要

このような設定だとお考え頂ければ、そのイメージを掴んで頂けますでしょうか。

あなたは英語の教師です。あなたのクラスには既に英語を話せそうな生徒もいますが、もちろん彼に対しても分け隔てなく英語のレッスンを行なう義務があります。今日も、レッスンを受けに彼がやってきました。あなたの後について彼がリピートするので、何か英単語か英文を発話してあげてください。

あなたも彼も、やることはとても単純です。あなたの発話内容が複数の英単語で構成されている場合には、彼は聞こえた英文をそのままリピートします。あなたが英単語ひとつだけを発話した場合には、彼はその単語のスペルを確認した上で、あらためてそれをリピートします。

f:id:cheerio-the-bear:20190113232954p:plain

会話のイメージ(実際は英語です)

上の会話例では、彼がリピートする前に「オーケー」と言っているところがあります。直前の発話内容と違うところがあれば彼は「違う単語や文章の練習に変わった」と理解し、その場合に「オーケー」等の言葉を発します。あなたが同じ単語や文章を繰り返しているときには、この「オーケー」等の言葉が返ってこないことを確認してください。

彼の発声内容をもう一度確認したい場合には、"Say that again?" と聞き返してあげてください。さっきよりも少しゆっくり、慎重に同じ単語や文章を発声してくれます。 

環境設定(重要)

最初からそういう仕様にする計画ではなかったのですが、言語としては英語のみをサポートしていますので、日本語のみが設定されている Google Home では起動できません。第一設定言語が「英語」じゃないと駄目なようで、「英語」+「日本語」のバイリンガル、もしくは「英語」のみの設定でお試しください。"Hey, Google. Talk to My English Learner" で起動します。

とは言え、「英語」+「日本語」の順序のバイリンガル設定でも、そんなに困ることはないと思います。日本語向けウェイクアップワード「ねぇ、グーグル」が使えなくなる程度のものです(オーケーやヘイ!が使えます)。

せめて逆順の「日本語」+「英語」でも起動させてもらえると良いのですが。言語関係で気付いた残念なことは、先日こちらにも書いています。

 

cheerio-the-bear.hatenablog.com cheerio-the-bear.hatenablog.com

ちなみに、当初は日本語用アプリケーションで、日本人の生徒を登場させようと考えていました。Actions on Google システム TTS の日本語音声には綺麗な英語を喋らせる方法が今のところ存在しないため、やむを得ず英語用アプリケーションとして作成しました。英語圏以外の地域で利用されることを想定しているのに、英語圏ディレクトリでしかこのアプリケーションの存在をご確認頂けないのが残念です。

制限事項

Google アシスタントがユーザーの発話を認識することが出来ない場合には、actions_intent_NO_INPUT イベントが発生します。「英語」+「日本語」のバイリンガル設定時にこれが発生した後に、音声が「日本語」に切り替わってしまうことがあります。英単語や英文を綺麗な発音で読み上げてもらう必要があるアプリケーションにとって、この不具合は致命的です。

f:id:cheerio-the-bear:20190108223543p:plain

イベント actions_intent_NO_INPUT をフック

そのため、本アプリケーションではこのイベントをフックし、イベントが確認された時点でアプリケーションを終了するワークアラウンドを適用しています。できれば何度か聞き返してあげたいところですので、不具合が修正されたことが確認できれば、ワークアラウンドを外そうと思います。

どんなものを作れば良いのか

音声の認識や発声の精度が著しく上がる頃には、きっとその考えを改めないといけないと思いますが、 下記のようなことを思いながらどんなアプリケーションを作ろうかと思案していました。これ、もしかして結構難しくないですか?

  • リモコンや指での操作のほうが簡単・確実なら、音声じゃなくていい。
  • 音声アシスタントが聞き違えることはある。それで困るようではいけない。
  • (個人的には)メンテナンスが簡単なものが嬉しい。

音声アシスタントを予約や購入系のサービスに使おうとは、まだ思えないんですよね。自分の目で確認しながら、スマートフォンか何かでやったほうがいい。音声インターフェースじゃなきゃ駄目だ、または音声インターフェースの方が他の方法よりも優れている。そんなアプリケーションであることが望ましいです。