WAV () — формат аудіофайлу, розроблений компаніями Microsoft та IBM. WAVE базується на форматі RIFF, поширюючи його на інформацію про такі параметри аудіо, як застосований кодек, частота дискретизації та кількість каналів. WAV як і RIFF передбачався для комп'ютерів IBM PC, тому всі змінні записані у форматі little endian. Відповідником WAV для комп'ютерів PowerPC є AIFF.
Хоча файли WAVE можуть бути записані за допомогою будь-яких кодеків аудіо, зазвичай використовується нестиснений PCM, який призводить до великих обсягів файлу (близько 172 кБ на секунду для CD-якості). Іншим недоліком файлу є обмеження обсягу до 4 ГБ, через 32-бітну змінну. Формат WAV був частково витіснений стисненими форматами, проте, завдяки своїй простоті, надалі знаходить широке використання в процесі редагування звуку та на переносних аудіопристроях, як програвачі та цифрові диктофони.
Канонічний формат файлу
WAVE файл складається з двох частин: заголовку файлу і області даних.
Канонічний формат WAVE файлу починається з RIFF заголовку і двох підсекцій: "fmt " і "data". Підсекція "fmt " описує параметри даних звукозапису. У підсекції даних "data" міститься розмір даних і фактичні дані звукозапису.
+ Структура WAV файлу Позиція (HEX) Позиція Розмір Назва Пояснення
RIFF Заголовок 0000 0 4 байти ChunkID Містить літери "RIFF" в ASCII кодуванні
(0x52494646 у порядку байт big-endian) 0004 4 4 байти ChunkSize 36 + SubChunk2Size, або більш точно: 4 + (8 + SubChunk1Size) + (8 + SubChunk2Size)
Це розмір всього файлу в байтах, не враховуючи 8 байтів перших двох полів: ChunkID і ChunkSize. 0008 8 4 байти Format Містить літери "WAVE" (0x57415645 у порядку байт big-endian).
Підсекція "fmt " 000C 12 4 байти Subchunk1ID Містить літери "fmt "
(0x666d7420 у порядку байт big-endian). 0010 16 4 байти Subchunk1Size Приймає значення 16 для формату кодування PCM. Це розмір області цієї підсекції, що слідує після цього поля. 0014 20 2 байта AudioFormat PCM = 1 (Лінійне квантування)
Значення відмнінні від 1 вказують на наявність конкретного
кодування аудіо даних. 0016 22 2 байта NumChannels Кількість звукових каналів. Моно = 1, Стерео = 2, і т.д. 0018 24 4 байти SampleRate Частота дискретизації у Герцах. Наприклад, 8000, 44100, інші. 001С 28 4 байти ByteRate = SampleRate * NumChannels * BitsPerSample/8 0020 32 2 байта BlockAlign = NumChannels * BitsPerSample/8
Кількість байт, яка міститься в одному семплі враховуючи кількість каналів. 0022 34 2 байта BitsPerSample Кількість біт в одному семплі. Так звана "глибина" чи точність звучання.
8, 16, 32, і так далі. 2 байта ExtraParamSize Розмір поля з параметрами. Якщо PCM, ці два поля ExtraParamSize і ExtraParams не записуються. X ExtraParams Місце для запису додаткових параметрів
Підсекція "data" 0024 36 4 байти Subchunk2ID Містить літери "data"
(0x64617461 у порядку байт big-endian). 0028 40 4 байти Subchunk2Size Розмір даних звукозапису в байтах, які містяться в наступному полі.
Кількість семплів * NumChannels * BitsPerSample/8 002С 44 X Data Фактичні дані звукозапису. Програми редактори Sound Forge
Програми відтворювачі Winamp Aimp foobar2000
Посилання Opis budowy pliku (En) Список зареєстрованих кодеків звуку codenet (Rus) kazus (Rus) wav-pcm.narod.ru (Rus) Структура WAV файла (Rus) WAVE PCM soundfile format (En) WAV & BWF Metadata Guide (En)