Wav файл формата pcm 8000 гц 16 бит моно
WAV: wav - это формат аудиофайлов без потерь, WAV соответствует спецификациям PIFF (Resource Interchange File Format). Все WAV-файлы имеют заголовок файла, который является параметром кодирования аудиопотока. WAV не имеет жестких правил кодирования аудиопотоков.В дополнение к PCM почти все кодировки, поддерживающие спецификацию ACM, могут кодировать аудиопотоки WAV.
PCM: PCM (импульсная кодовая модуляция - запись с импульсной кодовой модуляцией). Так называемая запись PCM предназначена для преобразования аналоговых сигналов, таких как звук, в символьные последовательности импульсов, а затем их записи. Сигнал PCM - это цифровой сигнал, состоящий из символов, таких как [1] и [0], без какой-либо обработки кодирования и сжатия. По сравнению с аналоговыми сигналами, он менее подвержен помехам и искажениям в системе передачи. Динамический диапазон широкий, а качество звука неплохое.
Проще говоря: wav - это формат аудиофайлов без потерь, а pcm - метод кодирования без сжатия.
Связь между WAV и PCM
WAV может использовать различные кодировки аудио для сжатия своего аудиопотока, но обычно мы являемся WAV, аудиопоток которого кодируется с помощью PCM, но это не означает, что WAV может использовать только кодирование PCM. Кодирование MP3 также может использоваться в WAV, и Как и в случае с AVI, если установлен соответствующий декодер, вы можете наслаждаться этими WAV-файлами. На платформе Windows WAV, основанный на кодировке PCM, является наилучшим поддерживаемым аудиоформатом. Все аудио программное обеспечение может полностью поддерживать его. Поскольку он может соответствовать требованиям более высокого качества звука, WAV также является предпочтительным форматом для редактирования и создания музыки. Подходит для сохранения музыкального материала. Поэтому WAV, основанный на кодировании PCM, используется в качестве промежуточного формата и часто используется при взаимном преобразовании других кодировок, например, при преобразовании MP3 в WMA.
Проще говоря: pcm - это способ кодирования аудиоданных в файлах wav без потерь, но wav также можно кодировать другими способами.
Записать запись в файл формата wav
Иногда бывает необходимо сохранить файл записи в формате wav, что требует ручного заполнения информации заголовка файла wav.Весь код очень прост, примерно так:
Печатное приложение
Помимо этой статьи я искал сопутствующие материалы, которые здесь дополнены.
wav - это pcm + заголовок файла, pcm - значение adc собранного микрофона
Основной принцип работы PCM
Импульсная модуляция предназначена для преобразования непрерывного во времени аналогового сигнала с непрерывным значением в дискретный по времени цифровой сигнал, который затем передается по каналу. Модуляция импульсного кода - это процесс сначала дискретизации аналогового сигнала, затем квантования амплитуды образца и кодирования.
Так называемая выборка - это периодическое сканирование аналогового сигнала, превращение непрерывного во времени сигнала в дискретный во времени. Аналоговый сигнал также должен содержать всю информацию в исходном сигнале после дискретизации, то есть исходный аналоговый сигнал может быть восстановлен без искажений. Нижний предел его частоты дискретизации определяется теоремой дискретизации. В этом эксперименте частота дискретизации составляет 8 Кбит / с.
Так называемое квантование - это дискретизация амплитуды мгновенного значения, полученного после дискретизации, то есть использование набора предписанных уровней и выражение мгновенного дискретного значения с ближайшим значением уровня.
После дискретизации и квантования аналогового сигнала получается квантованный сигнал амплитудно-импульсной модуляции, который представляет собой только ограниченное количество значений.
Так называемое кодирование заключается в использовании набора групп двоичного кода для представления каждого квантованного значения с фиксированным уровнем. Однако фактическое квантование выполняется одновременно с процессом кодирования, поэтому процесс кодирования также называется аналого-цифровым преобразованием, которое может быть записано как A / D.
Голосовой сигнал PCM сначала проходит через фильтр нижних частот со сглаживанием для импульсной выборки, чтобы стать сигналом выборки с частотой повторения 8 кГц (т.е. сигналом PAM с дискретной амплитудной модуляцией импульса), а затем амплитуда является непрерывной. Сигнал PAM квантуется в сигнал с конечным числом значений амплитуды с использованием метода «округления», а затем после кодирования преобразуется в двоичный код. Для телефонов CCITT предусматривает, что частота дискретизации составляет 8 кГц, и каждое значение дискретизации кодируется 8 битами, то есть всего имеется 28 = 256 значений квантования, поэтому стандартная цифровая скорость после кодирования PCM для каждого голосового канала составляет 64 кбит / с. Для решения проблемы больших ошибок квантования и плохого качества звука для небольших сигналов при равномерном квантовании на практике используется метод нелинейного квантования с неравномерным выбором интервалов квантования. Временные слои разреженные, а интервал квантования большой.
Представляем вашему вниманию статью с подробным разбором заголовка WAV-файла и его структуры.
Теория
Итак, рассмотрим самый обычный WAV файл (Windows PCM). Он представляет собой две, четко делящиеся, области. Одна из них — заголовок файла, другая — область данных. В заголовке файла хранится информация о:
- Размере файла.
- Количестве каналов.
- Частоте дискретизации.
- Количестве бит в сэмпле (эту величину ещё называют глубиной звучания).
Но для большего понимания смысла величин в заголовке следует ещё рассказать об области данных и оцифровке звука. Звук состоит из колебаний, которые при оцифровке приобретают ступенчатый вид. Этот вид обусловлен тем, что компьютер может воспроизводить в любой короткий промежуток времени звук определенной амплитуды (громкости) и этот короткий момент далеко не бесконечно короткий. Продолжительность этого промежутка и определяет частота дискретизации. Например, у нас файл с частотой дискретизации 44.1 kHz, это значит, что тот короткий промежуток времени равен 1/44100 секунды (следует из размерности величины Гц = 1/с). Современные звуковые карты поддерживают частоту дискретизации до 192 kHz. Так, со временем разобрались.
Амплитуда и сэмплы
Теперь, что касается амплитуды (громкости звука в коротком промежутке времени). Амплитуда выражается числом, которое занимает в файле 8, 16, 24, 32 бита (теоретически можно и больше). От точности амплитуды, я бы сказал, зависит точность звука. Как известно, 8 бит = 1 байту, следовательно, одно значение амплитуды в какой-то короткий промежуток времени в файле занимает 1, 2, 3, 4 байта соответственно. Таким образом, чем больше число занимает места в файле, тем шире возможный диапазон значений для этого числа, а значит и больше точность амплитуды.
Для PCM-файлов точность (или разрядность) может быть следующей:
- 1 байт / 8 бит — -128…127
- 2 байта / 16 бит — -32 760…32 760
- 3 байта / 24 бита — -1…1 (с плавающей точкой)
- 4 байта / 32 бита — -1…1 (с плавающей точкой)
Но список возможных разрядностей на самом деле весьма шире, здесь представлены лишь наиболее популярные.
Совокупность амплитуды и короткого промежутка времени носит название сэмпл.
Заголовок
Итак, давайте рассмотрим первую часть WAV-файла подробнее. Следующая таблица наглядно показывает структуру заголовка:
Местоположение | Поле | Описание |
---|---|---|
0…3 (4 байта) | chunkId | Содержит символы «RIFF» в ASCII кодировке 0x52494646 . Является началом RIFF-цепочки. |
4…7 (4 байта) | chunkSize | Это оставшийся размер цепочки, начиная с этой позиции. Иначе говоря, это размер файла минус 8, то есть, исключены поля chunkId и chunkSize. |
8…11 (4 байта) | format | Содержит символы «WAVE» 0x57415645 |
12…15 (4 байта) | subchunk1Id | Содержит символы "fmt " 0x666d7420 |
16…19 (4 байта) | subchunk1Size | 16 для формата PCM. Это оставшийся размер подцепочки, начиная с этой позиции. |
20…21 (2 байта) | audioFormat | Аудио формат, список допустипых форматов. Для PCM = 1 (то есть, Линейное квантование). Значения, отличающиеся от 1, обозначают некоторый формат сжатия. |
22…23 (2 байта) | numChannels | Количество каналов. Моно = 1, Стерео = 2 и т.д. |
24…27 (4 байта) | sampleRate | Частота дискретизации. 8000 Гц, 44100 Гц и т.д. |
28…31 (4 байта) | byteRate | Количество байт, переданных за секунду воспроизведения. |
32…33 (2 байта) | blockAlign | Количество байт для одного сэмпла, включая все каналы. |
34…35 (2 байта) | bitsPerSample | Количество бит в сэмпле. Так называемая «глубина» или точность звучания. 8 бит, 16 бит и т.д. |
36…39 (4 байта) | subchunk2Id | Содержит символы «data» 0x64617461 |
40…43 (4 байта) | subchunk2Size | Количество байт в области данных. |
44… | data | Непосредственно WAV-данные. |
Вот и весь заголовок, длина которого составляет 44 байта.
Подводные камни
Выше мы рассмотрели простейший случай заголовка с одной подцепочкой перед областью данных. Но на практике встречаются и более сложные или даже непредвиденные сценарии, с которыми можно увязнуть надолго.
В chunkSize лежит заведомо слишком большое значение. Такое происходит, когда вы пытаетесь читать данные в режиме стриминга. Например, декодер LAME при выводе результата декодирования в STDOUT в этом поле возвращает значение 0x7FFFFFFF + 44 - 8 , а в subchunk2Size — 0x7FFFFFFF (что равно максимальному значению 32-разрядного знакового целочисленного значения). Это объясняется тем, что декодер в таком режиме выдаёт результат не целиком, а небольшими наборами данных и не может заранее определить итоговый размер данных.
Подцепочек может быть больше, чем две, например, при попытке декодировать аудио универсальным декодером ffmpeg 4.1.3 ffmpeg -i example.mp3 -f wav example.wav в декодированном файле помимо рассмотренных подцепочек fmt и data будет содержаться ещё одна LIST перед областью данных. Таким образом, когда вам понадобится добраться до данных, вам потребуется пропустить ненужные подцепочки, пока не встретится data . Это будет сделать не слишком сложно, так как можно читать ID подцепочки и её размер, и если она не data , то пропускать данные, основываясь на её размере.
Блок данных
В моно варианте значения амплитуды расположены последовательно. В стерео же, например, сначала идет значение амплитуды для левого канала, затем для правого, затем снова для левого и так далее.
Заметка о типах данных
WAVE или WAV является короткой формой Wave Audio File Format (реже именуемой как Аудио для Windows). Этот формат является стандартом для хранения аудио потока на ПК. Он является сферой приложения формата RIFF для хранения аудио в «цепочках», это очень напоминает форматы 8SVX и AIFF, используемые компьютерами Amiga и Macintosh соответственно. Это также основной формат на системах Windows для хранения обычного несжатого звука. Как правило, для этого применяется кодирование методом линейной импульсно-кодовой модуляции.
Описание
Как WAV, так и AIFF совместимы с операционными системами Windows, Macintosh или Linux. Формат также учитывает некоторые отличия процессоров Intel, такие как порядок байтов от младшего к старшему. RIFF формат выполняет роль обертки для различных кодеков аудио сжатия.
Несмотря на то, что WAV файл может содержать сжатое аудио, наиболее обычным его применением является хранение как раз несжатого аудио в формате линейной импульсно-кодовой модуляции (LPCM). Стандартным форматом Audio-CD, например, является аудио в формате LPCM, с 2 каналами, частотой дискретизации 44 100 Гц и 16 бит на сэмпл. Так как формат LPCM хранит несжатое аудио, которое абсолютно идентично оригиналу, это позволяет использовать его профессиональным пользователям и аудио экспертам для получения максимального качества звучания. WAV аудио файл также может быть изменен практически в любом аудио редакторе. WAV формат работает со сжатым звуком в системах семейства Windows через Audio Compression Manager (ACM). Любой ACM кодек может быть использован для сжатия WAV файла. Пользовательский интерфейс для ACM может быть доступен через множество программ, включая и стандартную программу для записи звука в некоторых версиях Windows.
Начиная с Windows 2000, появился заголовок WAVE_FORMAT_EXTENSIBLE, который позволял хранить многоканальные аудио данные, учитывал расположение динамиков, исключал неоднозначности в плане типов сэмпла и размеров контейнера в стандартном WAV формате. Также он поддерживал произвольные расширения формата чанка.
WAV файлы могут содержать встроенные IFF «списки», которые могут содержать несколько «подчанков».
Метаданные
Будучи форматом, производным от Resource Interchange File Format (RIFF), WAV-файлы могут иметь метаданные (тэги) в чанке INFO. В дополнение к этому, в WAV файлы могут быть встроены метаданные стандарта Extensible Metadata Platform (XMP).
Популярность
WAV файлы достаточно большие, что делает этот формат неудобным для обмена по сети Интернет, и это сильно подрывает его популярность. Однако, этот формат — как правило, чаще всего используется для сохранения первозданного вида для файлов высокого качества в таких случаях, где размер свободного дискового пространства не является ограничением. Он также используется в программах для редактирования аудио, где экономят время на сжатии и распаковке данных.
Более часто данные сжимаются с помощью форматов с потерями, такими как Ogg Vorbis, MP3, ATRAC, AAC, Musepack и WMA, которые используются для хранения и обмена музыки (например, среди пользователей Интернета). Небольшой размер файла и возможность быстро скачивать их также является существенным плюсом наряду с тем, что такие аудио данные занимают намного меньше места. Но форматы с потерями жертвуют качеством ради размера, поэтому их алгоритмы не сохраняют первозданное качество звука во всех деталях. Но существуют и кодеки без потерь, такие как FLAC, Shorten, Monkey’s Audio, ATRAC Advanced Lossless, Apple Lossless, WMA Lossless, TTA, WavPack, но ни один из этих кодеков нельзя назвать общепринятым.
Использование формата WAV является общепринятым, благодаря его простоте и простой структуре, которая в большой степени основана на формате файлов RIFF. Благодаря этому, формат WAV не испытывает притеснения среди различного программного обеспечения или аппаратных плееров, он поддерживается практически везде.
Назло огромному размеру данных несжатого WAV, этот формат иногда используется для радиовещания, особенно для адаптированных безкассетных систем. Радио BBC (BBC Radio) в Соединенном Королевстве использует 44.1 кГц, 16 бит, стерео аудио данные как стандарт в их системе VCS. Система ABC «D-Cart», которая разработана Австралийским радиовещателем, использует 48 кГц, 16 бит, стерео аудио данные, что идентично цифровым аудио кассетам (DAT).
Частота выборкиУказывает количество цифровых снимков в секунду звукового сигнала. Эта скорость определяет частотный диапазон аудиофайла. Чем выше частота дискретизации, тем ближе форма цифрового сигнала к исходному аналоговому сигналу. Низкая частота дискретизации ограничивает диапазон частот, который может быть записан, что может привести к плохой работе записи с оригинальным звуком.
В соответствии сТеорема выборки НайквистаЧтобы воспроизвести данную частоту, частота дискретизации должна быть как минимум вдвое больше этой частоты. Например, частота дискретизации CD составляет 44 100 выборок в секунду, поэтому частота может воспроизводиться до 22 050 Гц, что чуть выше предела человеческого слуха в 20 000 Гц.
AНизкая частота дискретизации, которая искажает исходную звуковую волну.
BВысокая частота дискретизации для полного воспроизведения оригинальной звуковой волны.
Общие частоты дискретизации для цифрового аудио
Частота выборки | Уровень качества | Частотный диапазон |
---|---|---|
11,025 Hz | Плохое радио AM (бюджетные мультимедиа) | 0–5,512 Hz |
22,050 Hz | Рядом с FM-радио (высококачественные мультимедиа) | 0–11,025 Hz |
32,000 Hz | Лучше, чем FM-радио (стандартная частота дискретизации) | 0–16,000 Hz |
44,100 Hz | CD | 0–22,050 Hz |
48,000 Hz | Стандартный DVD | 0–24,000 Hz |
96,000 Hz | Blu-ray DVD | 0–48,000 Hz |
Бит глубина
Битовая глубина определяет динамический диапазон. При дискретизации звуковых волн укажите значение амплитуды, наиболее близкое к исходной амплитуде звуковой волны для каждого сэмпла. Более высокая битовая глубина может обеспечить более возможные значения амплитуды, в результате чего в более широком диапазоне динамического, нижний опорный шумовой и более высокую точность.
Бит глубина | Уровень качества | Значение амплитуды | Динамический диапазон |
---|---|---|---|
8 бит | Телефон | 256 | 48 dB |
16 бит | Аудио CD | 65,536 | 96 dB |
24 бита | Аудио DVD | 16,777,216 | 144 dB |
32 бит | оптимальный | 4,294,967,296 | 192 dB |
Чем выше битовая глубина, тем больше обеспечен динамический диапазон.
PCM аудио данные
PCM (Импульсная кодовая модуляция) также называется импульсной кодовой модуляцией. Аудиоданные PCM - это чистый поток несжатых данных аудиосэмплов, которые представляют собой стандартные цифровые аудиоданные, преобразованные из аналоговых сигналов с помощью дискретизации, квантования и кодирования.
Хранение аудиоданных PCM
Если это монофонический аудиофайл, данные выборки сохраняются в хронологическом порядке (иногда они также сохраняются в режиме LRLRLR, но данные другого канала равны 0), если это двойной канал, обычно в соответствии с LRLRLR. Способ хранения зависит от размера машины. Режим с прямым порядком байтов показан ниже:
Аудиоданные PCM - это несжатые данные, поэтому они обычно относительно большие, общий формат MP3 сжимается, а скорость сжатия MP3 128 Кбит / с может достигать 1:11.
Параметры аудиоданных ИКМ
Как правило, когда мы описываем параметры аудиоданных PCM, существуют следующие способы описания:
44100 Гц относится к частоте дискретизации, что означает 44100 выборок в секунду. Чем больше частота дискретизации, тем больше места занято для хранения цифрового звука.
16 бит относится к точности выборки, что означает, что после дискретизации исходного аналогового сигнала каждая точка выборки представляется в компьютере 16 битами (два байта). Чем выше точность выборки, тем точнее могут быть представлены различия в аналоговых сигналах.
Стерео означает количество каналов, то есть количество микрофонов, используемых во время семплирования. Чем больше микрофонов, тем больше он может восстановить реальную среду семплирования (конечно, также указывается размещение микрофона).
Вообще говоря, чем больше амплитуда сигнала в данных PCM, тем больше объем.
Обработка аудиоданных PCM
Уменьшить громкость канала 1
Поскольку для аудиоданных PCM его амплитуда (то есть значение выборки точки выборки) представляет собой объем, поэтому мы можем уменьшить громкость канала, уменьшив значение данных канала ,
Из исходного кода видно, что после считывания 2-байтового значения выборки левого канала эта программа преобразует его в переменную короткого типа на языке Си. Значение делится на 2 и записывается обратно в файл PCM. На следующем рисунке показана диаграмма формы входных двухканальных аудиосэмплов PCM.
На следующем рисунке показана форма сигнала выходного левого канала после обработки. Видно, что амплитуда сигнала левого канала уменьшается вдвое.
PCM → WAV
WAV - это формат звукового файла, разработанный Microsoft и IBM для ПК, который соответствует спецификации файла RIFF (Resource Interchange File Format) и используется для сохранения аудиоинформационных ресурсов платформы Windows. Он широко поддерживается платформой Windows и ее приложениями. Файл WAVE обычно представляет собой просто файл RIFF с одним блоком «WAVE», который состоит из двух субблоков (блок субданных «fmt» и блок субданных «data»), и его формат показан на следующем рисунке:
Определение формата WAV
Суть этого формата заключается в добавлении заголовка файла перед файлом PCM. Значение каждого поля следующее:
Разбор заголовка файла WAV
Вот первые 72 байта файла WAVE, байты отображаются в виде шестнадцатеричных чисел:
Полевой анализ выглядит следующим образом:
PCM → WAV код 1
– EOF –
Файл WAV - это очень распространенный и самый классический мультимедийный аудиофайл на платформе ПК. Впервые он появился в операционной системе Windows 3.1 в августе 1991 года. Расширение файла - WAV, что является сокращением от WaveFom, также известного как волновой файл. Форму звуковой волны можно сохранить напрямую, и восстановленная кривая формы волны очень реалистична. Формат файла WAV, называемый форматом WAV, представляет собой цифровой аудиоформат для хранения звуковых сигналов. Он был разработан совместно Microsoft и IBM. Он несколько раз пересматривался и может использоваться в Windows, Macintosh, Linix и других операционных системах, как подробно описано ниже.
Базовые знания о волновых файлах
2.1 Процесс хранения волновых файлов
Звуковая волна, излучаемая источником звука, преобразуется через микрофон в непрерывно изменяющийся электрический сигнал. После усиления и фильтрации сглаживания он дискретизируется с фиксированной частотой. Каждый отсчет представляет собой значение амплитуды электрического сигнала, обнаруженного за период дискретизации; затем Затем он квантуется аналоговым электрическим сигналом в целое значение, представленное двоичным числом; наконец, он кодируется и сохраняется как данные аудиопотока. В некоторых приложениях для экономии места для хранения выборочные данные необходимо сжать перед сохранением.
2.2 Кодирование файлов WAV
Кодирование включает в себя два аспекта: один - хранить данные в определенном формате, а другой - использовать определенные алгоритмы для сжатия данных. Формат WAV не имеет жестких правил кодирования аудиопотоков. Он поддерживает формат импульсной кодовой модуляции несжатого PCM (Puls Code Modulation), а также поддерживает сжатую адаптивную импульсную кодовую модуляцию Microsoft Microsoft ADPCM (Adaptive Differential Puls Code Modulation), International Telegraph Стандарт сжатия голоса ITUG.711 a-law, ITU G.711-law, IMA ADPCM, ITU G.723 ADPCM (Yamaha), GSM 6.10, кодирование ADPCM ITU G.721 и другие алгоритмы сжатия, сформулированные Союзом (Международный телеграфный союз) . Кодирование MP3 также можно использовать в WAV, если вы установили соответствующий декодер, вы можете воспроизводить музыку MP3 в WAV.
Идентификатор блока (4 байта) |
Длина блока (4 байта) |
данные |
Таблица 2 Файловая структура WAVE
Блок РИФФ |
Тип формата файла "WAVE" |
блок fmt |
блок фактов (сжатый формат кодирования должен содержать этот блок) |
блок данных |
Таблица 3 Формат заголовка файла WAVE
Таблица 4 Общие форматы кодирования сжатия
Код формата | Название формата | длина блока fmt | блок фактов |
1(0x0001) | PCM / несжатый формат | 16 | |
2(0x0002 | Microsoft ADPCM | 18 | √ |
3(0x0003) | IEEE float | 18 | √ |
6(0x0006) | ITU G.711 a-law | 18 | √ |
7(0x0007) | ITU G.711 μ-law | 18 | √ |
49(0x0031) | GSM 6.10 | 20 | √ |
64(0x0040) | ITU G.721 ADPCM | √ | |
65,534(0xFFFE) | См. Формат кодирования в блоке подформатов | 40 |
Смещение | длина | тип данных | Имя поля | Описание поля |
24H | 2 | Целое число | Длина увеличенной области | 22 |
26H | 2 | Целое число | Эффективное количество образцов | Максимальное количество байтов на выборку * 8 |
28H | 4 | Длинное целое | Положение спикера | Двоичная маска для сопоставления номера канала с положением динамика |
32H | 2 | Целое число | Формат кодирования | Код реального формата кодирования |
34H | 14 | \x00\x00\x00\x00\x10\x00\x80\x00\x00\xAA\x00\x38\x9B\x71 |
Таблица 6 Принципиальная схема структуры блока фактов
Поле | длина | содержание |
ID блока | 4 | "fact" |
Длина блока | 4 | 4 (минимальное значение 4 байта) |
Общее количество образцов | 4 | Общее количество выборок (на канал) |
16-битный моно PCM, каждая точка выборки занимает 2 байта
0 канал
Младший байт
0 канал
Старший байт
0 канал
Младший байт
0 канал
Старший байт
16-битный вертикальный канал PCM, каждая точка выборки занимает 4 байта
0-левый тон
Младший байт канала
0-левый тон
Старший байт
1- правый тон
Младший байт канала
1- правый тон
Старший байт
2.3 Формат кодирования PCM
Кодирование PCM предназначено для непосредственного хранения несжатых данных, сгенерированных квантованием образцов звуковой волны, поэтому он рассматривается как чистый формат кодирования без потерь, и его преимущество состоит в том, что можно получить высококачественные аудиосигналы.
Формат WAV, основанный на кодировании PCM, является самым основным форматом WAV. Он напрямую поддерживается звуковой картой и может напрямую хранить дискретизированные звуковые данные. Сохраненные данные можно воспроизводить непосредственно через звуковую карту. Восстановленная волновая кривая очень близка к исходной звуковой форме. Качество на высшем уровне, оно лучше всего поддерживается платформой Windows и часто используется в качестве промежуточного файла для преобразования между другими закодированными файлами. Недостатком PCM является то, что размер файла слишком велик, что не подходит для длительной записи. Из-за этого появились различные форматы кодирования, разработанные на основе кодирования PCM, такие как кодирование DPCM, ADPCM и т. Д.
2.4 Три параметра, относящиеся к звуку
3 Файловая структура WAV
В среде Windows большинство мультимедийных файлов хранят информацию в соответствии с форматом файла обмена ресурсами (RIFF) для краткости. Базовая единица, составляющая файл RIFF, называется чанком. Каждый документ RIFF состоит из нескольких блоков. Каждый блок (чанк) состоит из трех частей: идентификатора блока, длины блока и данных. Его структура представлена в таблице 1.
Среди них идентификатор блока хранит имя блока, состоящее из 4 символов ASCII. Если он меньше 4 символов, заполните его пробелом справа. Поле длины блока, занимающее 4 байта, сохраняет длину данных текущего блока, исключая поля идентификатора блока и длины блока. Таким образом, фактическая длина блока равна значению в поле длины блока плюс 8. Формат RIFF предусматривает, что только блоки RIFF и LIST могут содержать субблоки, а другие блоки не могут содержать субблоки. Документ формата RIFF сам по себе является блоком. Первые 4 байта - это идентификатор документа "RIFF", который также является идентификатором блока RIFF, указывающим, что документ является действительным документом RIFF; вторая часть - это длина данных файла, занимающая 4 байта, а ее значение - длина файла. -8; Третья часть - это данные блока RIFF, среди которых первые 4 байта являются идентификатором типа формата файла, например: «WAVE», «AVI» и т. Д., А остальные части являются субблоками блока RIFF.
Файл WAV использует структуру формата RIFF. Он состоит как минимум из 3-х блоков, а именно RIFF, fmt и Data. Все файлы WAV, основанные на кодировке сжатия, должны содержать блоки фактов. Кроме того, все остальные блоки необязательны. Блок fmt, данные и факт - все это подблоки блока RIFF. Идентификатор типа формата файла для файлов WAV - "WAVE". Базовая структура представлена в таблице 2.
Формат заголовка файла 4WAV
Файл WAV состоит из двух частей: заголовка файла и тела данных. Среди них заголовок файла состоит из двух частей: поля идентификации файла и блока формата. Последний сохраняет параметры кодирования и параметры звука. Формат показан в таблице 3.
4.1 Блок расширенного формата
Когда в файле WAV используется кодирование, отличное от PCM, он использует блок расширенного формата, который представляет собой структуру данных, расширенную после блока базового формата fmt. Первые два байта структуры - это поле длины, указывающее длину следующей области. Область сразу после нее называется расширенной областью, которая содержит информацию расширенного формата, и ее длина зависит от типа кодирования сжатия. Когда определенный формат кодирования (например, a-law ITU G.711) делает длину области расширения 0, поле длины должно быть зарезервировано, но значение поля длины равно 0. Следовательно, минимальная длина блока расширенного формата равна длине блока 16 базового формата плюс 2.
4.2 Расширение блока формата
Когда код формата кодирования 0xFFFE, это расширенный идентификационный код. В настоящее время длина области расширения блока формата составляет 24 байта, включая вновь добавленные поля формата и реальный код формата кодирования.Формат показан в таблице 5.
4.3 блок фактов
Файлы WAV, использующие сжатую кодировку (формат кодировки, появившийся после Rev.3), должны содержать блоки фактов. Идентификатор блока - «факт». Длина блока не менее 4 байтов. В настоящее время блок фактов содержит только один элемент данных, который представляет собой общее количество выборок для каждого канала или общее количество выборочных кадров. Это значение можно вычислить, разделив длину данных в блоке ata на значение блока выравнивания блока данных. Хотя файлы, основанные на кодировании со сжатием, содержат блоки фактов, при реальных измерениях обнаружено, что исходные блоки фактов все еще существуют после преобразования файлов в формат кодирования PCM (см. Таблицу 6).
5 Организационная структура голосовых данных файла WAV
Звуковые данные файла WAV хранятся в блоке данных. Идентификатор блока - это «данные», а значение длины блока - это длина звуковых данных. Начиная с 9-го символа блока данных, это данные выборки звуковой волны. Каждая выборка записывается в порядке времени выборки. Количество байтов выборки зависит от количества бит выборки. Для многобайтовых выборок данные младшего байта помещаются в блок младшего адреса, а данные соседнего старшего байта помещаются в блок старшего адреса. Данные многоканальных образцов сохраняются поочередно. Например, порядок хранения значений стереофонических (двухканальных) выборок следующий: первое значение выборки канала 1, значение первой выборки канала 2; значение второй выборки канала 1, значение второй выборки канала 2 и т. Д. Расположение выборок данных на основе кодирования PCM показано в таблице 7-9.
6 Анализ случая
(1) «52 49 46 46» - это символ Ascii «RIFF». Эта часть является фиксированным форматом, указывающим, что это заголовок файла WAVE.
(2) «22 60 28 00» - это размер данных моего файла WAV. Этот размер включает все байты, кроме первых 4 байтов, которые равны общему количеству байтов в файле минус 8. Шестнадцатеричный формат «22 60 28 00» соответствует десятичной дроби «2646050».
(3) «57 41 56 45 66 6D 74 20» также является символом Ascii «WAVEfmt», который является фиксированным форматом.
Позже будет часть PCMWAVEFORMAT
(4) «12 00 00 00», это DWORD, соответствующий числу 18. Это соответствует размеру части определения PCMWAVEFORMAT. Вы можете видеть, что содержимое последней секции составляет ровно 18 байт. Как правило, размер равен 16. В конце отсутствует дополнительная информация. Вышеупомянутый файл содержит два байта дополнительной информации.
(5) «01 00», это СЛОВО, соответственно определенное как формат кодирования (обычно это используется в формате WAVE_FORMAT_PCM).
(6) «01 00», это СЛОВО, соответствующее числу 1, что означает, что количество каналов равно 1, что является моно WAV.
(7) «22 56 00 00» соответствует числу 22050, которое представляет частоту 22050 дискретизации, частоту дискретизации (количество отсчетов в секунду) и скорость воспроизведения каждого канала.
(8) «44 AC 00 00» соответствует числу 44100, которое представляет количество данных в секунду, скорость передачи аудиоданных формы сигнала, а его значение представляет собой количество каналов × количество выборок в секунду × количество бит данных на выборку / 8 (1 * 22050 * 16/8). Программное обеспечение воспроизведения может использовать это значение для оценки размера буфера.
(9) Соответствующее число «02 00» равно 2, что означает содержание выравнивания блока. Номер настройки блока данных (вычисляется в байтах), его значение - количество каналов × значение битов данных на выборку / 8. Программное обеспечение воспроизведения должно обрабатывать несколько байтов этого значения за раз, чтобы использовать его значение для настройки буфера.
(10) Значение «10 00» равно 16, а размер выборки - 16 бит.Количество битов данных на выборку указывает количество битов данных каждой выборки в каждом канале. При наличии нескольких каналов размер выборки для каждого канала одинаков.
(11) «00 00» здесь - дополнительная информация (необязательно), которая соответствует размеру в (4).
(12) «66 61 73 74» Fact является необязательным полем. Обычно, когда файл wav конвертируется каким-либо программным обеспечением, этот элемент включается. Размер поля «04 00 00 00» Fact составляет 4 байта, «F8 2F 14 00 »- это данные фактов.
(13) «64 61 74 61», это символ Ascii «данные», обозначающий конец заголовка и начало области данных.
(14) Шестнадцатеричное число «F0 5F 28 00» равно «0x285ff0», что соответствует десятичному числу 2646000, которое является началом области данных. Общее количество данных в будущем можно увидеть из предыдущего. Размер файла - 2646050. В (13), включая (13), ровно 2646050-2646000 = 50 байтов.
7 Заключение
Параметр, который имеет наибольшее влияние на формат WAV, - это формат кодирования. Форматы WAV, которые используют разные кодировки, различны: PCM - наиболее распространенный формат кодирования, а другие - сжатые форматы кодирования, которые обычно используются редко, а от некоторых отказались. По мере того, как люди начинают понимать, могут появиться новые форматы кодирования. В будущем, больше исследований формата файла WAV будет форматом кодирования сжатия.
Читайте также: