音声フォーマット
AmiVoice API で取り扱う音声データのフォーマットについて説明します。
対応している音声
AmiVoice API には以下のフォーマットの音声データを送信してください。
ビットレート
対応しているのは、16bit です。a-law、mu-lawの場合は、8bit です。
サンプリングレート
AmiVoice API で音声認識処理を行うエンジンは、8kHzと16kHzのサンプリングレートに対応した2種類のエンジンがあります。8kHzエンジンは主に電話で使われる音声、16kHzはそれ以外で広く使われている音声のために用意しています。すべてのエンジンが8kHz音声に対応していませんので対応するエンジンかどうかは音声認識エンジンの一覧を参照してください。
AmiVoice APIには、8kHz、16kHzに限らず、さまざまなサンプリングレート、8kHz、11.05kHz、16kHz、22.1kHz、32kHz、44.1kHz、48kHzの音声データを送信することができます。ただし、それらの音声データは、11kHzの音声データは8kHzに、16kHzよりも高い周波数でサンプリングした音声は16kHzにダウンサンプリングしてから、対応する音声認識エンジンで処理されます。
歌や楽器の演奏などとは異なり、一般に音声認識には16kHzよりも高い周波数帯域の情報は必要ありません。ネットワークの帯域を節約したり、送信にかかる時間を減らすためにも適切なサンプリングレートで音声データを送信することをお勧めします。
AmiVoice TechBlogの『音声認識に必要なサンプリングレートはどのくらいか?』も参考にしてください。
音声認識のリクエスト時にサンプリングレートを設定する必要があります。詳細は音声フォーマットの設定方法のセクションで説明します。
チャネル数
ステレオ音声など一つのファイルに複数チャネルの音声データを含んでいる場合、1 チャンネル目のみが音声認識の対象となります。例えば、ステレオ音声のLとRの両方のチャネルを音声認識したい場合は、チャネルごとに音声認識のリクエストを行ってください。
AmiVoice TechBlogの『ステレオ音声ファイルをモノラル音声ファイル×2に変換するやり方』も参考にしてください。
圧縮率
人の耳でも聞き取りづらいような、強い圧縮をかけると認識精度に影響があります。以下の圧縮方式での圧縮率のガイドラインを示します。
圧縮方式 | ガイドライン |
---|---|
Speex | quality 7 以上 |
Opus | 圧縮率 10 分の 1 程度 |
コンテナフォーマット
- wav、ogg、mp3、flac形式に対応しています。
音声フォーマットの設定方法
ヘッダありの音声ファイルの場合
ヘッダ有りの音声ファイルを送信する場合、音声フォーマットは指定する必要はありません。
ヘッダなしの音声データの場合
PCMデータをそのまま送信する場合は、フォーマットを指定する必要があります。指定方法はインタフェースごとに異なっています。
インタフェース | 設定方法 |
---|---|
同期・非同期 HTTP | c パラメータ |
WebSocket | s コマンドの第一引数 |
設定する値はヘッダなしの音声フォーマットにある文字列を指定します。
リクエスト例
以下では、音声データにヘッダがある場合とない場合で、インタフェースごとのリクエストの例を示します。
同期 HTTP インタフェースの場合
ヘッダありのwavファイルの場合
wavファイルには音声フォーマットの情報がありますので、音声データを送信するだけです。
curl -X POST https://acp-api.amivoice.com/v1/recognize \
-F u={APP_KEY} \
-F d=grammarFileNames=-a-general \
-F a=@test-16k.wav
ヘッダなしの音声データの場合
音声フォーマット情報を持たない音声データを送信する場合は、c
パラメータに音声フォーマットを指定する必要があります。ヘッダなしの音声フォーマットにある文字列を指定します。ここでは、「raw - PCM LittleEndian 16bit - 16kHz - mono」を指定しています。
curl -X POST https://acp-api.amivoice.com/v1/recognize \
-F u={APP_KEY} \
-F d=grammarFileNames=-a-general \
-F c=LSB16K \
-F a=@test-16k.pcm
非同期 HTTP インタフェースの場合
同期 HTTP インタフェースとエンドポイント以外は同じです。
ヘッダありのwavファイルの場合
wavファイルには音声フォーマットの情報がありますので、音声データを送信するだけです。
curl -X POST https://acp-api-async.amivoice.com/v1/recognitions \
-F u={APP_KEY} \
-F d=grammarFileNames=-a-general \
-F a=@test-16k.wav
ヘッダなしの音声データの場合
音声フォーマット情報を持たない音声データを送信する場合は、c
パラメータに音声フォーマットを指定する必要があります。ヘッダなしの音声フォーマットにある文字列を指定します。ここでは、「raw - PCM LittleEndian 16bit - 16kHz - mono」を指定しています。
curl -X POST https://acp-api-async.amivoice.com/v1/recognitions \
-F u={APP_KEY} \
-F d=grammarFileNames=-a-general \
-F c=LSB16K \
-F a=@test-16k.pcm
同期・非同期 HTTP インタフェースで、ヘッダありの音声データを送信するとき、c
パラメータを設定しても無視されます。音声ファイルのヘッダのフォーマットと、c
パラメータの音声フォーマットが異なっていた場合、音声認識サーバではヘッダの情報を優先します。
WebSocket インタフェースの場合
ヘッダありのwavファイルの場合
16kHzエンジンを利用する場合、以下のようにs
コマンドの1番目のパラメータに設定します。
s 16K -a-general
8kHzにも対応しているエンジンを利用する場合、以下のようにします。
s 8K -a-general
ヘッダなしの音声データの場合
音声フォーマット情報を持たない音声データを送信する場合は、c
パラメータに音声フォーマットを指定する必要があります。ヘッダなしの音声フォーマットにある文字列を指定します。ここでは、「raw - PCM LittleEndian 16bit - 16kHz - mono」を指定しています。
s LSB16K -a-general
WebSocket インタフェースで、ヘッダありの音声データを送信するとき、s
コマンドで8K
か16K
以外の音声フォーマットを指定しないでください。PCM形式の音声データを判断するための音声フォーマット文字列、例えば、LSB16K
などを設定すると、その情報をもとに動作してしまいます。
WebSocket インタフェースのs
コマンドにはその他のパラメータも設定します。詳細は認識要求の開始や、リファレンスのsコマンド応答パケットを参照してください。
音声フォーマット対応表
フォーマット名は、大文字小文字が区別されません。
ヘッダなしの音声フォーマット
音声データ形式 | フォーマット名 |
---|---|
raw - PCM LittleEndian 16bit - 8kHz - mono | lsb8k |
raw - PCM LittleEndian 16bit - 11kHz - mono | lsb11k |
raw - PCM LittleEndian 16bit - 16kHz - mono | lsb16k |
raw - PCM LittleEndian 16bit - 22kHz - mono | lsb22k |
raw - PCM LittleEndian 16bit - 32kHz - mono | lsb32k |
raw - PCM LittleEndian 16bit - 44.1kHz - mono | lsb44k |
raw - PCM LittleEndian 16bit - 48kHz - mono | lsb48k |
raw - PCM BigEndian 16bit - 8kHz - mono | msb8k |
raw - PCM BigEndian 16bit - 11kHz - mono | msb11k |
raw - PCM BigEndian 16bit - 16kHz - mono | msb16k |
raw - PCM BigEndian 16bit - 22kHz - mono | msb22k |
raw - PCM BigEndian 16bit - 32kHz - mono | msb32k |
raw - PCM BigEndian 16bit - 44.1kHz - mono | msb44k |
raw - PCM BigEndian 16bit - 48kHz - mono | msb48k |
raw - mu-Law 8bit - 8kHz - mono | mulaw |
raw - A-Law 8bit - 8kHz - mono | alaw |
ヘッダありの音声フォーマット
音声データ形式 | フォーマット名 |
---|---|
Wave 音声 (PCM) - LittleEndian 16bit - 8kHz/11kHz - mono/stereo | 8k |
Wave 音声 (PCM) - LittleEndian 16bit - 16kHz 以上 - mono/stereo | 16k |
Wave 音声 (mu-Law) - 8kHz - mono/stereo | 8k |
Wave 音声 (A-Law) - 8kHz - mono/stereo | 8k |
Speex 音声 (Ogg コンテナ) - 8kHz/11kHz - mono/stereo | 8k |
Speex 音声 (Ogg コンテナ) - 16kHz 以上 - mono/stereo | 16k |
Opus 音声 (Ogg コンテナ) - 8kHz/11kHz - mono/stereo | 8k |
Opus 音声 (Ogg コンテナ) - 16kHz 以上 - mono/stereo | 16k |
MP3 音声 - 8kHz/11kHz - mono/stereo | 8k |
MP3 音声 - 16kHz 以上 - mono/stereo | 16k |
FLAC 音声 - 8kHz/11kHz - mono/stereo | 8k |
FLAC 音声 - 16kHz 以上 - mono/stereo | 16k |