ClovaスキルでMP3ファイルを再生してみよう #asciihack #linebootawards
こんにちは、代表のn0bisukeです。
#asciihack
にてClovaでMP3再生したいという話があったので試してみました。
ハッカソン中の走り書きです。ご了承ください。
デモを先にみたい人はページ下部へ!
Google Homeで有名な、みそ氏
のClova公式SDK(Node.js)の使い方まとめが参考になります。
Node.jsのSDKでのやり方です。ちなみにNode.jsのバージョンは10.8.0で試しています。
CEKの細かい仕様には触れません。
一旦スキルを作る
Clova CEKでのスキル開発の始め方〜Node.jsで開発スタート編〜などを読みつつClova CEKのSDKをインストールしつつ対話モデル作ったり、Clovaスキルの基本を作りましょう。
この記事のコードを見ると該当箇所が分かります。
起動時にMP3を再生
基本は以下のように、指定したサーバー上のMP3を再生できます。
responseHelper.setSimpleSpeech(
clova.SpeechBuilder.createSpeechUrl('https://exsample.com/myaudio.mp3')
);
.onLaunchRequest()
の中で実行すれば起動時にMP3を再生できます。
//起動時に喋る
.onLaunchRequest(responseHelper => {
responseHelper.setSimpleSpeech(
clova.SpeechBuilder.createSpeechUrl('https://exsample.com/myaudio.mp3')
);
})
このコードは前に書いたチュートリアルの一部を改変しているので、どこが該当箇所か確認してみて下さい。
呼びかけてMP3を再生
.onIntentRequest()
の中で実行すれば呼びかけに応じてMP3を再生できます。
//ユーザーからの発話が来たら反応する箇所
.onIntentRequest(async responseHelper => {
responseHelper.setSimpleSpeech(
clova.SpeechBuilder.createSpeechUrl('https://exsample.com/myaudio.mp3')
);
})
MP3を連続再生
responseHelper.setSimpleSpeech()
で1回再生できましたが、responseHelper.setSpeechList()
では配列を与えることで連続再生が出来ます。
(謎に)10回再生。
//省略
let SpeechList = [];
for (let index = 0; index < 10; index++) {
SpeechList.push(clova.SpeechBuilder.createSpeechUrl('https://exsample.com/myaudio.mp3'));
}
responseHelper.setSpeechList(SpeechList);
デモ
シオカラーズが応援してくれるサンプル。
- のびすけ: 応援スキルを起動して
- Clova: mp3再生
- のびすけ: もっと応援して
- Clova: mp3を10回再生
音源、権利的に大丈夫かな……ガクブル (怒られたら直そう)
まとめ
基本の形はclova.SpeechBuilder.createSpeechUrl('https://exsample.com/myaudio.mp3')
で再生出来ます。
1回再生はresponseHelper.setSimpleSpeech()
で、連続再生はresponseHelper.setSpeechList()
でclova.SpeechBuilder.createSpeechUrl()
を実行です。
細かい仕様が気になる人はドキュメントのこの辺をご参照ください!
ではでは、引き続きハッカソンがんばりましょ!