メインコンテンツまでスキップ

音声フォーマット

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の両方のチャネルを音声認識したい場合は、チャネルごとに音声認識のリクエストを行ってください。

ヒント

圧縮率

人の耳でも聞き取りづらいような、強い圧縮をかけると認識精度に影響があります。以下の圧縮方式での圧縮率のガイドラインを示します。

圧縮方式ガイドライン
Speexquality 7 以上
Opus圧縮率 10 分の 1 程度

コンテナフォーマット

  • wav、ogg、mp3、flac形式に対応しています。

音声フォーマットの設定方法

ヘッダありの音声ファイルの場合

ヘッダ有りの音声ファイルを送信する場合、音声フォーマットは指定する必要はありません。

ヘッダなしの音声データの場合

PCMデータをそのまま送信する場合は、フォーマットを指定する必要があります。指定方法はインタフェースごとに異なっています。

インタフェース設定方法
同期・非同期 HTTPcパラメータ
WebSocketsコマンドの第一引数

設定する値はヘッダなしの音声フォーマットにある文字列を指定します。

リクエスト例

以下では、音声データにヘッダがある場合とない場合で、インタフェースごとのリクエストの例を示します。

同期 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 c=LSB16K \
-F a=@test-16k.pcm
ヘッダなしの音声データの場合

音声フォーマット情報を持たない音声データを送信する場合は、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コマンドで8K16K以外の音声フォーマットを指定しないでください。PCM形式の音声データを判断するための音声フォーマット文字列、例えば、LSB16Kなどを設定すると、その情報をもとに動作してしまいます。

注記

WebSocket インタフェースのsコマンドにはその他のパラメータも設定します。詳細は認識要求の開始や、リファレンスのsコマンド応答パケットを参照してください。

音声フォーマット対応表

注記

フォーマット名は、大文字小文字が区別されません。

ヘッダなしの音声フォーマット

音声データ形式フォーマット名
raw - PCM LittleEndian 16bit - 8kHz - monolsb8k
raw - PCM LittleEndian 16bit - 11kHz - monolsb11k
raw - PCM LittleEndian 16bit - 16kHz - monolsb16k
raw - PCM LittleEndian 16bit - 22kHz - monolsb22k
raw - PCM LittleEndian 16bit - 32kHz - monolsb32k
raw - PCM LittleEndian 16bit - 44.1kHz - monolsb44k
raw - PCM LittleEndian 16bit - 48kHz - monolsb48k
raw - PCM BigEndian 16bit - 8kHz - monomsb8k
raw - PCM BigEndian 16bit - 11kHz - monomsb11k
raw - PCM BigEndian 16bit - 16kHz - monomsb16k
raw - PCM BigEndian 16bit - 22kHz - monomsb22k
raw - PCM BigEndian 16bit - 32kHz - monomsb32k
raw - PCM BigEndian 16bit - 44.1kHz - monomsb44k
raw - PCM BigEndian 16bit - 48kHz - monomsb48k
raw - mu-Law 8bit - 8kHz - monomulaw
raw - A-Law 8bit - 8kHz - monoalaw

ヘッダありの音声フォーマット

音声データ形式フォーマット名
Wave 音声 (PCM) - LittleEndian 16bit - 8kHz/11kHz - mono/stereo8k
Wave 音声 (PCM) - LittleEndian 16bit - 16kHz 以上 - mono/stereo16k
Wave 音声 (mu-Law) - 8kHz - mono/stereo8k
Wave 音声 (A-Law) - 8kHz - mono/stereo8k
Speex 音声 (Ogg コンテナ) - 8kHz/11kHz - mono/stereo8k
Speex 音声 (Ogg コンテナ) - 16kHz 以上 - mono/stereo16k
Opus 音声 (Ogg コンテナ) - 8kHz/11kHz - mono/stereo8k
Opus 音声 (Ogg コンテナ) - 16kHz 以上 - mono/stereo16k
MP3 音声 - 8kHz/11kHz - mono/stereo8k
MP3 音声 - 16kHz 以上 - mono/stereo16k
FLAC 音声 - 8kHz/11kHz - mono/stereo8k
FLAC 音声 - 16kHz 以上 - mono/stereo16k