kun432's blog

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

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

Voiceflow TIPS #17 音声・音楽データの再生(Stream Block編)

Voiceflow夏休みAdvent Calendarの17日目です。

前回に引き続き、音声・音楽データ再生の2回目、今回はStream Blockを使ってみたいと思います。

Stream Blockの最大の利点は、Speak Blockであった4分の制限がないことです。したがって、よくある30分〜1時間程度の環境音スキルを作るには最適ですね!

といいつつ、実は私もStream Blockをそれほど使ったことはありませんので、とりあえずいろいろやってみたいと思います。

Stream Blockの使い方

Speak Blockだけ用意して、Stream Blockをつなげます。

f:id:kun432:20190817215020p:plain

Stream Blockをクリックすると、メニューが表示されます。結構縦に長いので、スクロールしないと見えないですね・・・それはさておき。Speak BlockのAdd Audioと同じように、音声・音楽ファイルをドラッグアンドドロップでアップロードすればOKです。

f:id:kun432:20190817215443p:plain

今回は、フリーのBGM素材を提供されているサイト「DOVA-SYNDROME」さんで、素材を多数公開されている「しんさんわーくす」さんの以下の素材を使用させていただきました。

アップロードします。素材データの再生時間が、8分半ありますので、前回よりも少し時間がかかりますが、アップロードできました!(日本語のファイル名だとうまく表示ができなかったので、ファイル名だけ変更してアップロードしてます。)

f:id:kun432:20190817220403p:plain

▶を押すとその場で再生されます。また、時間が8:38であることがわかりますね。Speak Blockだと再生時間の合計が4分以上の場合、スキル実行時にエラーになっていましたよね。今回はどうなりますでしょうか?アップロードしてテストしてみましょう。

f:id:kun432:20190817220816p:plain

エラーになりました・・・・右下のメッセージを見ていただくとわかるのですが、「AudioPlayerはサポートされていない」とあります。AudioPlayerとはなんでしょうか?

公式のリファレンスは以下にありますが、

こっちのほうがわかりやすいかもしれません、

まず、AudioPlayerですが簡単に言うとユーザからの発話をトリガーに音楽を再生してくれる機能になります。

はい、「音楽再生専用の機能」ということですね。Stream Blockを使うとAudioPlayer機能を使った音楽スキルになるということですね。したがって、これまでやってきたような音声でいろいろやりとりして、というものとは少し目的も動作も違ってきます。その点については予め注意してください。細かいところは後で説明していきます。

で、AudioPlayerの機能を使ったスキルは、Alexa開発者コンソールではテストできないので、実機でテストしてみましょう。以下に動画を用意しました。

はい、これだけです。めっちゃかんたんですね!ということで、以上、Stream Blockのご紹介でした!

・・・というのでは面白くないので、もう少し見てみましょう。

Stream Blockに画像やタイトルなどをつける

Stream Blockの下の方にある入力欄に、タイトルや説明、アイコンおよび背景画像等を設定することができますね。これを入れるとどうなるのでしょうか?

f:id:kun432:20190817232300p:plain

※背景画像はPixabayで公開されている「bertvthul」さんの画像を利用させていただきました。

https://pixabay.com/ja/users/bertvthul-1134851/

アップロードした後、実機でテストしてみましょう。

f:id:kun432:20190817232831j:plain

f:id:kun432:20190817232845j:plain

画面付きデバイスだとこういう感じで表示されます。いいですね。

複数の音楽を再生する

先程の動画、気づいた方がいらっしゃるかもしれませんが、途中で画面が普段の時計画面に戻りました。

f:id:kun432:20190818155308p:plain

でも音楽は続いています。これってどういうことでしょうか?

以下のサイトの「AudioPlayerのもつライフサイクル」という箇所がわかりやすいと思います。

あくまでも私の理解なんですが、ポイントしては、

  • 通常のカスタムスキルと異なり、ずっとセッションが継続するわけではない。AudioPlayerスキルの場合、音楽を再生すると一旦セッションが切れる。イメージとしては、音楽再生前までは自分で作ったスキルの会話フローが動作していて、音楽再生が始まるとアレクサにおまかせ、するようなイメージ。
  • 音楽再生の途中、すなわち、スキルから見るとセッションがない状態でも、AudioPlayer特有のインテントが有効になっていて、例えば「一時停止」「次の曲」「前の曲」などを発話すると、スキル側のフローが有効になる。ただし、あくまでもAudioPlayer特有のもののみ。

っていう感じでしょうか。要は、音楽再生に特化しているので、通常のカスタムスキルのような自由な会話フローができるわけではないけど、音楽を聞くために必要な動作は予め用意したものを使える、という感じだと思います。

なので、スキル側としては、AudioPlayerで用意されたインテントに合わせて作れば良い、という感じですね。早速やってみましょう。

4曲ぐらい使って、やってみました。Stream Blockは4つあって、それぞれ違う音楽、違う画像を設定してあります。ここでも「しんさんわーくす」さんのものを利用させていただきました。

f:id:kun432:20190818003600p:plain

ちょっと線がすごいことになっていますが、少しピックアップして見てみましょう。

f:id:kun432:20190818003958p:plain

Stream Blockに、"next" と "previous"があるのがわかりますか?これがそれぞれ「次の曲」「前の曲」というAudioPlayerの標準機能に合わせた分岐となっています。1番目のStream Blockの次("next")は2番目、2番目の次は3番目、といった感じでつなげていきます。逆に"previous"の方は、2番目の前は1番目、1番目の前は4番目という感じですね。

実機で動かすとこんな感じになります。

「次の曲」「前の曲」で曲が変わっていますね。いい感じです。

あと、曲と曲の間で「サンプルサウンド1です」みたいなのが聞こえましたでしょうか?この部分はSpeak Blockで動かしています。つまり、曲の再生が始まるとスキルのセッションは一旦切れてAudioPlayerとしての動作しかできなくなりますが、曲が終わったタイミングでスキルにセッションが戻ってくるということですね(すいません、このあたりやや語弊がある言い方をしている自覚がありますので、あくまでもイメージです。不備等あればご指摘いただければと思います。)このあたりをうまく使えば、AudioPlayerの機能に限定されないスキルが作れそうな気がします。

まとめ

いかがでしたか?2回に渡って、音声・音楽データの再生をやってみました。まとめとしては、

  • スキルの会話フローの中に取り込む形ならSpeak Block
  • より音楽再生に特化するならStream Block

という感じかなと思います。環境音スキルはAlexaスキルの中でも非常に人気ですので、アイデアと音声データをお持ちであればぜひトライしてみて下さい。

あと、今回、無料素材をサンプルで使わせていただきましたが、素材を利用する際は、素材提供サイトや素材作成者等の利用規約等を必ずご確認の上でご利用いただくことをおすすめします。