[Amazon Connect] 「音声プロンプト」で使用できる音声ファイルの仕様と注意点 – Amazon Connect アドベントカレンダー 2022

「あれ?メッセージを設定したのに流れないぞ・・・」「何だか音声にノイズが乗って聴き辛い・・・」こんなことが無いように、音声ファイルの仕様を押さえておきましょう。
2022.12.05

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

みなさん、こんにちは!
福岡オフィスの青柳です。

この記事は「Amazon Connect アドベントカレンダー 2022」の5日目の記事となります。

Amazon Connectアドベントカレンダー2022は、弊社クラスメソッド株式会社株式会社ギークフィードさんの有志が集い「もっとAmazon Connectを盛り上げよう!」とチャレンジしている企画です。
Amazon Connectの支援サービスを行なっている2社が、初心者向けから技術寄りのところまで幅広い内容の記事を執筆していきます。

「プロンプトの再生」で指定できるプロンプトの種類

Amazon Connectのコンタクトフローにおいて、「プロンプトの再生」や「顧客の入力を取得する」「顧客の入力を保存する」の各ブロックでは以下の2種類の方法で「音声プロンプト」を再生することができます。

  • 指定したテキストを音声合成で読み上げる
  • 予め用意した音声ファイルを再生する

「指定したテキストを音声合成で読み上げる」方法は、読み上げるテキストの内容を変更するとすぐに反映されるため、柔軟性・敏捷性の面で有利です。

一方、「予め用意した音声ファイルを再生する」方法は、柔軟性や敏捷性の面ではテキスト読み上げに劣るものの、プロの声優やナレーターが吹き込んだ自然な音声が使えたり、呼び出し中や保留中のBGMなどの音楽も収録できるというメリットがあります。

今回は、後者の「予め用意した音声ファイルを再生する」場合に使用する「音声ファイル」の仕様や注意点について紹介します。

「音声プロンプト」で使用できる音声ファイルの仕様

Amazon Connectでサポートされる音声ファイルの仕様については、AWS公式ドキュメントに記載されています。

フローブロック: プロンプトの再生 - Amazon Connect

ただ、一部分かり辛い点もありますので、以下に整理してみました。
(この中には、ドキュメントで明示されていなかったため私が検証して確認した内容も含まれています)

項目 サポートされる仕様
ファイル形式 WAV形式 (RIFF waveform Audio Format)
コーデック μ-law形式 (詳細は後述)
サンプリング周波数 8kHz
量子化ビット数 8bit
チャンネル数 1ch (モノラル)
音声の長さ 5分未満
ファイルサイズ 50MB未満

これらの項目の中で皆さんが「?」と思われるものがあるとすれば、コーデックの「μ-law」ではないでしょうか。

通常「WAV」形式の音声ファイルは、コーデックとして「PCM」が使われることが多いと思います。
PCやボイスレコーダーで音声を録音する場合、「MP3」等ではなく「WAV」形式を選ぶと、コーデックは「PCM」になっている場合がほとんどだと思います。

一方「μ-law」は、電気通信に関する国際機関であるITU-T (旧CCITT) によって策定された音声符号化の規格である「G.711」で規定された方式の一つであり、北米と日本において固定電話の音声伝達で使われているコーデックです。

Amazon Connectはコールセンター・コンタクトセンターをクラウドで提供するサービスですが、最終的には顧客の電話回線を通して音声を伝達する必要があります。
そのため、国際規格で定められた電話回線に関する規格が採用されているのですね。

音声ファイルを実際に用意する際の注意点

「プロンプトの再生」等のブロックで音声プロンプトを指定する際、予め用意した音声ファイルを指定するには2通りの方法があります。

  • Amazon Connectコンソールの「プロンプトの管理」画面から登録した音声プロンプトを再生する
  • S3バケットに配置した音声ファイルをプロンプトとして再生する

それぞれの方法によって、音声ファイルを用意・登録する際に注意すべき点が異なります。

Amazon Connectコンソールの「プロンプトの管理」画面から登録する場合

「プロンプトの再生」ブロックで「プロンプトライブラリ (音声) から選択」を指定する場合、予め「プロンプトの管理」画面から音声ファイルをアップロードしておく必要があります。

この時の音声ファイルに求められる仕様ですが、実は、前の節で説明した「Amazon Connectでサポートされる音声ファイルの仕様」に厳密に準拠していなくても登録することができるのです。

項目 登録可能な音声ファイル仕様 推奨する音声ファイル仕様
ファイル形式 「WAV形式」の必要あり WAV形式
コーデック 「μ-law形式」「PCM形式」いずれも可 μ-law形式
サンプリング周波数 任意の周波数でよい (※最大48kHzまで) 8kHz
量子化ビット数 任意の周波数でよい (※最大16bitまで) 8bit
チャンネル数 「1ch (モノラル)」「2ch (ステレオ)」いずれも可 1ch (モノラル)
音声の長さ (5分以上の音声ファイルでも登録できてしまう) 5分未満
ファイルサイズ 「50MB未満」である必要あり 50MB未満

例えば、PC等で「CD音質」を指定して録音を行った場合、出力される音声ファイルは「PCM形式/44.1kHz/16bit/2ch」といったフォーマットになっていると思います。
このような音声ファイルでも、「プロンプトの管理」画面へアップロードして登録することが可能です。

(音声の長さについては、私が試した限りでは、5分以上の音声ファイルであっても登録することができてしまいました。ただし、公式ドキュメントの通り「5分未満」にしておくのが無難と思われます)

仕様に準拠しない音声ファイルを登録する場合の注意点

「Amazon Connectでサポートされる音声ファイルの仕様」に準拠しないフォーマットの音声ファイルを登録した場合、Amazon Connectの内部で仕様に準拠したフォーマットに変換して保存されます。

(「プロンプトの管理」画面で、登録した音声プロンプトを「ダウンロード」すると、音声ファイルのフォーマットが「μ-law形式/8kHz/8bit/1ch」になっていることが確認できます)

AWS側で自動的に変換してくれるので楽なのですが、場合によっては変換された音声ファイルに「ノイズが乗る」「音が歪む」等の現象が起きることがあります。
自動で処理しているものなので、音質のクォリティをベストな状態にするという点では限界があるのでしょう。

ですので、可能であれば事前に「Amazon Connectでサポートされる音声ファイルの仕様」に準拠したフォーマットに変換しておいてから、登録することをお勧めします。

(「μ-law形式」への変換やサンプリング周波数・量子化ビット数を変える方法については、本記事の最後で紹介します)

S3バケットに配置した音声ファイルをプロンプトとして再生する場合

音声ファイルをS3バケットに配置する場合は、厳密に「Amazon Connectでサポートされる音声ファイルの仕様」に準拠した音声ファイルを用意する必要があります。

項目 再生可能な音声ファイル仕様 推奨する音声ファイル仕様
ファイル形式 「WAV形式」の必要あり WAV形式
コーデック 「μ-law形式」の必要あり μ-law形式
サンプリング周波数 「8kHz」の必要あり 8kHz
量子化ビット数 「8bit」の必要あり 8bit
チャンネル数 「1ch (モノラル)」の必要あり 1ch (モノラル)
音声の長さ (5分以上の音声ファイルでも再生できてしまう) 5分未満
ファイルサイズ (※未検証) 50MB未満

※ ファイルサイズについては、「8kHz」という低いサンプリング周波数で「50MB」という大きな音声ファイルを用意するのが難しかったため、検証できませんでした。現実的にはそのような大きな音声ファイルを使用することは無いと思いますので、問題ないと思います。

仕様に準拠しない音声ファイルを再生しようとした場合、コンタクトフロー上では「音声プロンプトが再生されるべきところで何も音が流れない」という状態になるため、不具合の発生に気付き難いという点が問題になります。

コンタクトフローログの出力を設定していれば、以下のようなログが記録されます。

{
    "ContactId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "ContactFlowId": "arn:aws:connect:ap-northeast-1:123456789012:instance/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/contact-flow/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "ContactFlowName": "play-prompt-from-s3-example",
    "ContactFlowModuleType": "PlayPrompt",
    "Timestamp": "2022-12-03T12:34:56.000Z",
    "Parameters": {
        "PromptLocation": "s3://connect-example/uketsuke.wav",
        "PromptSource": "S3"
    }
}
{
    "Results": "Failed To Play Prompt.",
    "ContactId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "ContactFlowId": "arn:aws:connect:ap-northeast-1:123456789012:instance/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/contact-flow/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "ContactFlowName": "play-prompt-from-s3-example",
    "ContactFlowModuleType": "PlayPrompt",
    "Timestamp": "2022-12-03T12:34:56.000Z"
}

(「Results」の値が「Failed To Play Prompt」ではなく「Error」となっている場合もあります)

ただ、ログを確認しても失敗・エラーとなった理由が書かれていないため、原因の切り分けに時間がかかる可能性があります。

音声ファイルをS3バケットに配置する方式を採用する場合は、このような点も予め考慮しておいた方がよいでしょう。

音声ファイルをS3バケットに配置する場合、S3バケットの「バケットポリシー」を設定しておく必要があるので注意してください。

詳細はAWS公式ドキュメントを参照してください。
S3 バケットから再生するプロンプトを設定する - Amazon Connect

(プロンプト再生が行えない場合、コンタクトフローログを見ても「音声ファイルのフォーマットの問題」か「アクセス権限の問題」か判断できないので注意しましょう)

音声ファイルのフォーマットを確認・変換する方法

Amazon Connectで使用できる音声ファイルのフォーマットを確認したり変換したりする方法について、AWSでは特定のアプリケーション・ツールの案内は行っていません。

一般的な音声処理アプリケーション・ツールを使用することができます。

ここでは、著名な動画・音声処理のツールである「FFmpeg」を使った方法をご紹介します。

音声ファイルのフォーマットを確認する

FFmpegに含まれるffprobeコマンドを使用します。

ffprobe -i <音声ファイル>

例えば、「PCM形式/44.1kHz/16bit/2ch」フォーマットの音声ファイルを確認した結果は、以下のようになります。

$ ffprobe -i uketsuke_pcm.wav

Input #0, wav, from 'uketsuke_pcm.wav':
  Metadata:
    encoder         : Lavf59.34.101
  Duration: 00:00:05.80, bitrate: 1411 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s

量子化ビット数については「コーデックの仕様の一部」という形で表示され、この場合はpcm_s16leが「符号付き16ビット、リトルエンディアンのPCM形式」を示しています。

「μ-law形式/8kHz/8bit/1ch」フォーマットの音声ファイルの場合は以下のようになります。

$ ffprobe -i uketsuke_mulaw.wav

Input #0, wav, from 'uketsuke_mulaw.wav':
  Metadata:
    encoder         : Lavf57.83.100
  Duration: 00:00:05.80, bitrate: 64 kb/s
    Stream #0:0: Audio: pcm_mulaw ([7][0][0][0] / 0x0007), 8000 Hz, 1 channels, s16, 64 kb/s

「μ-law」コーデックの仕様として「量子化ビット数は8bit」と決まっているため、個別の量子化ビット数の表示はされていません。

FFmpeg以外にも、Windows向けのフリーウェアである「真空波動研」などを使うことで、音声ファイルのフォーマットを確認することができます。

ファイルのドラッグ&ドロップで確認をすることができるため、Windowsユーザーであれば便利に使えるのではないかと思います。

音声ファイルのフォーマットを変換する

ffmpegコマンドを使用します。

ffmpeg -i <入力ファイル> -f <フォーマット> -acodec <コーデック> -ar <サンプリング周波数> -ac <チャンネル数> <出力ファイル>

※ 前の項で説明した通り、FFmpegでは量子化ビット数を「コーデックの仕様の一部」として扱うため、個別に量子化ビットを指定するパラメーターはありません。

「μ-law形式/8kHz/8bit/1ch」フォーマットへ変換する場合は、以下のようなコマンドラインになります。

ffmpeg -i uketsuke_pcm.wav -f wav -acodec pcm_mulaw -ar 8000 -ac 1 uketsuke_mulaw.wav

GUIベースで使える音声ファイル変換ツールで「μ-law」形式に対応したものを探してみたのですが、ちょっと見つけることができませんでした。

FFmpegをGUIから使えるようにするフロントエンドソフトウェアも存在するようですので、興味のある方は試してみるのも良いのではないでしょうか。

おわりに

今回は、Amazon Connectの音声プロンプトに関して、意外とハマり易い「音声ファイルの仕様」について解説しました。

それでは、明日の「Amazon Connect アドベントカレンダー 2022」の記事にも期待してください!