するめごはんのIT日記

主にITネタを書いていくのさ

スマートスピーカーもくもく会でAlexaからFirebaseに配置したmp3ファイルを呼ぼうとして失敗したけど帰宅したら別の方法でできた話

後日このやり方でやったら、やはり動的URIがしんどいので別の方法が良いです。。。


ごきげんよう

本日はスマートスピーカーもくもく会でしたよ。

掲題の通り、GoogleのFirebaseにmp3ファイルを配置して、Alexaで呼べるのかなぁと思ったら失敗しました。
が、帰宅したらできた。

あと、ブログタイトルって何文字までいけるのかなと思ってあえて長めにしてみた。
きっとアンチパターンだろう。

なんでAlexaなのにFirebaseにしたの?

素直にS3使ったら面白くないかなぁと思ってたのと、Google Homeで遊んでた時にFirebaseにmp3ファイルを入れてたことがあり
「いけるのでは?」
とやってしまった。

そりゃいけるんだけど。

mp3を変換するやーつ

FFmpegの公式サイトから落としてきて、下記のクラスメソッドさんの記述にあるようにビットレートとかサンプルレートとかをいじってあげる。

FFmpegさん
FFmpeg

素直にS3で呼ぶ場合

上記にある通り、これはクラスメソッドさんが公開してるのでそれを見てください。

dev.classmethod.jp

引用するとこうなる

$ ffmpeg -i <input-file> -ac 2 -codec:a libmp3lame -b:a 48k -ar 16000 <output-file.mp3>
-b:a 48k ビットレート 48kbit/s
-ar 16000 サンプリングレート 16000Hz

ハマってたところ

FIrebaseのconsoleでStorageを選んでmp3ファイルをアップロードして「ファイルの場所」から「ダウンロードURL」でURIを取得。

f:id:surumegohan:20180527225149p:plain

FIrebaseにファイルを置いたらURIに「?」がでてきて、それ以降が動的なのではなかろうかという説。

んなこーたーないだろう。
けど、他のもくもく会参加者もできなったという噂が?
あれれ?

ってなってたけど、やり方変えたらできました。

どうしたか

とりあえずAWSからGoogle Cloud Platform(GCP)を呼びたかった。

そもそも去年、Google Home君で遊んでた時にFirebaseにmp3置いてSSMLで呼んでただろう。
なんで今はダメなのよ。

ってやったらまぁ、アホかったんですけど
GCPを開いて、無料ユーザ登録をしてなかった
というアホさ。

ごめんて。
個人環境でやるの忘れてたんだって。
AWSばっかりやってたんだって。
ごめんて。

で、まぁ

Firebase Consoleでプロジェクトを作っておいて、
GCPで無料ユーザ登録して、
Firebaseで作っておいたプロジェクトにmp3ファイルを置いて、
めっちゃ長いURIを取得して、
lambdaから呼ぶ。

Simple !
This is very simple !

当たり前だけど、もちろんこのURIには「?」が入ってる。

で、これをやって何を得たのよ

AWSにのみ依存するのもなー
かといってgithubにmp3を置いておくのものなー
オレオレ証明書・・うっ。。。頭がっ、、、

という単にやってみただけではあるのですが遅延もめっちゃ気になるほどの遅れはなかった。

AWSではないサーバにmp3ファイルをおいても動作するんだから、S3の課金に必ずしもビクビクしないでいいってのが一番得られたことでしょうな。

ってか通信量によるお金を気にしないならConoHaにでも置いておけばいいような気がこの記事を書いててしてきた。

失敗談を公開すること

失敗談ってあんまりブログ記事とかになかったりする。
けど、こういうのこそ、公開しておくことに何かしら意義があるんじゃなかろうか。