ちょっと話題の記事

[日本語Alexa] スマフォで録音した音声をEchoで再生するスキルを作ってみました。 〜家族の伝言板〜 

2018.02.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

1 はじめに

Alexaのスキルでは、SSMLのAudioタグを使用して音声ファイルを再生することができます。今回は、スマフォで録音した音声をスキルで再生することで家族で使用する伝言板(ほとんど留守番電話)を作成してみました。

外出先では、スマフォで伝言を入力します。自宅でスキルを起動すると、「溜まっている伝言が聞ける」という感じです。

下記は、スキルが動作している様子です。

家族の伝言板 〜スマフォで録音してEchoで再生する〜

2 構成

構成は、概ね以下のとおりです。

iPhoneで録音した音声ファイルは、S3で管理されています。iPhoneで利用されるAudioファイルは、通常.cafなのですが、iPhoneで.mp3を扱うのがちょっと手間なので、S3に保存するところまで.cafのまま行っています。

スキルが起動されると、S3上の.cafを一覧し、まだ、.mp3に変換されていないものがある場合、これを生成します。この時、作成する.mp3は、Audioタグで利用可能なように要件に合わせておきます。

ユーザーからのリクエストで.mp3を再生する場合は、Cloufront経由のURLをSSMLのAudioタグに挿入します。

3 mp3への変換

Lambdaによる.cafから.mp3への変換は、下記の手順です。

  • S3から.cafファイルを/tmpにダウンロード
  • ffmpegで.cafから.mp3を生成
  • mp3をS3にアップロード

使用したffmpegのコマンドは、次のとおりです。これにより、Audioタグに対応した、ビットレート48Kbps、サンプリング周波数16KHzの.mp3ファイルが生成できます。

./ffmpeg -y -i /tmp/xxx.caf -ac 2 -codec:a libmp3lame -b:a 48k -ar 16000 /tmp/xxx.mp3

またffmpegは、そのままでは、Lambdaの実行環境で利用できませんので、スタティックリンクされたffmpegをzipファイルの中に入れてます。

スタティクリンクされたffmpeg
x86_64 build: ffmpeg-release-64bit-static.tar.xz - md5

index.jsと同じディレクトリに配して、./ffmpeg で使用しています。

4 最後に

今回は、スマフォで録音したした音声ファイルをスキルで利用するサンプルを作成してみました。

この動画を見て、「スマフォで録音した音声をフラッシュブリーフィングで再生するサービスとかできるんじゃない?」などの意見(案)を社内で頂きました。

この構成は、まだまだ、応用範囲がありそうな予感がします。