Amazon Alexaのマルチリンガル対応で何が変わったか&対応してみた


9/14よりAmazon Echoがイギリスとドイツで利用できるようになりました。

Alexa and Amazon Echo Now Available in the UK and Germany

そして、新しく増えた2ヶ国向けのSkillも開発できるようになりました。

How to Build a Multi-Language Alexa Skill

From "G'day" to "Guten Tag"
("こんにちわ"って、G'dayって表現っできるんですね)

Skillの管理画面

実際のSkillの画面を見ると、すでにUK対応していそうな感じが!

Skillの設定画面に言語のタブが増えてます

インタラクションモデルの画面でも言語のタブがあり、言語によってIntent schemaCustom SlotSample Utterancesが変えられるようになっています。

このあたりの細かい説明は、JAWS-UG IoT専門支部 IoTサロン 2016-09の発表で使ったスライドを見てもらえるとわかりやすいかと思います。

Alexa Skills Kitを使って自作のSkillを作る

事前に定義されているSlotもかなり種類が増えました。
Slot type

  • AMAZON.AT_CITY
    • オーストリアの有名な都市の名前
  • AMAZON.DE_CITY
    • ドイツの有名な都市の名前
  • AMAZON.EUROPE_CITY
    • ヨーロッパの有名な都市の名前
  • AMAZON.GB_CITY
    • イギリスの有名な都市の名前

これらのSlot Typeから想像するに、単にイギリスやドイツで使えるようになりました!というよりも、もっと広い範囲のヨーロッパにいる人たちが利用できるようなSkillの開発を期待しているのかなと思いました。

ドイツ語対応

せっかくなのでドイツ語対応してみました。

公開しているSkillはAlexa, ask moon ageと質問すると今日の月の月齢を教えてくれる簡単な物なので、google translateを駆使すればなんとかなるはず。

Skill Information

Add New Languageのタブをクリックして、言語にドイツ語を指定します。

Skillの画面に表示されるアプリ名と、実行する際の起動ワード(Invocation Name)をドイツ語で登録します。

Interaction Model

Intentは英語と変わりません。

{
  "intents": [
    {
      "intent": "AskMoonAge"
    }
  ]
}

Sample Utterancesは発話によってどのIntentを指定するかの紐付けなので、ドイツ語で考える必要があります。

英語版

AskMoonAge ask moon age
AskMoonAge today's moon age

ドイツ語版

AskMoonAge ask Mondphasen
AskMoonAge heutigen mondphasen

Skillのコード

このSkilはLambdaで作っているので、Lambdaのコードを修正します。

Lambdaに送られてくるリクエストのイベントにlocaleが含まれるようになったので、その値を参照して、返す言語を切り替えればOKです。

  "request": {
    "type": "LaunchRequest",
    "requestId": "EdwRequestId.86330998-71c9-439e-b63c",
    "locale": "en-GB",
    "timestamp": "2016-10-08T05:57:36Z"
  },

Skillのテスト

テストの画面でもドイツ語のタブが増えているので、起動ワードを入力してテストします。

画面右下の再生ボタンをクリックすると、Skillが返してきたテキストを再生してくれます。ちゃんとドイツ語ですね!!(全然わからないけど)

ちなみに、英語、イギリス英語、ドイツ語では声が女性の声ですが、少しづつ違います。

公開

全体的な流れは以前書いたこちらのエントリを参考にしてください。

Alexa Skillsを公開する流れ

前にはなかった項目Countries & Regionが増えてました。

現在は音楽のストリーミングなどもできるようになったので、Skillの内容によっては公開先を限定しないと駄目なのかもしれないですね。
今回はデフォルトのIn all countries and regions where Amazon has presenceを選びました。

13才未満の子供を対象としたSkillなのかも問われています。

とりあえずNoで。

すべての入力が済んでるとSubmit for Certificationのボタンが押せるようになるので、問題がなければクリックします。

無事、審査に提出できたようです。

前回と同じであれば数日で審査が終わるので、結果を待ちます。

Skillの一覧画面を見ると、Skillの状態が確認できます。
すでに公開済みのSkillと、審査中ステータスになった物が表示されています。

審査結果は後日こちらに書きます。

審査結果(11/3追記)

10/8に審査に提出したところかなりの間放置され(世界的にも審査が遅かったようです)、10/21にリジェクトされました。

リジェクトの理由は、「sample utterancesが少ないから、もっと増やせ」とのこと。言語ごとにリジェクト理由が書かれてくるのですが、3言語とも指摘されました。初回はそれで通ったのにと、、と思いつつもドイツ語に関してはサンプルも書かれていたので、5個ぐらいに増やして再度申請。

10/24に再度リジェクト。今回は速かった。

リジェクトの理由は、UKに関しては前回と同じ「sample utterancesが少ないから、もっと増やせ」とのこと。(6個ぐらいあると大丈夫そう)

ドイツ語に関しては、「使い方のサンプルに書かれている発話は、sample utterancesにもないとダメだよ」という指摘。typoですね。。

時間が取れなかったので、10/29に再々審査に提出。

11/3に無事審査通過!!

ドイツ語は全くわからないので、sample utterancesを複数種類書くのに凄い苦労します。