音源再生を利用したalexa skill開発でつまずいたこと

音源再生を利用したalexa skill開発でつまずいたこと

ども、自分のブログの存在を完全に忘れつつあったmasayukiです♪

 

今日は、alexa skill開発でつまづいたことをメモっておこうと思います。

ほんとメモ書きと、あわよくばGoogle検索さんでヒットして困ってるAlexa skill開発者が同じ様に時間を無駄にしないように。って目的なので、Alexa開発興味無いぜって方は華麗にスルーしてください!!!

 

alexa skill開発自体は、ほとんどAmazon様が超絶わかりやすいドキュメント用意してくれてるので、この講座6回をコピペでやれば作れる様になると思います。

「出来ねえよボケ!」って方は、僕のTwitterでもDM頂ければ、解決できれば解決します。出来なかったらごめんなさい。

①実機でないとaudio player機能を持ったスキルはテスト出来ない

alexaのデベロッパーコンソールはなかなか充実してるのですが、なぜかaudio playerを有効にすると、デベロッパーコンソールでは、テスト出来なくなります。

しかも、その際のエラーが結構分かりづらい感じでエラーを出しやがります。

公式のドキュメント

テストページのAlexaシミュレーターにはオーディオ再生機能はありませんが、スキルI/Oセクションにはスキルから送信されるAudioPlayerディレクティブが表示されることに注意してください。再生されないため、Alexaシミュレーターを使用して、再生中のイベントによってトリガーされるPlaybackNearlyFinishedなどのAudioPlayerリクエストをテストすることはできません。

とは、書いてるんですが、めちゃめちゃ探すのに時間かかりました。ここまでコンソール充実してるから、まさかテストページにaudio playerの再生機能がないとは思わなかった。

というか、スキル開発自体は、実機なくても出来るけど、audio playerの機能使いたかったら、実機買ってねってことなんですかね。

 

②audio playerで再生中はstop Intentではなく、pause Intentで停止処理が実行される

これも公式のドキュメント

オーディオの一時停止や再開に必要なビルトインインテントを実装すること。AudioPlayerインターフェースをスキルに追加すると、自動的にこれらの必要なインテントがモデルに追加されます。

  • AMAZON.PauseIntent
  • AMAZON.ResumeIntent

と書いてますし、audio playerインターフェイスを有効にした時点でインテント勝手に追加されるので、気づかない僕がポンコツなだけなんですが、

「あれー。stop Intentちゃんと定義してるのに、エラーになるなー。」

ってのをずっとやってました。

audio player 有効にしたら、pause Intentはちゃんと処理しときましょう。

 

③<audio src =””>タグで正しく音源が再生されない

alexa skillで音声再生する方法は2種類あって、

  1. audio player として、音楽の再生のような感じで再生する。
  2. <audio>たぐで、効果音として再生する。

前者だと、再生の時間制限は無いのですが、再生が終わった際にAlexaに何か喋らせるっと言ったことが出来ない。(はず。いろいろ調べたのですが、)

なので、<audio>タグとしてAlexaの読み上げの間に入れ込めば、

【Alexaが喋る】

音源再生

【Alexaが喋る】

ということが、出来るのですが、実はシビやな制限が。。。

これまた、公式のドキュメント様にガッツリ書いてます。

属性 使用できる値
src MP3ファイルのURLを指定します。次に挙げる要件と制限にご注意ください。

  • MP3は、インターネットからアクセス可能なHTTPSエンドポイントでホストされる必要があります。HTTPSであることが必須です。また、MP3ファイルをホストするドメインは、有効で、信頼できるSSL証明書を提示する必要があります。自己署名証明書は使用できません。
  • MP3には、ユーザーに固有な情報や、その他の機密情報が含まれていてはなりません。
  • MP3は、有効なMP3ファイル(MPEGバージョン2)である必要があります。
  • 音声ファイルは90秒以内でなければなりません。
  • ビットレートは48 kbpsでなければなりません。このビットレートは、話される内容と組み合わせて使用すると良好な結果が得られますが、音楽を再生するには一般に品質がやや不十分です。
  • サンプリングレートは16000 Hzでなければなりません。

必要に応じて、変換ソフトウェアを使用してMP3ファイルを必要なコーデックバージョン(MPEGバージョン2)とビットレート(48 kbps)に変換してください。

僕は、audiacityっていう神様のようなフリーソフトで音声の編集をしているのですが、なぜか、ビットレートを48kbpsに設定しても全くAlexaさんは再生してくれない!!!!

そこで、FFmpegというもっと神様のような音楽編集ソフトを導入したところ、なんとaudiacityで編集した音源が46kbpsになっている。

という、なぞオチでした。

なんで、微妙にずれるのかは謎ですが、さらなる神ツールを見つけられたので良しとしましょう。

 

まとめ

公式ドキュメントはちゃんと読もう

 

 

今日も最後まで読んでくださってありがとうございます♪

audio player機能使ったAlexa Skillがもう少しで公開されるはずなのでお楽しみにー♪