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

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

英語発声練習用アクションを作り直し(Google アシスタント)

英語の発声練習用途の Google アシスタント用アクションは年初にもひとつ作りましたが、あまり手をかけなさ過ぎたものでしたので、もう一本作りました。既にデプロイされていますが、動作仕様のほとんどの部分はフルフィルメント側で何なりと変更できますので、リトライ回数やメッセージの内容などは適宜微調整してゆこうと思います。

assistant.google.com

いわゆる発声練習

下図の左側にいるのがアクション、そして右側にいるのがそのアクションのユーザーで、まさに「いわゆる」な感じの英語の発生練習のやり取りをアクションとの間で行います。アクション側から英語の例文が提供されますので、それをユーザー側でも発声することで、発声練習のようなものが進行します。

f:id:cheerio-the-bear:20190512211557p:plain
アクションとユーザーの基本的なやり取り

スマートフォンGoogle Home の言語設定を「英語のみ」に設定できる英語学習者の皆さまに、ちょっとお試し頂けると嬉しいです。何故「英語のみ」かというと、年始に見つけて Actions on Google サポートチームさんにレポートさせて頂いた問題が、まだ解決していないためです。

Google アシスタントのマルチ言語設定の問題(再掲)

優先言語設定が「英語」じゃないと起動できない(仕様)

日本語 "JA-JP" の TTS 音声では英語を流暢に読んでくれないため、本アクションでは英語 "EN-US" の TTS 音声を指定しています。Google アシスタントは複数言語に同時に対応できるとされていますが、カスタムアクションの起動は優先言語に合ったもののみとなります。
つまり、「日本語」+「英語」の順でマルチリンガル設定していると本アクションを起動することはできず、少なくとも「英語」が先に設定されていないと駄目だということになります。不便というか残念な仕様なのですが、これは仕様だということなので、いいんです。問題は次です。

無応答時に第二言語に切り替わることがある(不具合)

システム上のどのあたりで発生している問題なのかはわかりませんが、TTS 音声が不意に第二言語に切り替わってしまう問題があります。例えば、スマートフォンGoogle Home の言語設定を「英語」+「日本語」に設定している場合であれば、アシスタントの TTS 音声が突然 "JA-JP" に変更されてしまいます。
ユーザーの発話を認識できなくて actions.intent.NO_INPUT が発生するような状況、つまりリプロンプトの動作を行うような状況で発生しやすいようで、Dialogflow 側の設定やフルフィルメント側の実装でそれを回復させる方法はなさそうです。

ワークアラウンド

日本語 "JA-JP" の TTS 音声に下手くそな英語を喋らせ続けるのは、とても恰好が宜しくありません。やむを得ず、この問題が発生したらアクションを終了する仕様にしています。スマートフォンでこの問題が発生した場合には、次のスクリーンショットのように表示されるようにしました。

f:id:cheerio-the-bear:20190512215744p:plain
ロケール不正変更時のワークアラウンド

JSON リクエストのロケール "JA-JP" になっていることが確認できれば、日本語 "JA-JP" の TTS 音声で喋るアクションになってしまっているので、実行を終了する事態に至った理由の説明も日本語で行うことができます。

    function isAnythingWrongInLocale(conv) {
        let locale = conv.user.locale.substr(0, 2).toLowerCase()

        // Workaround for the locale issue in Actions on Google system.
        if (locale.startsWith('ja')) {
            let paragraph = 'Googleアシスタントのシステム上の問題により、'
                    + '言語が日本語に変更された可能性があります。'
                    + 'アプリケーションを終了します。'
    ...

Google さんは興味ないらしい

アクションの説明文にこの件を書けば、レビューのときに「これは何だ?」と再び気にしてもらえるかなと思ったんですけど、そのままスルっと承認されてしまいました。このように、不具合の説明がそのまま載っています。いいんだ ..

f:id:cheerio-the-bear:20190512214917p:plain
アクションの説明文にも書いた

その他

今回作成したアクションに関係する過去記事は、このあたり。

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