Amazonで購入したecho dot

スキルを自作して、アレクサに話しかけるだけで手持ちの音源(mp3)を流せるようになりました!
例えば我が家では「アレクサ、おはよう」と話しかけるとiPhoneで録画したアンパンマンの声で「おはよう」と答えてくれます。
応用すれば、
- 推しのボイスを流す
- 子どもが好きなキャラクターの声を流す
なんて使い方ができますね
ソフトも不要で簡単に設定できるので、ぜひ挑戦してみてください。

頑張れば、PCを使わずに外付けキーボードとマウスを使ってiPadだけでできます
この記事では、
- iPhone/iPadで録画した音声をmp3に変換し
- Alexaスキルに組み込む
方法を紹介します。
では、手順を紹介します。
準備:音声をAlexa対応フォーマットに変換する
この記事で流せる音源は以下の制約があります。
- MP3ファイル(MPEGバージョン2)
- 240秒以内
- ビットレートは48 kbps
- サンプルレートは22050Hz、24000Hz、16000Hzのいずれか
FFmpegソフトで変換する方法が主流のようですが、とても便利なツールを公開されているサイトがあったので今回はそちらで音源をAlexa用に変換します。
音源を用意する
まず、流したい音声をiPhoneで録画(録音)します。
iPhoneの「ビデオ」で撮影するか画面録画を使ってください。
Alexa対応フォーマットのmp3に変換する
保存したムービーから音源を取り出し、Alexaに対応した形式のmp3ファイルに変換します。
こちらのサイトのツールを使わせていただきました。

3 最近はAlexaのスキル開発をしているのですが、効果音として使用する音源をいちいちffmpeg使ってフォーマット変換して、Audacityで音量調整してってやるのがだる過ぎるため...
ツールの使い方
「ファイルを選択」→「写真ライブラリ」からムービーを選びます。


アップロード、変換が完了すると画面が切り替わります。
真ん中下の「共有」ボタンをタップします。

「ファイルに保存」をタップし、わかりやすいフォルダに保存します。


「FullSizeRender」というファイル名で保存されています。

ファイルを長押しし、「名称変更」で好きな名前に変更します。

(日本語は使わず、アルファベットまたは数字名にしてください)
これで音源の準備は完了です。
音源ができたら、Alexaのスキルを作っていきます。
開発者アカウントを作成
Alexaのスキルを作るために、開発者アカウントを作成します。
Amazonのアカウントを持っていれば、ここからログインするだけで開発者アカウントも簡単に作れます。

画面に従って登録を進めます。

登録が済んだらこの画面に変わります。

これで登録は完了です。
新しくAlexaスキルを作る
Alexa Skills Kitをクリックし、「スキルの作成」をクリックします。



- スキル名:おはよう
- スキルに追加するモデル:カスタム
- スキルのバックエンドリソースをホスティングする方法を選択:Alexa-hosted(Node.js)
を選択し、「スキルを作成」をクリックします。
「スキルに追加するテンプレートを選択」では「スクラッチで作成」を選び、「テンプレートで続ける」をクリックします。

これで、新しいスキルが作られました。
音源をアップロードする
音源をアップロードします。
上部ツールバーの「コードエディタ」をクリックし、「S3 Storage」をクリックします。

すると、別のタブで「S3 storage」の管理画面が開きます。
「アップロード」をクリックします。

この画面で「ファイルを追加」をクリックし、ファイルを選択します。
iPhone/iPadからアクセスしているなら「ファイルを選択」をタップします。

この記事の最初で用意した音源ファイルを選択します。

ファイル名を確認し、「アップロード」をクリックします。

この画面が表示されたらアップロード完了です

Alexaスキルのコードを編集する
再度このタブに戻ります。
コードを2箇所編集します。

7行目に
const Util = require('./util.js');
を追記します。
12〜17行目を
async handle(handlerInput){
const audioUrl = Util.getS3PreSignedUrl("Media/ohayo.mp3").replace(/&/g,'&');
return handlerInput.responseBuilder
.speak(`<audio src="${audioUrl}"/>`)
.getResponse();
}
に書き換えます。
右上の「保存」をクリックし、続いて「デプロイ」をクリックします。

これでコードの書き換えは終了です。
echoでスキルを使えるようにする
これでスキルが完成しました。echoに呼びかけて再生できるように設定します。
「テスト」タブをクリックし、ステータスを「開発中」にします。

これで完了です!
このまま「テスト」画面でテストしても音声が流れない時があります。
アプリかecho本体でテストしてみてください。
無事に録音した音が流れました!
呼び出し名を変えたり柔軟性をもたすには
今回は「おはよう」と言って応答するスキルを作りました。
「おやすみ」や「○○、励まして」のような呼びかけに反応してもらうには、スキル名を変えるのではなく「ビルド」から変更します。
スキルを呼び出す時の名前を変えるには
「ビルド」画面で変更する名前を入力し、「保存」、「ビルド」をクリックして変更します。

呼びかけの言葉に柔軟性をもたせるには
「おはよう」意外にも「おはようってば」や「朝の挨拶して」と言った他の呼びかけにも答えてもらうには、
「テスト」画面で応えてほしい言葉を入力し「+」ボタンを押します。

まとめ
Alexaのスキルを自作することで、echoに話しかけると自分で録音した音源を再生してくれるようになりました♪
1つのスキルで1種類の音声を流してくれるという単純なものですが、色々な使い方ができそうで楽しみです。
著作物から録音した音源を作ってスキルを作成し公開すると、著作権侵害になる恐れがあります。
あくまで「開発中」のまま個人利用の範囲でお楽しみください。

参考
以下の記事を参考にさせていただきました。

3 最近はAlexaのスキル開発をしているのですが、効果音として使用する音源をいちいちffmpeg使ってフォーマット変換して、Audacityで音量調整してってやるのがだる過ぎるため...
ありがとうございます。