コールセンター等では、ほとんどがリニアPCMのWav音声ファイルとして保存されています。
これをμ-lawに変更したい場合等は、音声ファイルのフォーマットをチェックする必要があります。
まずは、WAVE (.WAV) ファイルのフォーマットを確認しましょう。通常は以下のような構造になっています。(チャンクやRIFF等がよく分からない人はこちらを先にどうぞ)
WAVファイルデータフォーマット例
項目 | サイズ (byte) | データ部 |
---|---|---|
チャンク識別子 | 4 | “RIFF”(0x52494646)で固定。 |
チャンク サイズ | 4 | ファイル全体サイズからRIFFとWAVEのバイト数(8Byte)を引いた数 |
フォーマット | 4 | WAVファイルの場合は“WAVE”(0x57415645)で固定。AVIファイルの場合は“AVI”が入る |
サブチャンク①識別子 | 4 | “fmt “(0x666D7420)で固定。 |
サブチャンク①サイズ | 4 | 16 + 拡張パラメータのサイズ。デフォルト値は16 |
音声フォーマット | 2 | 非圧縮のPCMフォーマットは1。A-lawは6、μ-lawは7。それ以外はこちらを参照。 |
チャンネル数 | 2 | モノラルは1、ステレオは2 |
サンプリング周波数 | 4 | 8kHzの場合は8000、44.1kHzの場合なら44100 |
1 秒あたりバイト数の平均 | 4 | サンプリング周波数 * ブロックサイズで求める |
ブロックサイズ | 2 | チャンネル数 * 1サンプルあたりのビット数 / 8で求める。ステレオ16bitなら16bit*2 = 32bit = 4byte |
ビット/サンプル | 2 | 1サンプルに必要なビット数。8ビットの場合は8、16ビットの場合は16など。 |
拡張パラメータのサイズ | (2) | リニア PCM (音声フォーマットが1) の場合は未使用。 |
拡張パラメータ | (*) | リニア PCM (音声フォーマットが1) の場合は未使用。 |
サブチャンク② 識別子 | 4 | “data” (0x64617461)で固定。 |
サブチャンク② サイズ | 4 | 波形データのバイト数(総ファイルサイズ – 126) |
データ | * | 波形データを格納。リニアPCMの場合は時間順に格納される。ステレオは左→右→左→右…のように格納される。8ビットの場合は符号無し整数 (0 – 255)、16ビットの場合は符号付き整数 (-32768 – 32767) で表わす。 |
リニアPCM/μ-law/A-law 等の判別方法は簡単です。上記項目にある音声ファイルフォーマットのチェックを行うだけです。
- 音声フォーマット=0x0001 ⇒ リニアPCM
- 音声フォーマット=0x0006 ⇒ A-law
- 音声フォーマット=0x0007 ⇒ μ-law
弊社では、C言語と.NETで書かれたサンプルソースがありますが、判別するぐらいでしたらそんなの難しくありません。ですので皆さんも少し頑張ってチェックしてみましょう。その他の代表的な音声ファイルフォーマットを以下にまとめておきます。
音声フォーマット | 判別内容 |
---|---|
Unknown | 0x0000 |
PCM(Pulse Code Modulation) | 0x0001 |
MS ADPCM | 0x0002 |
IBM CSVD | 0x0005 |
G.711 A-Law(ITU-T G.711) | 0x0006 |
G.711 μ-Law(ITU-T G.711) | 0x0007 |
OKI ADPCM | 0x0010 |
IMA-ADPCM(DVI-ADPCM) | 0x0011 |
MediaSpace ADPCM | 0x0012 |
Sierra ADPCM | 0x0013 |
ADPCM (ITU-T G.723) | 0x0014 |
DIGISTD | 0x0015 |
DIGIFIX | 0x0016 |
YAMAHA | ADPCM 0x0020 |
SONARC | 0x0021 |
TrueSpeech | 0x0022 |
Echo Speech1 | 0x0023 |
AF36(AudioFile) | 0x0024 |
Apix | 0x0025 |
AF10(AudioFile) | 0x0026 |
AC2(Dolby) | 0x0030 |
GSM 6.10 | 0x0031 |
ANTEX ADPCM | 0x0033 |
VQLPC(Control Resources) | 0x0034 |
DIGIREAL | 0x0035 |
DIGIADPCM | 0x0036 |
CR10(Control Resources) | 0x0037 |
ADPCM(G.721) | 0x0040 |
IBM μ-Law | 0x0101 |
IBM A-Law | 0x0102 |
IBM ADPCM | 0x0103 |
Creative Labs ADPCM | 0x0200 |
FM TOWNS | 0x0300 |
Olivetti GSM | 0x1000 |
Olivetti ADPCM | 0x1001 |
Olivetti CELP | 0x1002 |
Olivetti SBC | 0x1003 |
Olivetti OPR | 0x1004 |