Расчет количества образцов в файле WAV - PullRequest
0 голосов
/ 26 мая 2018

Я сейчас просматриваю онлайн примеры и вот содержимое WAV файла в байтах

52 49 46 46 24 08 00 00 57 41 56 45 66 6d 74 20 10 00 00 00 01 0002 00 22 56 00 00 88 58 01 00 04 00 10 00 64 61 74 61 00 08 00 00 00 00 00 00 24 17 1e f3 3c 13 3c 14 16 f9 18 f9 34 e7 23 a6 3c f2 24 f2 11 ce 1a 0d

и вот визуальное;представление:

enter image description here

Таким образом, согласно Subchunk2Size в данных содержится 2048 байтов.Формула для расчета количества выборок в WAV имеет вид:

Subchunk2Size /(NumChannels * BitsPerSample/8 ) = NumSamples

Если я подключаю номера и согласно предоставленной информации, я получаю NumSamples = 512. Но на диаграмме частота выборки составляет 22050.Как общее количество образцов может быть меньше одной секунды?

1 Ответ

0 голосов
/ 04 апреля 2019

Для тех, кто интересуется, вот ссылка на источник.

Я подозреваю, что они просто используют плохой пример, где длительность wav-файла будет меньше секунды.Это не очень удовлетворительный ответ, и, возможно, вы уже знали об этом, но я все еще думал, что опубликую свой мыслительный процесс на случай, если кто-нибудь еще перешагнет через этот сайт и столкнется с той же проблемой.Их формула имеет смысл, и мы можем использовать ее для проверки размера данных wav-файла за одну секунду.

Если наша частота дискретизации составляет 22050 выборок / сек, а наш wav-файл составляет одну секунду, то numSamples = 22050.знать, что Subchunk2Size - это число байтов в данных, и его можно рассчитать по следующей формуле: Subchunk2Size = numSamples * numChannels * bitsPerSample / 8, поэтому, предполагая, что numChannels = 2 и bitsPerSample = 16, мы знаем, что одна секунда wav-файла должна быть (22050 * 2 * 16 / 8) bytes, что 88200 bytes, поэтому имеет смысл, что если Subchunk2Size равен 2048 байтам, как в примере с веб-сайтом, тогда длительность wav-файла будет меньше секунды и, следовательно, numSamples будет меньше 22050. Думаю, кто-нибудь?

...