プログラミング:「日曜はプログラミングの日」MP3ファイルの再生など 8/12分まで

おはようございます!!

昨日日曜日プログラミングの日でした。
実は、週後半は盆休みということであまり動けませんでした。
前半部分になりますが、少しかかせていただきます。

突如、MP3ファイルを再生したくなったので、試してみました!!

前週に「スキルからの応答に問題があります」問題が解決したのでAlexa道場の復習の続きをやれば良かったのですが、その前にちょっと試したいことがあったのでやってみました。
それはMP3ファイルの再生です。

私がスマートスピーカーを使っている時間の大半は音楽を再生しています。
やはりスピーカーですからね。

スキルを動作させるときに音楽効果音を使えば、一気に世界が広がるように感じてしまいます。

たとえば、VoiceAppLabさんのアプリやスキルは、スマートスピーカーの発声する声よりも自前の音楽や声が鳴っている時間の方が長いのではないでしょうか?

GoogleHomeがサンタさんと話せるようになったと聞いて、実際に試してみました。AIスピーカーの可能性が大きく広がるアプリの登場に驚かされました。
Google HomeがClovaのドラえもんに対抗したのか、ハローキティ,シナモロールちゃんなど10種の新アプリを発表しましたので、そのうち半分を実際に試してみました!!
ずっとやりたかったGoogle Homeアプリ「ボイスカンフー」で遊んでみました。実戦さながらに疲れますが、ちょっと気になる点もありました。

そう考えると、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ファイルを流そう!効果音を入れてワンランクアップのスキル開発

dotstudioちゃんとくさんの記事でこちらです。


いろいろわからなかったものが、この記事を読んでスッキリしました!
まさに女神です!!

・・・で、読ませていただいてチャレンジしたものの結構苦労しました。

ただ、後から見直すとしっかり読んでいれば回避できたことばかりでした。
これから試される方は5回ぐらい読んでみる事をオススメします。
(どちらかといえば、新人プログラマーレベル向けぐらいでしょうか?)

・・・で、実際にMP3を再生させてみました!

手持ちのCDMP3データをどこかにアップロードするといろいろ面倒な事になりそうですし、とりあえずネット上にあるフリーMP3データをLambdaのjsファイルで指定してみました・・・が再生されませんでした。
そういえば、上のページに注意することが書かれてました。(※ちょっと言葉を変えてます)

  1. https://のサイトにMP3ファイルを置いてること!
  2. 再生時間は90秒以内であること!
  3. MP3ファイルは規程のビットレート・サンプリングレートであること!
  4. MP3ファイルは個人情報や機密情報を含まないこと!

よく見れば、そのフリーMP3データのサイトhttp://でした。こりゃダメです!

幸いダウンロードも可能なサイトでしたのでダウンロードしたものの、今度はこのファイルをhttps://のサイトに置かないといけません。

Alexa道場や上の記事に出てきてたAWSのS3サーバーは敷居が高いです。
私のこのサイトはまだhttp://のままですし、とりあえずGoogle Driveでやってみましたが残念ながらダメでした。これが使えればラクチンだったのですが・・・

よくよく見るとこんな条件↓があるようです。


これって、AWSのS3以外はダメ!!って言ってるようなものですね。
結局、あきらめてS3を使う事にしました。

そして、再チャレンジ!!・・・やはり音が出ません。

何が悪いのか何も言ってくれないことには対策が・・・と思っていたら、規程のビットレート・サンプリング周波数が目に停まりました。(Amazon公式のこちら


MP3フォーマット創世記でもここまで厳しくはありませんでした。
(言葉は悪いですが)まさに時代錯誤な仕様です。

そこで公式ページにあった方法で、Audaciyを使う方法を使いました。

もう1つのソフトウェアに、Audacityがあります。

  1. 変換するファイルを開きます。
  2. 左下にある「Project Rate」を16000に設定します。
  3. 「File」>「Export Audio」の順にクリックし、「Save as type」をMP3 Filesに変更します。
  4. Options」をクリックし、「Quality」を48 kbpsに設定し、「Bit Rate Mode」をConstantに設定します。

これには、Lameライブラリが必要です。次のサイトにあります: http://lame.buanzo.org/#lamewindl.

ファイルをアプリに放り込んで、


「プロジェクトのサンプリング周波数」を16,000Hzに下げてから、

と、48KHzに変えて保存すれば、変換OKですね。

ちなみに大量にMP3ファイルがある場合は、showさんがこんな方法を公開されてました。

ffmpegを使う方法なのですが、一度環境を作ってしまえばあっという間ですね!!

・・・で、以上の結果、無事Amazon Echoで再生することができました!!

※なぜ、こんな2つの表示になるのかはよくわかりません。

コーヒーショップスキルの先頭に無理矢理ねじ込んだのですが、
スキルを起動するとコーヒーショップ開店の音楽が流れるようになりました!

バッチリです!!

以上です。

ちょっとスキル作成の勉強から離れてしまいましたが、たまにはいいですよね!!

(おわり)

↓ この記事よかったよ!!という方はクリックお願いいたします。
ブログランキング・にほんブログ村へ
にほんブログ村

シェアする

  • このエントリーをはてなブックマークに追加

フォローする