Amazon Echo で自分の音楽聞ければいいなぁっと思って、色々探すうちに、自分でアレクサスキルを作るという結論に達しました。
これでGoogle Homeに機能で負けません。
みなさん、スマートスピーカー使ってますか??わが家でも去年からスマートスピーカーを使用しています。赤ちゃんに音楽聞かせるのに
こんなに便利な機械はないと思います。「アレクサ〜〜かけて」と言えば、何でも音楽かけてくれる。
うちの子は、Maroon5とか聞いています。(というか嫁がヘビーローテションしてるだけ??)聞くと寝るので、一応気にいってるかもしれません。
そんなスマートスピーカーですが困ったことが発生しています。Amazon Echoに限った話ですが、”自分の音楽が聞けません”
これって結構致命的なんですよね。なんでこんなことしてるのか分かりませんが、Amazon Musicに加入させたいんじゃないんでしょうか?
Amazon Music 嫌いではないです。でも聞きたいのって音楽だけじゃないでしょ??
ヨガのCDだってあるかもしれないし、英語のCDだってあるかもしれないし、子供の教育のCDだってあるかもしれない。
この点Google Homeは優秀です。Google Play Musciにアップロードすれば、Google Homeで聞くことができます。
さて、どうしたものやら
QNAP NASを検討
まずはじめにQnap NASというものを検討しました。
これは、NASで一番有名らしいもので、Amazon で2万円くらいで売られています。
このNASに音楽を保存して、IFTTTを使えば自分の音楽聞けるらしいです。
2万円か〜〜。Google Home は五千円だしなぁ。
しかもNASか〜〜。NASNEもOne Driveもあるしなぁ。
今更IFTTT使えるNASが来たからといって、この音楽聞けること以外に新しいことができるものとも思えず、
断念いたしました。そして2万円をケチりました。
アレクサスキルを作成
そこでアレクサスキルを自作することにしました。
アレクサスキル・・・Amazon Echoに入れれるスキルで個人でも作成・公開化です。
有名なので、ピカチュウトークなどがありますね。ピカチュウ呼んだら、ピカピカといって出てくるやつです。
最初の方は結構おもしろ半分で使用していました。
・・・今でも使用しているスキルが少ない。。。天気くらい??
あんまり有用な奴がないってことなのでしょう。
このアレクサスキルを使用して音楽再生ができないか検討してみました。
実は検索すれば結構出てくるのです。
ただ、あまり日本語で優秀なのがない。なのでメモ程度ですが下に書きます。
言語はPythonを選択しています。
音楽再生関数
def add_response():
########音楽再生を開始する##########
print(‘add_responseを起動しました。’)
str_url = random.choice(data)
response = {
“version”: “1.0”,
“sessionAttributes”: {},
“response”: {
“directives”: [
{
“type”: “AudioPlayer.Play”,
“playBehavior”: “REPLACE_ENQUEUED”,
“audioItem”: {
“stream”: {
“token”: “12345”,
#”expectedPreviousToken”: “12344”,
“url”: str_url,
“offsetInMilliseconds”: 0
}
}
}
],
“shouldEndSession”: True
}
}
print(‘add_responseを終了しました。’)
return response
〜〜には子供の名前入れてます。
dataにamazon s3のMP3のアドレスを放り込んで
str_url = random.choice(data)
でランダムに選ばせます。
①”playBehavior”: “REPLACE_ENQUEUED”,がめちゃ重要。ここを違うものに選択するとなぜか再生できない。。(例えばENQUEUEDなど)
意味不明ですが。。ここ最後までハマりました。
このadd_responseをAudioPlayer.PlayerNearlyFinishedが起動したタイミングで呼び出します。
elif event[‘request’][‘type’] == ‘AudioPlayer.PlaybackNearlyFinished’:
print(‘デバック:’ + event[‘request’][‘type’] + ‘を受信しました’)
print(event[‘request’])
return add_response()
②AudioPlayer.PlaybackFinished’の時に呼び出そうとしてもなぜかできない(公式サイトに書いています)
③テストは実機出ないと無理。ただ、スマホのAlexaアプリならできてしまう!!
結構苦労しましたが①〜③を気をつければ、ネットのコードを参考に少し改造すればいけました!!
dataに30曲ぐらい入れてランダムで再生させています。
今はこれで童謡をS3に入れてうちの子に聞かせています。(公文の童謡)
著作権の侵害になるので、公開はせず、自分の家族で楽しんでます。
次は英語のmp3をたくさん入れようかと思っています。
(ランダムだけではなく、スキップとかも機能に織り込もうかと)