kun432's blog

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

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

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

Voiceflow夏休みAdvent Calendarの16日目です。1日ビハインドなので、キャッチアップしていきます!

今日は音声・音楽データ再生をやってみたいと思います。効果音的な使い方はもちろんですが、人気の環境音スキルなんかも、Voiceflowだととても簡単にできちゃいます!

Voicflowでの音声データ・音楽データの再生の方法は2つあります。

  1. Speak Blockを使う
  2. Stream Blockを使う

今回は、Speak Block編です。

Speak Block

Speak Blockでできるのは以下の3つです。ここは効果音的な使い方がメインになると思います。

  • 直接SSMLを書く
  • Add Audioで指定する

直接SSMLを書く

一番簡単なのはAlexa Skills Kitサウンドライブラリです。コピペするだけで使える効果音が2500個以上もあり、Alexaスキルからは無料で利用できます。

ブラウザで以下のURLにアクセスしてサウンドライブラリのページが開きます。 https://developer.amazon.com/ja/docs/custom-skills/ask-soundlibrary.html

f:id:kun432:20190817153322p:plain

使える効果音の一覧が表示されます。入力欄があるので、使いたい効果音のキーワードを入力して検索もできます。

f:id:kun432:20190817154104p:plain

使いたい効果音をクリックすると、メニューが表示されます。真ん中のHTMLタグっぽいのがSSMLです。▶をクリックすると、その場で再生もできます。"Copy to Clipboard" をクリックして、コピーします。

f:id:kun432:20190817154121p:plain

Voiceflowの画面で、Speak Blockのテキストボックスの中にペーストします。

f:id:kun432:20190817154504p:plain

はい、これだけですね。とてもかんたんです。SSMLであることすら意識しないぐらいですね。

もちろん、自分で用意した音声ファイルを使うようにSSMLで書くこともできます。先程のサウンドライブラリのSSMLで使用されていたaudioタグのsrcに自分で用意した音声ファイルのURLを指定すればOKです。

f:id:kun432:20190817160714p:plain

ただし、ファイルを自分で用意する場合にはいくつか注意があります。それは後ほど。

Add Audioで指定する

Add Audioを使うと、自分で用意した音声ファイルをVoiceflowにアップロードすることができます。

Speak Blockで"Add Audio"をクリックします。

f:id:kun432:20190817164724p:plain

音声ファイルをドラッグ&ドロップします。

f:id:kun432:20190817164816p:plain

アップロードされました。▶をクリックするとその場で再生されます。

f:id:kun432:20190817165022p:plain

とてもかんたんですね!

また、別の場所にある音声ファイルを指定することも可能です。Add Audioをクリックして、Add URLをクリック、音声ファイルのURLを指定します。

f:id:kun432:20190817165842p:plain

別の場所の音声ファイルをURLで指定する場合の注意

SSMLのaudioタグでのURL指定、Add AudioでのURL指定、どちらの場合も外部においたファイルをアレクサが参照することになりますので、所定の要件やフォーマットを満たす必要があります。

MP3ファイルのURLを指定します。次に挙げる要件と制限にご注意ください。

  • MP3は、インターネットからアクセス可能なHTTPSエンドポイントでホストされる必要があります。HTTPSであることが必須です。また、MP3ファイルをホストするドメインは、有効で、信頼できるSSL証明書を提示する必要があります。自己署名証明書は使用できません。
  • MP3には、ユーザーに固有な情報や、その他の機密情報が含まれていてはなりません。
  • MP3は、有効なMP3ファイル(MPEGバージョン2)である必要があります。
  • 音声ファイルは240秒以内でなければなりません。
  • ビットレートは48 kbpsでなければなりません。このビットレートは、話される内容と組み合わせて使用すると良好な結果が得られますが、音楽を再生するには一般に品質がやや不十分です。
  • サンプルレートは22050Hz、24000Hz、16000Hzのいずれかです。

必要に応じて、変換ソフトウェアを使用してMP3ファイルを必要なコーデックバージョン(MPEGバージョン2)とビットレート(48 kbps)に変換してください。

もしうまく再生できない場合などは上記をご確認ください。

なお、Add Audioでドラッグ&ドロップでファイルをアップロードした場合はVoiceflow側で最適なフォーマットに自動変換してくれますので、これを使うのが一番楽ちんです!(まれにアップロードがうまく行かない場合があります。)

多数の音声データを使う場合の注意

音声・音楽データを使うと、非常にかんたんに賑やかな感じが演出できるのでとてもおすすめなんですが、何も考えずにたくさん使うとこうなる場合があります。

f:id:kun432:20190817172825p:plain

開発者コンソールのスキルI/Oでエラーを見て見るとこんな感じ。

f:id:kun432:20190817172947p:plain

The SSML response exceeds the maximum number of 5 audio elements"

とあります。

また、別の場合には、スキルは起動するけど、途中で「スキルがリクエストに正しく応答できませんでした」になる場合もあります。

f:id:kun432:20190817173820p:plain

その場合のエラーはこんな感じ。

f:id:kun432:20190817173851p:plain

見えにくいのエラーメッセージを貼ります。

Invalid Audio Content for requestId amzn1.XXXXXXX Error: The total duration of audio content exceeds the maximum allowed duration of 240000 milliseconds

ここでもう一度、公式のリファレンスを見てみましょう。

サービスから送信する1回の応答に複数のaudioタグを含めることができますが、次の制限に従う必要があります。

  • 1回の応答の中で使用できる音声ファイルは5個までです。
  • 1回の応答に含めることのできるすべての音声ファイルの合計再生時間は240秒までです。

音声ファイルの使用には、数と時間の制限があるということですね。この「1回の応答」というのはどういうことでしょうか?猫の豆知識スキルのサンプルで説明します。

f:id:kun432:20190817174726p:plain

Alexaからの発話(音声や音楽含めて)が「1回の応答」になるということですね。これをVoiceflowに置き換えてみます。

f:id:kun432:20190817181352p:plain

Speak Blockの中で音声ファイルを使っていて、その後、Interaction Blockでユーザ発話を受け取る感じですね。Speak Blockが3つに別れていますが、Interaction Blockでユーザ側の発話になるまでは、Speak Blockを何個並べても、Alexaの発話としては1回の応答になるという点に注意してください。

なので、これもブロックの数は違うけど、中身的には同じになります。

f:id:kun432:20190817182018p:plain

Speak Blockの数がアレクサからの応答の数、ではないということ、と、1回の応答の中で使える音楽ファイルの数や再生時間の総合計には制限があるということをご理解いただければと思います。

Voiceflowでブロック並べていると、こういったところをあまり意識することはなく作れるので、それはそれで簡単なんですが、このやりとりの概念はとても重要です。他のブロックを使う場合もこの概念を理解していないと「なんで動かないの?」になることがあるかもしれません。そのあたりはまた別の機会で説明します。

まとめ

ということで、Voiceflowでの音声・音楽データの再生について、まずはSpeak Blockを使ったやり方について、ご紹介しました。注意点も書いてますが、そんなに気にせず、音楽をうまく使うだけで、スキルにかんたんに楽しい雰囲気を演出できるので、どんどん活用しましょう!

次回は、Stream Blockを使った音声・音楽データの再生についてご紹介します。Stream Blockを使うと、Alexaスキルで人気のカテゴリーである、環境音スキルがかんたんに作れますので、よければぜひ次回も御覧ください!