Формат аудиофайла Waveform ( WAVE или WAV из-за расширения имени файла ; [3] [6] [7] произносится как / wæv / или / weɪv / [8] ) — стандарт формата аудиофайлов для хранения аудиопотока на персональных компьютерах . Формат был разработан и впервые опубликован в 1991 году компаниями IBM и Microsoft . Это основной формат, используемый в системах Microsoft Windows для несжатого звука . Обычное кодирование битового потока — это формат линейной импульсно-кодовой модуляции (LPCM).
WAV — это приложение метода формата потока битов Resource Interchange File Format (RIFF) для хранения данных в виде фрагментов , и, таким образом, он похож на форматы 8SVX и Audio Interchange File Format (AIFF), используемые на компьютерах Amiga и Macintosh соответственно.
Файл WAV является примером формата файла обмена ресурсами (RIFF), определенного IBM и Microsoft . [3] Формат RIFF действует как оболочка для различных форматов кодирования звука .
Хотя файл WAV может содержать сжатый звук, наиболее распространенным форматом аудио WAV является несжатый звук в формате линейной импульсно-кодовой модуляции (LPCM). LPCM также является стандартным форматом кодирования звука для аудио компакт-дисков , которые хранят двухканальный звук LPCM, сэмплированный на частоте 44,1 кГц с 16 битами на сэмпл . Поскольку LPCM не сжимается и сохраняет все сэмплы звуковой дорожки, профессиональные пользователи или аудиоэксперты могут использовать формат WAV со звуком LPCM для максимального качества звука. [9] Файлы WAV также можно редактировать и манипулировать ими с относительной легкостью с помощью программного обеспечения.
В Microsoft Windows формат WAV поддерживает сжатый звук с помощью Audio Compression Manager (ACM). Для сжатия WAV-файла можно использовать любой кодек ACM. Пользовательский интерфейс (UI) для ACM можно получить через различные программы, которые его используют, включая Sound Recorder в некоторых версиях Windows.
Начиная с Windows 2000 , WAVE_FORMAT_EXTENSIBLE
был определен заголовок, который определяет данные нескольких аудиоканалов вместе с позициями динамиков, устраняет неоднозначность относительно типов сэмплов и размеров контейнеров в стандартном формате WAV и поддерживает определение пользовательских расширений для формата. [4] [5] [10]
Файл RIFF — это формат файла с тегами. Он имеет определенный формат контейнера ( chunk ) с заголовком, который включает четырехсимвольный тег ( FourCC ) и размер (количество байтов) куска. Тег определяет, как следует интерпретировать данные внутри куска, и существует несколько стандартных тегов FourCC. Теги, состоящие только из заглавных букв, являются зарезервированными тегами. Самый внешний кусок файла RIFF имеет тег RIFF
; первые четыре байта данных куска являются дополнительным тегом FourCC, которые определяют тип формы и за которыми следует последовательность подкусков. В случае файла WAV дополнительным тегом является WAVE
. Остальная часть данных RIFF представляет собой последовательность фрагментов, описывающих аудиоинформацию.
Преимущество формата файла с тегами заключается в том, что формат может быть расширен позже с сохранением обратной совместимости . [11] Правило для считывателя RIFF (или WAV) заключается в том, что он должен игнорировать любой тегированный фрагмент, который он не распознает. [12] Читатель не сможет использовать новую информацию, но читатель не должен быть сбит с толку.
Спецификация для файлов RIFF включает определение фрагмента INFO
. Фрагмент может включать такую информацию, как название работы, автора, дату создания и информацию об авторских правах. Хотя INFO
фрагмент был определен для RIFF в версии 1.0, в формальной спецификации файла WAV на него не было ссылки. У многих читателей возникли проблемы с обработкой этого. Следовательно, самым безопасным с точки зрения обмена было опустить фрагмент INFO
и другие расширения и отправить файл с наименьшим общим знаменателем. Существуют и другие проблемы размещения фрагмента INFO .
Файлы RIFF предполагалось использовать в международных средах, поэтому существует CSET
фрагмент для указания кода страны, языка, диалекта и кодовой страницы для строк в файле RIFF. [13] Например, указание соответствующего фрагмента должно позволить интерпретировать CSET
строки в фрагменте (и другие фрагменты во всем файле RIFF) как кириллические или японские символы.INFO
RIFF также определяет JUNK
фрагмент, содержимое которого неинтересно. [14] Этот фрагмент позволяет удалить фрагмент, просто изменив его FourCC. Этот фрагмент также можно использовать для резервирования места для будущих правок, чтобы файл можно было изменять без изменения размера. Более позднее определение RIFF ввело аналогичный PAD
фрагмент. [15]
Верхнее определение файла WAV: [16]
<WAVE-форма> → RIFF('WAVE' <fmt-ck> // Формат файла [<fact-ck>] // Фрагмент факта [<cue-ck>] // Точки разметки [<playlist-ck>] // Плейлист [<assoc-data-list>] // Список связанных данных <wave-data> ) // Данные волны
Форма RIFF верхнего уровня использует WAVE
тег. За ним следует обязательный <fmt-ck>
фрагмент, описывающий формат данных выборки, которые следуют за ним. Этот фрагмент включает в себя такую информацию, как кодировка выборки, количество бит на канал, количество каналов и частота выборки.
Спецификация WAV включает некоторые дополнительные функции. Необязательный <fact-ck>
фрагмент сообщает количество образцов для некоторых схем сжатого кодирования. <cue-ck>
Фрагмент идентифицирует некоторые значимые номера образцов в файле Wave. Фрагмент <playlist-ck>
позволяет воспроизводить образцы не по порядку или повторять их, а не только от начала до конца. Связанный список данных ( <assoc-data-list>
) позволяет прикреплять метки и примечания к контрольным точкам; для группы образцов может быть указана текстовая аннотация (например, информация о подписи).
Наконец, обязательный <wave-data>
блок содержит фактические образцы в указанном ранее формате.
Обратите внимание, что определение файла WAV не показывает, где INFO
должен быть размещен фрагмент. Оно также ничего не говорит о размещении фрагмента CSET
(которое определяет используемый набор символов).
Спецификация RIFF пытается быть формальной спецификацией, но ее формализму не хватает точности, наблюдаемой в других тегированных форматах. Например, спецификация RIFF не делает четкого различия между набором подфрагментов и упорядоченной последовательностью подфрагментов. Форма RIFF chunk предполагает, что это должен быть контейнер последовательности. Информация о последовательности указана в форме RIFF файла WAV в соответствии с формализмом: «Однако, <fmt-ck>
всегда должно встречаться до <wave-data>
, и оба этих фрагмента являются обязательными в файле WAVE». [17] Спецификация предполагает, что LIST
фрагмент также является последовательностью: «Фрагмент LIST содержит список или упорядоченную последовательность подфрагментов». [18] Однако спецификация не дает формальной спецификации фрагмента INFO
; пример INFO
LIST
фрагмента игнорирует последовательность фрагментов, подразумеваемую в INFO
описании. [19] Определение LIST
фрагмента для <wave-data>
использует LIST
фрагмент как контейнер последовательности с хорошей формальной семантикой.
Спецификация WAV поддерживает, и большинство файлов WAV используют, единый непрерывный массив аудиосэмплов. Спецификация также поддерживает дискретные блоки сэмплов и тишины, которые воспроизводятся по порядку. Спецификация для данных сэмплов содержит очевидные ошибки: [20]
<wave-data> содержит данные формы волны. Он определяется следующим образом: <wave-data> → { <data-ck> | <data-list> } <data-ck> → данные( <wave-data> ) <wave-list> → LIST( 'wavl' { <data-ck> | // Образцы волн <silence-ck> }... ) // Тишина <silence-ck> → slnt( <dwSamples:DWORD> ) // Количество тихих образцов
Очевидно, <data-list>
(undefined) и <wave-list>
(defined but not referenced) должны быть идентичны. Даже если это решено, то продукция позволяет a <data-ck>
содержать рекурсивный <wave-data>
(что подразумевает проблемы интерпретации данных). Чтобы избежать рекурсии, спецификацию можно интерпретировать как:
<волновые-данные> → { <данные-ck> | <волновой-список> } <data-ck> → данные( <bSampleData:BYTE> ... ) <wave-list> → LIST( 'wavl' { <data-ck> | // Образцы волн <silence-ck> }... ) // Тишина <silence-ck> → slnt( <dwSamples:DWORD> ) // Количество тихих образцов
Файлы WAV могут содержать встроенные списки IFF , которые могут содержать несколько подфрагментов . [21] [22] [23]
Это пример заголовка WAV-файла (44 байта). Данные хранятся в порядке байтов little-endian.
[Основной фрагмент RIFF] FileTypeBlocID (4 байта): Идентификатор «RIFF» (0x52, 0x49, 0x46, 0x46) FileSize (4 байта): общий размер файла минус 8 байт. FileFormatID (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 байта): количество байтов, считываемых в секунду (Частота * BytePerBloc). BytePerBloc (2 байта): количество байтов на блок (NbrChannels * BitsPerSample / 8). BitsPerSample (2 байта): количество бит на выборку[Фрагмент, содержащий выборочные данные] DataBlocID (4 байта): идентификатор «данные» (0x64, 0x61, 0x74, 0x61) DataSize (4 байта): размер выборочных данных Выборочные данные
Как производные от RIFF, файлы WAV могут быть помечены метаданными в фрагменте INFO. Кроме того, файлы WAV могут встраивать любые виды метаданных, включая, помимо прочего, данные Extensible Metadata Platform (XMP) [24] или теги ID3 [25] в дополнительные фрагменты. Спецификация RIFF требует, чтобы приложения игнорировали фрагменты, которые они не распознают, и приложения не обязательно могут использовать эту дополнительную информацию.
Несжатые файлы WAV имеют большой размер, поэтому обмен файлами WAV через Интернет не распространен, за исключением профессионалов в области видео, музыки и аудио. Высокое разрешение формата делает его пригодным для сохранения архивных файлов первого поколения высокого качества для использования в системе, где дисковое пространство и пропускная способность сети не являются ограничениями.
Несмотря на большой размер, несжатые файлы WAV используются большинством радиовещательных компаний, особенно теми, которые перешли на безленточную систему.
Формат WAV ограничен файлами размером менее4 GiB , из-за использования 32-битного целого числа без знака для записи размера файла в заголовке. Хотя это эквивалентно примерно 6,8 часам звука CD-качества при 44,1 кГц, 16-битном стерео , иногда необходимо превышать этот предел, особенно когда требуются более высокие частоты дискретизации , битовые разрешения или количество каналов . Поэтому формат W64 был создан для использования в Sound Forge . Его 64-битное поле размера файла в заголовке позволяет записывать гораздо большее время. Формат RF64, указанный Европейским вещательным союзом, также был создан для решения этой проблемы.
Поскольку частота дискретизации WAV-файла может варьироваться от1 Гц до4,3 ГГц , а количество каналов может достигать 65535, файлы WAV также использовались для неаудиоданных. Например, LTspice может хранить несколько форм сигналов трассировки цепи в отдельных каналах с любой подходящей частотой дискретизации, при этом полный диапазон представляет собой ±1 В или А, а не звуковое давление. [27]
Аудио компакт-диски (CD) не используют формат файла WAV, вместо этого используется Red Book audio . Общим является то, что аудио компакт-диски кодируются как несжатый 16-битный 44,1 кГц стерео LPCM, который является одним из форматов, поддерживаемых WAV.
Аудио в файлах WAV может быть закодировано в различных форматах аудиокодирования, таких как GSM или MP3 , для уменьшения размера файла. Все файлы WAV; даже те, которые используют сжатие MP3,.wav
используют расширение.
Это справочник по сравнению качества монофонического (не стереофонического ) звука и битрейтов сжатия форматов кодирования звука, доступных для файлов WAV, включая LPCM, ADPCM , Microsoft GSM 06.10 , CELP , SBC , Truespeech и MPEG Layer-3. Это кодеки ACM по умолчанию, которые поставляются с Windows.
{{cite web}}
: CS1 maint: numeric names: authors list (link)INAM
появляется ранееICOP