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

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

スマートスピーカーのバイリンガル化を求む

Google Assistant の「バイリンガル化」なんて記事もあったので期待したのですが、どうもうまく二か国語を操らせることができません。期待していたのは下記の三点ですが、Google HomeGoogle Assistant と Amazon Echo の Alexa の両方とも駄目です。

  • ユーザーが自由発話した英語を聴きとることができる
  • ユーザーに流暢な英語で応答することができる
  • 日本語設定の端末で利用することができる

それぞれの弱点が近日克服されることを切に願います。そんなこんなで作成した Google Home 用アプリケーションはこちらですが、機能が改善すればこのアプリケーションもアップデートしたいと思います。

cheerio-the-bear.hatenablog.com

Google Assistant は SSML の <lang> タグに未対応

Google Assistant はバイリンガル化されていると言われていて、「アシスタントの言語」で英語を追加していない状態でも、英語を英語として聴き取ってくれます。ユーザーに "I have a pen" と発声させて、その "I have a pen" をそのまま JSON リクエストに載せることが可能です。

f:id:cheerio-the-bear:20190105111118p:plain
Actions on Google シミュレータ - "I have a pen"

しかし、とても残念なことに日本語の音声、例えば "Male 1 (JA)" が設定されたアクションに "I have a pen" を発声させようとすると、いわゆる日本人のベタな「アイハブアペン」発音になってしまい、全く流暢さが無くなってしまいます。指定した言語で発音させることができる <lang> タグが SSML の仕様に存在しますが、Actions on Google の SSML の説明ページでは全く触れられていません。

2017 年末のフォーラムでの会話でも、<lang> タグがサポートされていないと言われていて、どうやらその状況が今も続いているようです。

The <lang> SSML element is not supported yet. At this point, you can consider using the <audio> SSML element to make your Assistant action use pre-recorded audio files as responses.

Actions on Google のシミュレータで下記のように SSML を貼って試してみましたが、やはり駄目です。早期改善が期待されます。

f:id:cheerio-the-bear:20190105113331p:plain
Actions on Google Simulator - <lang> タグ非サポート

英語のみをサポートするアクションにして、"Male 1 (US)” のような英語音声を指定すれば、システムの標準 TTS を利用して Google Assistant に流暢な英語を喋らせることはできます(流暢な日本語の発声はできなくなりますが)。しかし、ユーザーの発声を Google Home がうまく認識できないような場合に、自動的に Google Home のデフォルト音声(日本ではきっと大多数の人が日本語音声)にフォールバックしてしまうようで、その後の Google Home とのやり取りもフォールバック後の音声で続けられてしまいます。日本人の残念な発音の英語に変化してしまうので、がっかりです。

2019/01/08 追記 : ユーザー無応答時のリプロンプト (Reprompt) の際に何故か日本語音声に変わってしまう問題、Actions on Google のサポートチームの方にもご認識頂けました。近いうちに解決されることを期待して待ちます。

Alexa は英語を聴いてくれない

一方、Alexa は SSML の <lang> タグをサポートしてくれているので、日本語設定でも流暢な英語を喋らせることができるようになっています。先ほど Actions on Google のシミュレータに喋らせようとした <lang> タグの使用例は、下記の Alexa のリファレンスから持ってきたものです。このページでは、実際に <lang> タグが効いている様子を耳で確認することができます。

ところが、Alexa にはもっと根本的なところに大きな問題があります。日本語設定の Alexa に対してユーザーに "I have a pen" と発話させても、それを英語だとは認識することができず、JSON リクエストに載せられるのは「アイハブアペン」です。

f:id:cheerio-the-bear:20190105120042p:plain
Alexa シミュレータ - "I have a pen"

日本語設定の Alexa が英語を聴くことができないということは、英語のみをサポートするスキルについては、そのままでは音声で起動することさえできないということになると思います。Alexa で英語でやり取りするスキルを作りたいと考えていたので、非常に残念です。