おはようございます!!
昨日は日曜日でプログラミングの日でした。
実は、週後半は盆休みということであまり動けませんでした。
前半部分になりますが、少しかかせていただきます。
目次
突如、MP3ファイルを再生したくなったので、試してみました!!
前週に「スキルからの応答に問題があります」問題が解決したのでAlexa道場の復習の続きをやれば良かったのですが、その前にちょっと試したいことがあったのでやってみました。
それはMP3ファイルの再生です。
私がスマートスピーカーを使っている時間の大半は音楽を再生しています。
やはりスピーカーですからね。
スキルを動作させるときに音楽や効果音を使えば、一気に世界が広がるように感じてしまいます。
たとえば、VoiceAppLabさんのアプリやスキルは、スマートスピーカーの発声する声よりも自前の音楽や声が鳴っている時間の方が長いのではないでしょうか?
そう考えると、MP3攻略はDynamoDBやSDK V2よりも優先度が高い!!と思ってやってみることにしました。(※ ホントは現実逃避したかったわけでもあります。)
・・・といっても、よくわかりません。Alexa道場でもまだ扱ってませんので。
まずは、情報の収集ですね!!
Sound Library – Ambience Sounds
なぜか最初に辿り着いたのが、こちらです。(ほんとになぜかです)
「こちらのページは現在英語のみのご用意となっております」とあります。
あれ?MP3再生はごく一般的な方法だと思っていたのですが??
よくわからないまま、試しにここに書いてある「<speek>・・・」というコードを貼ってみましたが全くダメでした。(※ 無理矢理コピペしただけです)
音声合成マークアップ言語(SSML)のリファレンス
こちらがAmazonの公式リファレンスですね。先に読むべきでした。
ただ、これも私には難解でした。「<speek>・・・」ですから・・・
Alexa Skills Kit for Node.js (alexa-sdk) で音楽ファイルを鳴らす (2018/3/21 追記)
こちらのQiitaの記事です。
こちらはかなり詳しく書いてあり、冒頭のサンプルも「this.emit(‘:tell’, speechOut);」と、そのまま使えそうな感じです。これはまさに神!!
ただ、後半部分の意味がよくわからず、固まってしまいました。
(あとから読み直してみると、AlexaSDKの内部処理の話でした)
AlexaスキルでMP3ファイルを流そう!効果音を入れてワンランクアップのスキル開発
いろいろわからなかったものが、この記事を読んでスッキリしました!
まさに女神です!!
・・・で、読ませていただいてチャレンジしたものの結構苦労しました。
ただ、後から見直すとしっかり読んでいれば回避できたことばかりでした。
これから試される方は5回ぐらい読んでみる事をオススメします。
(どちらかといえば、新人プログラマーレベル向けぐらいでしょうか?)
・・・で、実際にMP3を再生させてみました!
手持ちのCDのMP3データをどこかにアップロードするといろいろ面倒な事になりそうですし、とりあえずネット上にあるフリーMP3データをLambdaのjsファイルで指定してみました・・・が再生されませんでした。
そういえば、上のページに注意することが書かれてました。(※ちょっと言葉を変えてます)
- https://のサイトにMP3ファイルを置いてること!
- 再生時間は90秒以内であること!
- MP3ファイルは規程のビットレート・サンプリングレートであること!
- MP3ファイルは個人情報や機密情報を含まないこと!
よく見れば、そのフリーMP3データのサイトはhttp://でした。こりゃダメです!
幸いダウンロードも可能なサイトでしたのでダウンロードしたものの、今度はこのファイルをhttps://のサイトに置かないといけません。
Alexa道場や上の記事に出てきてたAWSのS3サーバーは敷居が高いです。
私のこのサイトはまだhttp://のままですし、とりあえずGoogle Driveでやってみましたが残念ながらダメでした。これが使えればラクチンだったのですが・・・
よくよく見るとこんな条件↓があるようです。
これって、AWSのS3以外はダメ!!って言ってるようなものですね。
結局、あきらめてS3を使う事にしました。
そして、再チャレンジ!!・・・やはり音が出ません。
何が悪いのか何も言ってくれないことには対策が・・・と思っていたら、規程のビットレート・サンプリング周波数が目に停まりました。(Amazon公式のこちら)
MP3フォーマット創世記でもここまで厳しくはありませんでした。
(言葉は悪いですが)まさに時代錯誤な仕様です。
そこで公式ページにあった方法で、Audaciyを使う方法を使いました。
もう1つのソフトウェアに、Audacityがあります。
- 変換するファイルを開きます。
- 左下にある「Project Rate」を
16000
に設定します。- 「File」>「Export Audio」の順にクリックし、「Save as type」を
MP3 Files
に変更します。- 「Options」をクリックし、「Quality」を
48 kbps
に設定し、「Bit Rate Mode」をConstant
に設定します。これには、Lameライブラリが必要です。次のサイトにあります: http://lame.buanzo.org/#lamewindl.
ファイルをアプリに放り込んで、
「プロジェクトのサンプリング周波数」を16,000Hzに下げてから、
と、48KHzに変えて保存すれば、変換OKですね。
ちなみに大量にMP3ファイルがある場合は、showさんがこんな方法を公開されてました。
ffmpegを使う方法なのですが、一度環境を作ってしまえばあっという間ですね!!
・・・で、以上の結果、無事Amazon Echoで再生することができました!!
コーヒーショップスキルの先頭に無理矢理ねじ込んだのですが、
スキルを起動するとコーヒーショップ開店の音楽が流れるようになりました!
以上です。
ちょっとスキル作成の勉強から離れてしまいましたが、たまにはいいですよね!!
(おわり)