通常PC用 / 人気 更新 今日 カテ |
電子計算機 > 仕様・構造 > ソフトウェア > ファイルシステム > ファイル名 > 拡張子 |
電子計算機 > ソフト > ファイル形式 > 音 > 音声 > 無圧縮 |
電子計算機 > ソフト > ファイル形式 > コンテナーファイル |
WAV |
辞書:電算用語の基礎知識 ファイル音像編 (PFAV) |
読み:ウェーブ |
外語:WAV: WAVe |
品詞:名詞 |
Microsoft Windows標準の音声データ用コンテナーフォーマットで、オーディオフォーマットの代表的なもの。
ファイルの拡張子がWAVであることから、WAVファイル、あるいは単にWAVと呼ばれている。
|
概要 |
正式には「RIFF waveform Audio Format」といい、MicrosoftとIBMにより開発され、特許をもつ規格である。
Microsoft WindowsやOS/2で採用されて以降、その普及とともに一般化し、今に至っている。
この規格をWindowsで最初に採用したのは、Windows 3.0 with Multimedia Extensionsであり、音声再生に一切対応していなかったWindowsにマルチメディア機能を追加する製品であった。同様の技術を用いた動画データ用のフォーマットはAVIである。
特徴 |
コーデック |
初期には、無圧縮PCMとADPCMなど幾つかの簡単な圧縮にしか対応していなかったが、後に様々な音声コーデックが登場し、利用できるようになった。
現在では、mp3形式のデータをWAVファイルに格納することも可能である。
格納フォーマットの番号は16ビットの数値であり、この番号さえ取得できれば理論上どんな形式でも格納可能。但し、どこに問い合わせれば番号が貰えるのかは全く不明である。
形式 |
技術的には、ファイル形式はAVIと同様にRIFFになっている。AVIファイルの音声だけのもの、とも考えられる。
WAVファイルはRIFFチャンク形式なので、汎用性が高く、様々な情報を同時に格納することができる。
工夫すれば複数の音楽ファイルを一つのWAVファイル内に格納することも理論上可能だが、そのようには使われていない。事実上格納可能なデータは一つ(一曲)だけである。
構造 |
ファイルは、フォーマット部(fmt)、全サンプル数(fact)、波形データ(data)、コメント情報(LIST)、などのチャンクで構成される。
WAVファイルとして成立させるには最低限、fmtチャンクとdataチャンクがあれば良い。
RIFF形式の識別子は「RIFF」、種類を表わす識別子は「WAVE」である。
データ部は、ステレオならLRLR…の順に格納する。データは無符号8ビットまたは符号付き16ビットであり、16ビット時のバイトオーダーはリトルエンディアンである。
技術 |
ファイル構造 |
基本的なファイル構造は次の通り。
WAVファイルとして最低限必要なのは、サンプリングレートなどの情報を格納するfmtチャンクと、実際の波形情報を格納するdataチャンクのみである。
fmtチャンクの大きさや構成は使用するフォーマット(圧縮などの種類)により変わり、dataチャンクの大きさはそれに加えて音響の長さにより変わる。
RIFFヘッダー内に全体のファイルサイズを書く必要があるが、これが32ビットであるため、ファイルの最大サイズは4Giバイトということになる。
ファイルヘッダー |
最もシンプルな場合の、WAVのファイルヘッダーは、次のような構造をとる。
2バイト/4バイトの各値は、リトルエンディアンで格納される。
バイト数 | 内容 | 説明 | 補足 |
---|---|---|---|
4 | 'R' 'I' 'F' 'F' | RIFFヘッダー | |
4 | これ以降のサイズ | ファイルサイズ-8 | |
4 | 'W' 'A' 'V' 'E' | RIFFがWAVEであることを表わす | |
fmtチャンク | |||
4 | 'f' 'm' 't' ' ' | fmtチャンク | 4文字目は空白文字。これ以降フォーマット情報 |
4 | チャンクサイズ | リニアPCMなら16である | |
2 | フォーマットID | リニアPCMなら1である(一覧は後述) | |
2 | チャンネル数 | モノラルは1、ステレオは2 | |
4 | サンプリングレート | Hz単位 | 44.1kHzなら44100 |
4 | データ速度 | バイト/秒 | 44.1kHz/16ビット/ステレオなら44100×2×2=176400 |
2 | ブロックサイズ | バイト/サンプル×チャンネル | 16ビット/ステレオなら2×2=4 |
2 | ビットレート | ビット/サンプル | 8ビットなら8、16ビットなら16、GSMなどでは常に0 |
2 | 拡張領域のサイズ | チャンクサイズが18以上なら存在する | |
n | 拡張領域 | リニアPCMなら存在しない | |
dataチャンク | |||
4 | 'd' 'a' 't' 'a' | dataチャンク | これ以降波形情報 |
4 | チャンクサイズ | 波形情報のバイト数 | |
n | 波形情報 |
fmtチャンクの8番目の項目、ビットレートは、ビット/サンプルの値が格納される。例えば、WAVE_FORMAT_PCM(リニアPCM)であれば8ビットなら8、16ビットなら16が格納され、WAVE_FORMAT_MULAW(μ-Law)なら常に8である。さらに、WAVE_FORMAT_GSM610(GSM 6.10)の場合は常に0が格納される。
このように0が格納されることもあるため、8や16が格納されることを前提としているとバグを発生させる。例えばAndroid 5.0ではこれが0になることを想定しないコードが追加されたため、GSM 6.10のWAVを再生すると0除算例外(SIGFPE)が発生するという、不具合修正と称する不具合「Fix WAVExtractor to output full audio frames only」が存在した。なおこの残念なバグは「Fix GSM WAV playback」としてAndroid 5.1で無事に修正されている。
dataチャンク |
波形情報を格納するチャンクである。
フォーマットID |
WAVは、格納する波形情報の種類を、16ビットの数値で表わす。
Microsoft Visual C++なら、MMReg.hをincludeすることでラベルが使用できるようになる。
今となってはobsolete(破棄)されたものも多い。
番号 | 名前 | 内容 |
---|---|---|
0x0000 | WAVE_FORMAT_UNKNOWN | 未知のフォーマット |
0x0001 | WAVE_FORMAT_PCM | リニアPCM |
0x0002 | WAVE_FORMAT_ADPCM | Microsoft ADPCM |
0x0003 | WAVE_FORMAT_IEEE_FLOAT | IEEE Float |
0x0004 | WAVE_FORMAT_VSELP | Compaq VSELP |
0x0005 | WAVE_FORMAT_IBM_CVSD | IBM CVSD |
0x0006 | WAVE_FORMAT_ALAW | A-Law |
0x0007 | WAVE_FORMAT_MULAW | μ-Law |
0x0008 | WAVE_FORMAT_DTS | |
0x0009 | WAVE_FORMAT_DRM | |
0x000A | WAVE_FORMAT_WMAVOICE9 | |
0x000B | WAVE_FORMAT_WMAVOICE10 | |
0x0010 | WAVE_FORMAT_OKI_ADPCM | OKI ADPCM |
0x0011 | WAVE_FORMAT_DVI_ADPCM | Intel DVI ADPCM |
WAVE_FORMAT_IMA_ADPCM | Microsoft IMA ADPCM | |
0x0012 | WAVE_FORMAT_MEDIASPACE_ADPCM | Videologic MediaSpace ADPCM |
0x0013 | WAVE_FORMAT_SIERRA_ADPCM | Sierra ADPCM |
0x0014 | WAVE_FORMAT_G723_ADPCM | ADPCM (G.723) |
0x0015 | WAVE_FORMAT_DIGISTD | DSP Solution DIGISTD |
0x0016 | WAVE_FORMAT_DIGIFIX | DSP Solution DIGIFIX |
0x0017 | WAVE_FORMAT_DIALOGIC_OKI_ADPCM | Dialogic OKI ADPCM |
0x0018 | WAVE_FORMAT_MEDIAVISION_ADPCM | MediaVision ADPCM |
0x0019 | WAVE_FORMAT_CU_CODEC | Hewlett-Packard CU |
0x0020 | WAVE_FORMAT_YAMAHA_ADPCM | YAMAHA ADPCM |
0x0021 | WAVE_FORMAT_SONARC | Speech Compression SONARC |
0x0022 | WAVE_FORMAT_DSPGROUP_TRUESPEECH | DSP Group True Speech |
0x0023 | WAVE_FORMAT_ECHOSC1 | Echo Speech EchoSC1 |
0x0024 | WAVE_FORMAT_AUDIOFILE_AF36 | Audiofile AF36 |
0x0025 | WAVE_FORMAT_APTX | APTX |
0x0026 | WAVE_FORMAT_AUDIOFILE_AF10 | AudioFile AF10 |
0x0027 | WAVE_FORMAT_PROSODY_1612 | Prosody 1612 |
0x0028 | WAVE_FORMAT_LRC | LRC |
0x0030 | WAVE_FORMAT_DOLBY_AC2 | Dolby AC2 |
0x0031 | WAVE_FORMAT_GSM610 | GSM 6.10 |
0x0032 | WAVE_FORMAT_MSNAUDIO | MSNAudio |
0x0033 | WAVE_FORMAT_ANTEX_ADPCME | Antex ADPCME |
0x0034 | WAVE_FORMAT_CONTROL_RES_VQLPC | Control Res VQLPC |
0x0035 | WAVE_FORMAT_DIGIREAL | Digireal |
0x0036 | WAVE_FORMAT_DIGIADPCM | DigiADPCM |
0x0037 | WAVE_FORMAT_CONTROL_RES_CR10 | Control Res CR10 |
0x0038 | WAVE_FORMAT_NMS_VBXADPCM | NMS VBXADPCM |
0x0039 | WAVE_FORMAT_CS_IMAADPCM | Roland RDAC |
0x003A | WAVE_FORMAT_ECHOSC3 | EchoSC3 |
0x003B | WAVE_FORMAT_ROCKWELL_ADPCM | Rockwell ADPCM |
0x003C | WAVE_FORMAT_ROCKWELL_DIGITALK | Rockwell Digit LK |
0x003D | WAVE_FORMAT_XEBEC | Xebec |
0x0040 | WAVE_FORMAT_G721_ADPCM | Antex Electronics G.721 |
0x0041 | WAVE_FORMAT_G728_CELP | G.728 CELP |
0x0042 | WAVE_FORMAT_MSG723 | MSG723 |
0x0050 | WAVE_FORMAT_MPEG | MPEG Layer 1,2 |
0x0052 | WAVE_FORMAT_RT24 | RT24 |
0x0053 | WAVE_FORMAT_PAC | PAC |
0x0055 | WAVE_FORMAT_MPEGLAYER3 | MPEG Layer 3 |
0x0059 | WAVE_FORMAT_LUCENT_G723 | Cirrus |
0x0060 | WAVE_FORMAT_CIRRUS | |
0x0061 | WAVE_FORMAT_ESPCM | ESPCM |
0x0062 | WAVE_FORMAT_VOXWARE | Voxware (obsolete) |
0x0063 | WAVE_FORMAT_CANOPUS_ATRAC | Canopus Atrac |
0x0064 | WAVE_FORMAT_G726_ADPCM | G.726 ADPCM |
0x0065 | WAVE_FORMAT_G722_ADPCM | G.722 ADPCM |
0x0066 | WAVE_FORMAT_DSAT | DSAT |
0x0067 | WAVE_FORMAT_DSAT_DISPLAY | DSAT Display |
0x0069 | WAVE_FORMAT_VOXWARE_BYTE_ALIGNED | Voxware Byte Aligned (obsolete) |
0x0070 | WAVE_FORMAT_VOXWARE_AC8 | Voxware AC8 (obsolete) |
0x0071 | WAVE_FORMAT_VOXWARE_AC10 | Voxware AC10 (obsolete) |
0x0072 | WAVE_FORMAT_VOXWARE_AC16 | Voxware AC16 (obsolete) |
0x0073 | WAVE_FORMAT_VOXWARE_AC20 | Voxware AC20 (obsolete) |
0x0074 | WAVE_FORMAT_VOXWARE_RT24 | Voxware MetaVoice (obsolete) |
0x0075 | WAVE_FORMAT_VOXWARE_RT29 | Voxware MetaSound (obsolete) |
0x0076 | WAVE_FORMAT_VOXWARE_RT29HW | Voxware RT29HW (obsolete) |
0x0077 | WAVE_FORMAT_VOXWARE_VR12 | Voxware VR12 (obsolete) |
0x0078 | WAVE_FORMAT_VOXWARE_VR18 | Voxware VR18 (obsolete) |
0x0079 | WAVE_FORMAT_VOXWARE_TQ40 | Voxware TQ40 (obsolete) |
0x0080 | WAVE_FORMAT_SOFTSOUND | Softsound |
0x0081 | WAVE_FORMAT_VOXWARE_TQ60 | Voxware TQ60 (obsolete) |
0x0082 | WAVE_FORMAT_MSRT24 | MSRT24 |
0x0083 | WAVE_FORMAT_G729A | G.729A |
0x0084 | WAVE_FORMAT_MVI_MVI2 | MVI MV12 |
0x0085 | WAVE_FORMAT_DF_G726 | DF G.726 |
0x0086 | WAVE_FORMAT_DF_GSM610 | DF GSM610 |
0x0088 | WAVE_FORMAT_ISIAUDIO | ISIAudio |
0x0089 | WAVE_FORMAT_ONLIVE | Onlive |
0x0091 | WAVE_FORMAT_SBC24 | SBC24 |
0x0092 | WAVE_FORMAT_DOLBY_AC3_SPDIF | Dolby AC3 SPDIF |
0x0093 | WAVE_FORMAT_MEDIASONIC_G723 | |
0x0094 | WAVE_FORMAT_PROSODY_8KBPS | |
0x0097 | WAVE_FORMAT_ZYXEL_ADPCM | ZyXEL ADPCM |
0x0098 | WAVE_FORMAT_PHILIPS_LPCBB | Philips LPCBB |
0x0099 | WAVE_FORMAT_PACKED | Packed |
0x00A0 | WAVE_FORMAT_MALDEN_PHONYTALK | |
0x00FF | WAVE_FORMAT_RAW_AAC1 | |
0x0100 | WAVE_FORMAT_RHETOREX_ADPCM | Rhetorex ADPCM |
0x0101 | WAVE_FORMAT_IRAT | BeCubed Software's IRAT |
0x0111 | WAVE_FORMAT_VIVO_G723 | Vivo G.723 |
0x0112 | WAVE_FORMAT_VIVO_SIREN | Vivo Siren |
0x0123 | WAVE_FORMAT_DIGITAL_G723 | Digital G.723 |
0x0125 | WAVE_FORMAT_SANYO_LD_ADPCM | |
0x0130 | WAVE_FORMAT_SIPROLAB_ACEPLNET | |
0x0131 | WAVE_FORMAT_SIPROLAB_ACELP4800 | |
0x0132 | WAVE_FORMAT_SIPROLAB_ACELP8V3 | |
0x0133 | WAVE_FORMAT_SIPROLAB_G729 | |
0x0134 | WAVE_FORMAT_SIPROLAB_G729A | |
0x0135 | WAVE_FORMAT_SIPROLAB_KELVIN | |
0x0140 | WAVE_FORMAT_G726ADPCM | |
0x0150 | WAVE_FORMAT_QUALCOMM_PUREVOICE | |
0x0151 | WAVE_FORMAT_QUALCOMM_HALFRATE | |
0x0155 | WAVE_FORMAT_TUBGSM | |
0x0160 | WAVE_FORMAT_MSAUDIO1 | |
0x0161 | WAVE_FORMAT_WMAUDIO2 | |
0x0162 | WAVE_FORMAT_WMAUDIO3 | |
0x0163 | WAVE_FORMAT_WMAUDIO_LOSSLESS | |
0x0164 | WAVE_FORMAT_WMASPDIF | |
0x0170 | WAVE_FORMAT_UNISYS_NAP_ADPCM | |
0x0171 | WAVE_FORMAT_UNISYS_NAP_ULAW | |
0x0172 | WAVE_FORMAT_UNISYS_NAP_ALAW | |
0x0173 | WAVE_FORMAT_UNISYS_NAP_16K | |
0x0200 | WAVE_FORMAT_CREATIVE_ADPCM | Creative Labs ADPCM |
0x0202 | WAVE_FORMAT_CREATIVE_FASTSPEECH8 | Creative FastSpeech8 |
0x0203 | WAVE_FORMAT_CREATIVE_FASTSPEECH10 | Creative FastSpeech10 |
0x0210 | WAVE_FORMAT_UHER_ADPCM | Creative ADPCM |
0x0220 | WAVE_FORMAT_QUARTERDECK | Quarterdeck |
0x0230 | WAVE_FORMAT_ILINK_VC | |
0x0240 | WAVE_FORMAT_RAW_SPORT | |
0x0241 | WAVE_FORMAT_ESST_AC3 | |
0x0249 | WAVE_FORMAT_GENERIC_PASSTHRU | |
0x0250 | WAVE_FORMAT_IPI_HSX | |
0x0251 | WAVE_FORMAT_IPI_RPELP | |
0x0260 | WAVE_FORMAT_CS2 | |
0x0270 | WAVE_FORMAT_SONY_SCX | |
0x0300 | WAVE_FORMAT_FM_TOWNS_SND | FM TOWNS SND |
0x0400 | WAVE_FORMAT_BTV_DIGITAL | BTV Digital |
0x0450 | WAVE_FORMAT_QDESIGN_MUSIC | |
0x0680 | WAVE_FORMAT_VME_VMPCM | VME VMPCM |
0x0681 | WAVE_FORMAT_TPC | |
0x1000 | WAVE_FORMAT_OLIGSM | Olivetti GSM |
0x1001 | WAVE_FORMAT_OLIADPCM | Olivetti ADPCM |
0x1002 | WAVE_FORMAT_OLICELP | Olivetti CELP |
0x1003 | WAVE_FORMAT_OLISBC | Olivetti SBC |
0x1004 | WAVE_FORMAT_OLIOPR | Olivetti OPR |
0x1100 | WAVE_FORMAT_LH_CODEC | LH Codec |
0x1400 | WAVE_FORMAT_NORRIS | Norris |
0x1401 | WAVE_FORMAT_ISIAUDIO | ISIAudio |
0x1500 | WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS | Soundspace Music Compression |
0x1600 | WAVE_FORMAT_MPEG_ADTS_AAC | |
0x1601 | WAVE_FORMAT_MPEG_RAW_AAC | |
0x1602 | WAVE_FORMAT_MPEG_LOAS | |
0x1608 | WAVE_FORMAT_NOKIA_MPEG_ADTS_AAC | |
0x1609 | WAVE_FORMAT_NOKIA_MPEG_RAW_AAC | |
0x160A | WAVE_FORMAT_VODAFONE_MPEG_ADTS_AAC | |
0x160B | WAVE_FORMAT_VODAFONE_MPEG_RAW_AAC | |
0x1610 | WAVE_FORMAT_MPEG_HEAAC | |
0x2000 | WAVE_FORMAT_DVM | DVM |
0x2001 | WAVE_FORMAT_DTS2 | |
0xFFFE | WAVE_FORMAT_EXTENSIBLE | SubFormat |
0xFFFF | WAVE_FORMAT_DEVELOPMENT | Development |
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |