ひぐぺん工房トップへ おかげさまで23周年!

ひぐぺん工房(松浦健一郎・司ゆき) - HigPen Works
・今までの仕事 ・書籍 ・最近の業務 ・対応可能言語 ・お見積

『おもしろまじめな AIスピーカーアプリをつくろう - Google Home(アシスタント) & Amazon Echo(Alexa)音声アシスタント開発』
Q&A

以下の回答で問題が解決しなかった場合には、 こちらから ご連絡ください。

訂正


2018/01/18
Q.CGIプログラムの動作テスト(4章、p.90)
A.
CGIプログラムの動作テストに関する誤りがありました。誠に申し訳ございません。

(1) hello.pyの出力をブラウザで確認する際には、hello.pyの(4)をコメントにしてください。
# input = json.load(sys.stdin)
ブラウザにおける動作確認が終わったら、元のプログラムに戻してください。
input = json.load(sys.stdin)

(2) 図「CGIプログラムの出力をブラウザで確認する」において、プログラムのファイル名が「test.py」となっていますが、正しくは「hello.py」でした。以下が正しい図です。
p.90の図

2018/01/28
使用するAmazonのアカウント(3章、p.65など)
A.
米国Amazon(amazon.com)のアカウントを使用した場合には、Alexaの言語設定を切り替えることによって、英語と日本語のいずれのアプリケーションも動作します(本書執筆時に確認)。一方、日本Amazon(amazon.co.jp)のアカウントを使用した場合、現時点(2018/01/28)においては、日本語のアプリケーションは動作しますが、英語のアプリケーションは正しく動作しないようです。

米国において英語と日本語の両方に対応している状況を見ると、将来は日本Amazonのアカウントでも、英語のアプリケーションが正しく使えるようになることが期待されますが、現時点では未対応です。そのため、日本Amazonのアカウントを使用した場合、本書で紹介している英語のアプリケーションは動作しません。誠に申し訳ございません。

本書で紹介している英語のアプリケーションについては、現時点では米国Amazonのアカウントを使用して、実行して頂けましたら幸いです。

(1) Amazon Developerには米国Amazonのアカウントでログインしてください(p.55)。
(2) スマートスピーカー(Echo)を米国Amazonのアカウントに登録してください。日本のアカウントに登録済みの場合には、デバイスの設定画面(p.66)の下方に、「デバイスの登録先」という欄があり、「登録解除」というボタンがあります。一度登録解除した後に、米国Amazonの設定画面(https://alexa.amazon.com/spa/index.html)から(p.65)、「Settings(設定)」->「Devices(デバイス)」->「Set up a new device(新しいデバイスをセットアップ)」を実行し、スマートスピーカーを登録します。
(3) Alexaの言語設定は、英語のアプリケーションを実行する場合には英語に、日本語のアプリケーションを実行する場合には日本語に設定してください(p.65)。
(4) あとはアプリケーションの作成・実行ともに、本書の説明の通りにお使いください。

2018/02/28
リストのファイル名(9章、p.263)
A.
リスト(List)のファイル名に誤りがありました。誠に申し訳ございません。
誤:voice/google/sleep.py
正:voice/google/audio.py

補足


2018/01/18
Q.ブラウザによるJSONの表示(4章、p.90)
A.
サーバに配置したプログラム(hello.py)をテストする際に、Chromeなどのブラウザでは本書のようにJSONが表示されますが、Internet Explorerなどのブラウザでは「ファイルを開く」や「保存」などを選択するダイアログが表示される場合があります。この場合には、「ファイルを開く」を選択するか、「保存」を選択した後にファイルをテキストエディタなどで開けば、JSONを表示することができます。

2018/03/20
Q.CGIプログラムの拡張子(3章、p.88など)
A.
レンタルサーバによっては、CGIプログラムの拡張子を「.py」から他の拡張子に変更する必要があります。
「ロリポップ!レンタルサーバー」の場合には、拡張子は「.py」のままお使いください(CGI、SSI、PHP、SENDMAILについて(ロリポップ!)
「さくらのレンタルサーバ」の場合には、拡張子を「.cgi」に変更してください(CGI・PHP・SSI について(さくら))。
以下にレンタルサーバごとの拡張子、パーミッション、Pythonのパスをまとめました。
レンタルサーバ拡張子パーミッションPythonのパス(シバンに記述)
ロリポップ!.py700/usr/local/bin/python2.7
さくら.cgi755または705/usr/local/bin/python

2018/03/20
Q.macOSやLinuxにおける入力の終了(5章、p.142)
A.
標準入力からの入力を終了する場合、WindowsではCtrl+Zキーを使いますが、macOSやLinuxではCtrl+Dキーをお使いください。

2018/03/20
Q.request.pyをサーバ上で実行する方法(5章、p.143)
A.
request.pyをサーバ上で実行するには、request.pyのURLをブラウザから直接指定するのではなく、p.143からの手順に沿ってGoogle用またはAmazon用の設定を行った後に、Googleのコンソールもしくはスピーカー(Home)、Amazonのコンソールもしくはスピーカー(Echo)から話しかけることによって、実行してください。
request.pyはhttpのPOSTリクエストを使います。URLをブラウザから直接指定した場合、POSTリクエストではなくGETリクエストになるため、リクエストを取得する処理(input = json.load(sys.stdin))においてInternal Server Error(エラーコード500)が発生し、動作しません。

2018/06/03
Q.WebhookのURL(4章、p.100)
A.
ロリポップ!で共有SSLを有効にするには、通常のURLが「http://ユーザ名.サーバ名.jp/…」の場合、代わりに「https://サーバ名-ユーザ名.ssl-lolipop.jp/…」というURLをお使いください。

2018/06/08
Q.改行コード(4章、p.72など)
A.
テキストファイルの改行コードには、「CR+LF」「CR」「LF」といった種類があります。Windows環境では「CR+LF」が、Unix環境では「LF」が多く使われます。Windows上のテキストエディタで.pyファイルを作成し、レンタルサーバ上にアップロードして動作させる場合、改行コードを「CR+LF」から「LF」に変更しないと、動作しない場合があります(例えばロリポップ!でPython2.7を使用する場合に動作しませんでした)。
そのため、本書で.pyファイルを作成する際には、改行コードを「LF」にして頂くことをおすすめします。改行コードの設定方法はテキストエディタによって異なりますので、「テキストエディタ名 改行コード」などでWeb検索して頂けましたら幸いです。例えば「秀丸」の場合には、メニューの[ファイル]->[エンコードの種類]->[改行=LF]を選択すると、改行コードを「LF」に変更することができます。
なお、本書のダウンロードファイルに含まれるサンプルは、改行コードが「LF」になっていますので、そのままアップロードして頂ければ動作します。

2018/08/06
Q.Python2のインストール(3章、p.38)
A.
Pythonのダウンロードページ(https://www.python.org/downloads/)において、「Download Python 2.7.x」のボタンがなくなってしまっているようです。この場合は次の手順でダウンロードしてください。
(1) 同じページの下方に過去のバージョンの一覧表がありますので、その中にある「Python 2.7.x」(本書と同じバージョンを使うには「Python 2.7.14」)を見つけて、「Download」をクリックしてください。
(2) 選択したバージョンのダウンロードページに移ります。ページの下方にある「Windows x86 MSI Installer」をクリックしてください。
(3) インストールファイルがダウンロードされます。ダウンロードが完了したら実行し、本書p.39からの手順に沿ってインストールしてください。

2018/10/08
Q.Pythonプログラム保存時の文字エンコーディング(3章、p.87)
A.
Pythonプログラムの保存時には文字エンコーディングに「UTF-8、BOM無し」を指定してください。「UTF-8N」は「UTF-8、BOM無し」を意味しますので、もし「UTF-8N」が指定できる場合には、これを指定してください。

アップデート(Google)


2018/06/06
Google用のインテント作成(5章、p.152)
A.
表示と操作が変更されました。p.152の各手順は、以下のように操作してください。
②「User says」は「Training phrases」に変更されました。「Training phrases」の欄にmessageと入力します。以後、本書で「User says」を操作する箇所は、代わりに「Training phrases」を操作してください。
③messageをダブルクリックして、メニューで@sys.anyを選択します。「Try to avoid using @sys.any...(できれば@sys.anyの使用を避けるように)」というダイアログが表示されますが、OKをクリックしてください。
④PARAMETER NAMEの欄に自動的に「any」と入力されますが、「message」に変更します。
⑤Fulfillmentをクリックして開き、「Enable webhook call for this intent」のスイッチを有効にしてください(右にスライドして、水色の表示にします)。

2018/05/05
GoogleのAPIバージョン(4章、p.97など)
A.
GoogleのAPIがバージョンアップして、V2 APIがデフォルトになりました。本書のプログラムを動作させるには、下記の手順で従来のV1 APIを選択してください。

(1) アプリ名(MyTestAppなど)の右にある歯車をクリックして、設定画面を表示します。
google_ui

(2) [General]の[API VERSION]において[V1 API]を選択し、右上の[SAVE]をクリックします。

2018/06/03
GoogleのWebhook設定(4章、p.100)
A.
Use webhook(Webhookを使う)のチェックボックスが、Enable webhook call for this intent(このインテントに対してWebhookを有効にする)のスイッチに変更されました。このスイッチを有効にしてください(右にスライドして、水色の表示にします)。

アップデート(Amazon)


2018/02/28
Amazonアカウント作成時の操作方法(3章、p.55)
A.
Amazon用の開発サイト(Amazon Developer)の操作方法が変更されましたので、現時点(2018/02/28)における操作方法について補足します。
p.55(1)、p.56(2):操作は本書と同じです。「あなたのAlexaダッシュボード」は「あなたのAlexaコンソール」に変更されました。
p.57(3)、p.58(4):操作は本書と同じです。メッセージは英語から日本語に変更されました。
p.59(5)、p.59(6):「あなたのAlexaダッシュボード」ではなく「あなたのAlexaコンソール」をクリックし、メニューから「Skills」をクリックしてください。
p.60(7):「ALEXA」はクリックする必要がなくなりました。
p.61(8):操作は本書と同じです。
Amazon/Googleともに、開発サイトの操作方法は随時変更されています。Amazonについて現在「新しいAlexa Skills Kitデベロッパコンソール」のベータ版が公開されているところで、正式版になると再び操作方法が変更になる可能性があります。

2018/02/28
Amazon Alexaの言語設定(3章、p.65)
A.
手順(1)について、設定画面のURLが変更されましたので、現時点(2018/03/08)における操作方法について補足します。
米国サイト(amazon.com)のアカウントを使用する場合:
https://alexa.amazon.com/spa/index.html
日本サイト(amazon.co.jp)のアカウントを使用する場合:
https://alexa.amazon.co.jp/spa/index.html

2018/03/08
Amazonアカウントの新規作成(3章、p.57~p.58、Amazon)
A.
事前に米国Amazon(amazon.com)または日本Amazon(amazon.co.jp)で、アカウントを作成しておくと簡単です。
新規にアカウントを作成する場合、米国Amazonのアカウントではなく、国を選択した上でAmazon Developerのアカウントを作成する、という方式になりました。作成時に国、氏名、開発者名、電話番号、住所などの入力を求められたら、必要な項目を入力してください。

2018/03/08
Alexaのコンソール(3章、p.61)
A.
Alexaのコンソールが変更されたため、本書と同じ画面が表示されない場合があります。この場合には、画面上の「Switch to old console(古いコンソールに切り替える)」をクリックすると、本書と同じ画面に戻ります。

2018/04/19
Alexa開発者用コンソールの変更:基本(4章、p.129~p.132)
A.
Alexaの開発者用コンソールが変更され、本書の説明とは操作方法が変わりました。2018/04/19現在のコンソールを使った、日本語アプリケーションの作成手順を、以下で簡単に説明します。

(1) [スキルの作成]をクリックします。
amazon_ui

(2) スキル名「あいさつ」を入力し、日本語を選択して、[次へ]をクリックします。
amazon_ui

(3) [カスタム]をクリックし、[スキルの作成]をクリックします。
amazon_ui

(4) [呼び出し名]をクリックし、呼び出し名「あいさつ」を入力します。
amazon_ui

(5) [インテント]の[追加]をクリックし、カスタムインテント名「GreetIntent」を入力し、[カスタムインテントを作成]をクリックします。
amazon_ui

(6) サンプル発話「こんにちは」を入力し、[+]をクリックし、[モデルをビルド]をクリックします。
amazon_ui

(7) [エンドポイント]をクリックし、[HTTPS]をチェックし、[デフォルトの地域]にWebhookのURLを入力します。その下の欄で証明書の形式を選択し、[エンドポイントを保存]をクリックします。共有URLの場合、証明書の形式は「証明機関が発行したワイルドカード証明書~」です。
amazon_ui

(8) モデルのビルドが終了してから、[テスト]をクリックします。[Alexaシミュレータ]で「あいさつを開いて」と入力し、アプリケーションの応答(ここでは「ラーイ」)が返ってきたら成功です。
amazon_ui

2018/05/04
Alexa開発者用コンソールの変更:オーディオ(9章、p.266~p.287)
A.
Alexaの開発者用コンソールが変更され、本書の説明とは操作方法が変わりました。2018/05/04現在のコンソールを使った、オーディオアプリケーションの作成方法について、以下に補足します。

(1) Audio Playerの有効化(p.267)については、[インターフェース]をクリックし、[Audio Player]を有効にします。このとき、AMAZON.PauseIntentとAMAZON.ResumeIntentが自動的に追加されます。最後に[インターフェースを保存]をクリックします。
amazon_ui

(2) インテントの作成(p.268, p.277)については、[インテント]の[追加]をクリックし、カスタムインテント名[PlayIntent]を入力し、[カスタムインテントを作成]をクリックします。AMAZON.PauseIntentとAMAZON.ResumeIntentは(1)で追加されるので、この段階での追加は不要になりました。スリープアプリケーション(p.277)については、インテントスロット「Minute」を作成し、スロットタイプにAMAZON.NUMBERを選択した上で、サンプル発話を「プレイ {Minute}」にします。
amazon_ui

(3) URLの設定(p.270, p.279)は[エンドポイント]で行います。プログラムは本書のままで動きます。

(4) [モデルを保存]と[モデルをビルド]をクリックします。モデルのビルドが終了するのを待ちます。

(5) Audio PlayerのテストにはAIスピーカー(Echo)を使う必要があります。Echoに「オーディオを開いて」(オーディオアプリケーションの場合)、「スリープを開いて、プレイ、1」(スリープアプリケーションで1分再生する場合)、などと話しかけます。

2018/06/09
Alexa開発者用コンソールの変更:コピー(5章、p.161~p.175)
A.
Alexaの開発者用コンソールが変更され、本書の説明とは操作方法が変わりました。2018/06/09現在のコンソールにおいて、日本Amazon(amazon.co.jp)のアカウントを使った、日本語版コピーアプリケーションの作成手順を、以下で簡単に説明します。
なお、本書の英語版アプリケーションを動作させる場合、日本Amazon(amazon.co.jp)のアカウントではなく、米国Amazon(amazon.com)のアカウントをお使いください。詳しくはこちらのQ&Aをご覧ください。

(1) [スキルの作成]をクリックします。
amazon_ui

(2) スキル名「コピー」を入力し、言語(スキル作成時のデフォルト)は「日本語」を選択して、[次へ]をクリックします。
amazon_ui

(3) [カスタム]をクリックし、[スキルの作成]をクリックします。
amazon_ui

(4) [呼び出し名]をクリックし、呼び出し名「コピー」を入力します。
amazon_ui

(5) [インテント]の[追加]をクリックし、カスタムインテント名「SayIntent」を入力し、[カスタムインテントを作成]をクリックします。
amazon_ui

(6) サンプル発話「言って {Message}」を入力し、[+]をクリックします。MessageのスロットタイプはAMAZON.Colorを選択します。そして、[モデルをビルド]をクリックします。
amazon_ui

(7) [エンドポイント]をクリックし、[HTTPS]をチェックし、[デフォルトの地域]にWebhookのURLを入力します。その下の欄で証明書の形式を選択し、[エンドポイントを保存]をクリックします。共有URLの場合、証明書の形式は「証明機関が発行したワイルドカード証明書~」です。
amazon_ui

(8) モデルのビルドが終了してから、[テスト]をクリックします。[Alexaシミュレータ]で「コピーを開いて 言って 青」と入力し、アプリケーションの応答(ここでは「青」)が返ってきたら成功です。色の名前以外、例えば「コピーを開いて 言って 生麦生米生卵」を入力した場合にも、アプリケーションは応答します(ここでは「生麦生米生卵」)。
amazon_ui

最終更新 2018/10/12
トップページへ
©ひぐぺん工房 禁無断転載
動画講座「 AIへまっしぐら! Pythonアニマルズ 」 最新刊『 Technical Master はじめてのPython 』
このサイトはリンクフリーです。 このサイトはChromeで動作検証しています。ブラウザにかかわらず表示に乱れがありましたらどうぞお知らせ下さい。メールを送る