Waveform Audio File Format ( WAVEまたはファイル名拡張子からWAVとも呼ばれる。[ 3 ] [ 6 ] [ 7 ] / w æ v /または/ w eɪ v / [ 8 ]と発音される) は、パーソナルコンピュータにオーディオビット ストリームを保存するためのオーディオ ファイル フォーマットの標準です。このフォーマットは、1991 年にIBMとMicrosoftによって初めて開発および公開されました。これは、Microsoft Windowsシステムで非圧縮オーディオに使用される主要なフォーマットです。通常のビット ストリーム エンコーディングは、線形パルス符号変調(LPCM) フォーマットです。
WAVは、データをチャンク単位で保存するためのリソース交換ファイルフォーマット(RIFF)ビットストリームフォーマット方式の応用であり、Amigaコンピュータで使用されている8SVXやMacintoshコンピュータで使用されているオーディオ交換ファイルフォーマット(AIFF)フォーマットと類似している。

WAVファイルは、 IBMとMicrosoftによって定義されたリソース交換ファイルフォーマット(RIFF)のインスタンスです。[ 3 ] RIFFフォーマットは、さまざまなオーディオコーディングフォーマットのラッパーとして機能します。
WAV ファイルには圧縮されたオーディオが含まれることもありますが、最も一般的な WAV オーディオ形式は、線形パルス符号変調(LPCM) 形式の非圧縮オーディオです。LPCM は、オーディオ CDの標準オーディオ コーディング 形式でもあり、 44.1 kHzでサンプリングされ、サンプルあたり 16ビットの2 チャンネル LPCM オーディオを格納します。LPCM は非圧縮で、オーディオ トラックのすべてのサンプルを保持するため、プロのユーザーやオーディオの専門家は、最高のオーディオ品質を得るために LPCM オーディオで WAV 形式を使用することがあります。[ 9 ] WAV ファイルは、比較的簡単に編集および操作することもできます。
Microsoft Windowsでは、WAV形式はオーディオ圧縮マネージャー(ACM)を使用した圧縮オーディオをサポートしています。WAVファイルの圧縮には、どのACMコーデックでも使用できます。ACMのユーザーインターフェース(UI)には、Windowsの一部のバージョンに搭載されているサウンドレコーダーなど、ACMを使用するさまざまなプログラムからアクセスできます。
Windows 2000以降、スピーカーの位置とともに複数のオーディオチャンネルデータWAVE_FORMAT_EXTENSIBLEを指定するヘッダーが定義され、標準WAVフォーマットのサンプルタイプとコンテナサイズに関する曖昧さが解消され、フォーマットへのカスタム拡張機能の定義がサポートされるようになりました。[ 4 ] [ 5 ] [ 10 ]
RIFF ファイルはタグ付きファイル形式です。特定のコンテナ形式 (チャンク) を持ち、ヘッダーには 4 文字のタグ ( FourCC ) とチャンクのサイズ (バイト数) が含まれます。タグは、チャンク内のデータがどのように解釈されるかを指定し、いくつかの標準 FourCC タグがあります。すべて大文字で構成されるタグは予約タグです。RIFF ファイルの最も外側のチャンクにはタグがあります。RIFFチャンク データの最初の 4 バイトは、形式タイプを指定する追加の FourCC タグで、その後にサブチャンクのシーケンスが続きます。WAV ファイルの場合、追加のタグは ですWAVE。RIFF データの残りの部分は、オーディオ情報を記述するチャンクのシーケンスです。
タグ付きファイル形式の利点は、後方互換性を維持しながら後から形式を拡張できることです。[ 11 ] RIFF (または WAV) リーダーのルールは、認識できないタグ付きチャンクを無視することです。[ 12 ]リーダーは新しい情報を使用することはできませんが、混乱することはありません。
RIFF ファイルの仕様には、INFOチャンクの定義が含まれています。チャンクには、作品のタイトル、作者、作成日、著作権情報などの情報が含まれる場合があります。チャンクはINFOバージョン 1.0 で RIFF 用に定義されましたが、WAV ファイルの正式な仕様では参照されていませんでした。多くの読者がこれを処理するのに苦労しました。したがって、交換の観点から最も安全な方法は、INFOチャンクやその他の拡張機能を省略して、最小公倍数ファイルを送信することでした。INFOチャンクの配置に関するその他の問題もあります。
RIFF ファイルは国際的な環境で使用されることが想定されていたため、RIFF ファイル内の文字列のCSET国コード、言語、方言、コード ページを指定するチャンクがあります。 [ 13 ]例えば、適切なCSETチャンクを指定すると、チャンク内の文字列INFO(および RIFF ファイル全体の他のチャンク) がキリル文字または日本語文字として解釈されるようになります。
RIFF では、JUNK内容が処理されないフィラー チャンクも定義されています。[ 14 ] このチャンクを使用すると、FourCC を変更するだけでチャンクを削除できます。このチャンクは、将来の編集のためにスペースを確保するためにも使用でき、ファイルのサイズ変更なしでファイルを変更できます。RIFF の後の定義では、同様のPADチャンクが導入されました。[ 15 ]
WAVファイルの最上位定義は次のとおりです。[ 16 ]
<WAVE-form> → RIFF('WAVE' <fmt-ck> // ファイルのフォーマット [<fact-ck>] // ファクトチャンク [<cue-ck>] // キューポイント [<playlist-ck>] // プレイリスト [<assoc-data-list>] // 関連データリスト <wave-data> ) // 波形データ 最上位のRIFF形式ではWAVEタグが使用されます。その後に、サンプルデータのフォーマットを記述する必須のチャンクが続きます<fmt-ck>。このチャンクには、サンプルエンコーディング、チャンネルあたりのビット数、チャンネル数、サンプルレートなどの情報が含まれます。
WAV仕様にはいくつかのオプション機能が含まれています。オプションの<fact-ck>チャンクは、一部の圧縮符号化方式におけるサンプル数を報告します。この<cue-ck>チャンクは、WAVファイル内の重要なサンプル番号を識別します。この<playlist-ck>チャンクを使用すると、サンプルを最初から最後まで再生するだけでなく、順不同で再生したり、繰り返し再生したりできます。関連データリスト(<assoc-data-list>)を使用すると、キューポイントにラベルや注釈を付けることができます。サンプルのグループに対してテキスト注釈(例:キャプション情報)を付けることもできます。
最後に、必須<wave-data>チャンクには、先に指定した形式の実際のサンプルが含まれています。
WAVファイル定義では、INFOチャンクを配置する場所は示されていません。また、CSETチャンクの配置場所(使用する文字セットを指定する場所)についても何も記載されていません。
RIFF 仕様は形式仕様を目指していますが、その形式性は他のタグ付きフォーマットに見られるような正確さを欠いています。たとえば、RIFF 仕様では、サブチャンクのセットと順序付けられたサブチャンクのシーケンスを明確に区別していません。RIFF形式のチャンクは、シーケンス コンテナであるべきであることを示唆しています。シーケンス情報は、形式性に合致した WAV ファイルの RIFF 形式で指定されています。「ただし、は<fmt-ck>常に の前に出現する必要があり<wave-data>、これらのチャンクは両方とも WAVE ファイルで必須です。」[ 17 ]仕様では、LISTチャンクもシーケンスであると示唆しています。「LIST チャンクには、サブチャンクのリスト、つまり順序付けられたシーケンスが含まれます。」[ 18 ]ただし、仕様ではINFOチャンクの形式仕様は提供されていません。サンプルINFOLISTチャンクは、説明で示唆されているチャンク シーケンスを無視していますINFO。[ 19 ]のチャンクLIST定義では、チャンクを適切な形式的意味論を持つシーケンス コンテナとして<wave-data>使用しています。LIST
WAV仕様は、単一の連続したオーディオサンプル配列をサポートしており、ほとんどのWAVファイルはこれを使用しています。仕様では、順番に再生されるサンプルと無音の個別のブロックもサポートしています。サンプルデータの仕様には明らかなエラーが含まれています: [ 20 ]
<wave-data>には波形データが含まれます。以下のように定義されます。 <wave-data> → { <data-ck> | <data-list> } <data-ck> → data( <wave-data> ) <wave-list> → LIST( 'wavl' { <data-ck> | // Waveサンプル <silence-ck> }... ) // サイレンス <silence-ck> → slnt( <dwSamples:DWORD> ) // 無音サンプルの数 明らかに、<data-list>(未定義)と<wave-list>(定義済みだが参照されていない)は同一であるべきである。この問題が解決されたとしても、生成規則では再帰<data-ck>が含まれる可能性があり(これはデータ解釈の問題を意味する)、再帰を回避するために、仕様は次のように解釈できる。<wave-data>
<wave-data> → { <data-ck> | <wave-list> } <data-ck> → data( <bSampleData:BYTE> ... ) <wave-list> → LIST( 'wavl' { <data-ck> | // Waveサンプル <silence-ck> }... ) // サイレンス <silence-ck> → slnt( <dwSamples:DWORD> ) // 無音サンプルの数 WAV ファイルには、複数のサブチャンクを含むことができる埋め込み IFFリストが含まれる場合があります。[ 21 ] [ 22 ] [ 23 ]
これはWAVファイルのヘッダーの例です(44バイト)。データはリトルエンディアンのバイト順で格納されます。
[マスターRIFFチャンク] FileTypeBlocID (4バイト) : 識別子「RIFF」(0x52、0x49、0x46、0x46) ファイルサイズ(4バイト):全体のファイルサイズから8バイトを引いた値 ファイルフォーマットID(4バイト):フォーマット=「WAVE」(0x57、0x41、0x56、0x45) [データ形式を説明する部分] FormatBlocID (4バイト) : 識別子「fmt␣」(0x66、0x6D、0x74、0x20) BlocSize (4バイト): チャンクサイズから8バイトを引いた値。ここでは16バイト(0x10)です。 AudioFormat (2バイト): 音声フォーマット (1: PCM整数、3: IEEE 754浮動小数点数) NbrChannels (2バイト): チャンネル数 周波数(4バイト):サンプリングレート(ヘルツ) BytePerSec (4 バイト): 1 秒あたりに読み取るバイト数 (周波数 * BytePerBloc)。 BytePerBloc (2 バイト): ブロックあたりのバイト数 (NbrChannels * BitsPerSample / 8)。 BitsPerSample (2バイト): サンプルあたりのビット数 [サンプリングされたデータを含むチャンク] DataBlocID (4バイト) : 識別子「データ」(0x64、0x61、0x74、0x61) データサイズ(4バイト):サンプリングデータのサイズ サンプルデータ
RIFFの派生規格であるWAVファイルは、 INFOチャンクにメタデータをタグ付けできます。さらに、WAVファイルは、拡張メタデータプラットフォーム(XMP)データ[ 24 ]やID3タグ[ 25 ]など、あらゆる種類のメタデータをエクストラチャンクに埋め込むことができます。RIFF仕様では、アプリケーションが認識できないチャンクを無視することが求められており、アプリケーションはこの追加情報を必ずしも使用するとは限りません。
非圧縮WAVファイルはサイズが大きいため、インターネット上でWAVファイルを共有することは、映像、音楽、オーディオの専門家以外ではあまり一般的ではありません。このフォーマットは高解像度であるため、ディスク容量やネットワーク帯域幅に制約のないシステムで使用する場合、高品質の第一世代アーカイブファイルを保存するのに適しています。
サイズが大きいにもかかわらず、非圧縮WAVファイルはほとんどのラジオ放送局、特にテープレスシステムを採用している放送局で使用されている。
WAV形式は、以下のファイルに限定されます。4 GiB は 、ヘッダーにファイル サイズを記録するために32 ビット符号なし整数を使用しているためです。これは、44.1 kHz、16 ビットステレオ で約 6.8 時間分の CD 品質のオーディオに相当しますが、特にサンプリング レート、ビット解像度、またはチャンネル数が高い場合、この制限を超える必要がある場合があります。そのため、 Sound Forgeで使用するために W64 フォーマットが作成されました。ヘッダーの64 ビットファイル サイズ フィールドにより、より長い録音時間が可能になります。欧州放送連合によって規定されたRF64フォーマットも、この問題を解決するために作成されました。
WAVファイルのサンプリングレートは、1 Hz から4.29 GHz 、チャンネル数は最大 65535 に達することもあり、WAV ファイルは非音声データにも使用されています。 たとえば、LTspice は、適切なサンプリング レートで複数の回路トレース波形を別々のチャンネルに保存でき、フルスケール範囲は音圧ではなく±1 VまたはAを表します。 [ 27 ]
オーディオCDはWAVファイル形式ではなく、レッドブックオーディオ形式を使用します。共通点は、オーディオCDが非圧縮16ビット44.1kHzステレオLPCMとしてエンコードされていることであり、これはWAVがサポートする形式の1つです。多くのCDリッピングソフトは、デフォルトでWAV形式にリッピングします。
WAV ファイルの音声は、ファイルサイズを小さくするために、 GSMやMP3など、さまざまな音声符号化形式でエンコードできます。MP3圧縮を使用するものも含め、すべての WAV ファイルは拡張子を使用します.wav。
これは、LPCM、 ADPCM、Microsoft GSM 06.10、CELP、SBC、Truespeech、MPEG Layer-3など、WAVファイルで使用可能な音声符号化フォーマットのモノラル(ステレオではない)音声品質と圧縮ビットレートを比較するための参考資料です。これらは、Windowsに標準搭載されているACMコーデックです。
INAMは、ICOP