kun432's blog

Alexaなどスマートスピーカーの話題中心に、Voiceflowの日本語情報を発信してます。たまにAWSやkubernetesなど。

〜スマートスピーカーやVoiceflowの記事は右メニューのカテゴリからどうぞ。〜

Voiceflow TIPS #38 ファイル共有サイトにおいた音声ファイルを使う

ちょいちょい聞かれることも多いのでまとめてみます。

qiita.com

Voiceflowで効果音やサウンドなどの音声ファイルを使う場合、Speak Blockにそのままアップロードしちゃうのが一番カンタンです。Advent CalendarでもSpeak BlockやStream Blockを紹介した際はアップロードすることをオススメしています。

kun432.hatenablog.com

kun432.hatenablog.com

でもVoiceflowのフォーラムなどを見ていると、DropboxとかGoogleドライブとかのファイル共有サイトに置いたファイルをそのまま使いたいというのが案外多いんですね。で、ファイル共有用に発行した専用URLを使うんだけど、うまく行かないのです・・・

ということで、今回は特に質問が多いDropboxGoogleドライブにおいた音声ファイルを使う場合のTipsです。


Dropbox

Dropboxにあるmp3ファイルを使ってみましょう。Dropboxにsample.mp3というファイルをアップロードしてみました。

f:id:kun432:20191226224414p:plain

Dropbox内のファイルを使うには、そのファイルの共有設定を有効化して、外部から参照できるようにする必要があります。ファイルにカーソルを合せると「共有」ボタンが表示されるのでクリックします。

f:id:kun432:20191226225301p:plain

共有の設定画面が表示されるので、「リンクの作成」をクリックします。

f:id:kun432:20191227001547p:plain

共有用のリンクが作成されるので、「リンクをコピー」をクリックします。

f:id:kun432:20191227001626p:plain

クリップボードにリンクがコピーされます。

f:id:kun432:20191227001722p:plain

作成されたリンクはこういう感じになっています。

https://www.dropbox.com/s/XXXXXXXXXXXXXXX/sample.mp3?dl=0

ではこれを使ってスキルから再生してみましょう。Speak BlockにAudioを追加して、URLで指定してみます。

f:id:kun432:20191227002206p:plain

テストです。

f:id:kun432:20191227002903p:plain

うまくいきません。エラーメッセージはこんな感じになっています。

"error": {
    "type": "INVALID_RESPONSE",
    "message": "Invalid Audio Content for requestId amzn1.echo-api.request.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Error: Invalid audio content in URL: https://www.dropbox.com/s/XXXXXXXXXXXXXXX/sample.mp3?dl=0"
}

なんかオーディオが不正だと出ていますね。では、URLのwww.dropbox.comの部分を``dl.dropboxusercontent.com```に変えてみましょう。Speak BlockのAudioを開いて以下のようなURLに変えてください。

https://dl.dropboxusercontent.com/s/XXXXXXXXXXXXXXX/sample.mp3

再テストです。

f:id:kun432:20191227003334p:plain

はい、今度は再生されました!

Googleドライブ

次はGoogleドライブです。同じファイルを使ってやってみます。sample.mp3を右クリックして、「共有可能なリンクを取得」を選択します。

f:id:kun432:20191227012840p:plain

URLが表示されて、自動的にクリップボードにコピーされます。

f:id:kun432:20191227013006p:plain

URLはこんな感じになっています。

https://drive.google.com/open?id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

これを同じようにSpeak BlockのAudioに指定してテストしてみます。

f:id:kun432:20191227010717p:plain

メッセージは違うけど、うまくいきませんね・・・

でこういうふうにURLを変えてください、と言いたいのですが、こちらで確認した限り、Googleドライブの場合は必ずこれが正解、というものがないのですよね・・・・・なので一例をご紹介します。これで動いた方もいれば、動かないという方もいるということでご了承ください。

https://drive.google.com/uc?export=download&id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

いかがでしょうか?結構めんどくさいですよね。しかもこの場合は事前にAlexaで使えるオーディオフォーマットに変換しておく必要があるのですよ・・・Voiceflowにファイルとしてアップロードした場合はこのあたりも含めてよしなに変換してくれるので(稀にうまく行かない場合もあります)、やっぱりVoiceflowへのアップロードが簡単に使えてオススメです!ただまあ知っておくと役に立つ場合があるかも、という参考情報として頭の片隅においておいていただければと思います。