Читайте данные WAV-файла за каждые 160 микросекунд - PullRequest
0 голосов
/ 13 мая 2019

Как извлечь данные, соответствующие определенным временным интервалам, из файла .wav?

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

Теперь я отделил заголовок и получил следующую информацию:

Channels: 2, 
Frames: 632956
Sample Rate: 44100, 
Block Align: 4
Valid Bits: 16, 
Bytes per sample: 2

Для разделения образцов, соответствующих каждые 160 микросекунд, я не могу рассчитать. Я попробовал следующий способ:

Total bits per 160-microsecond = ((sampling_rate * bit depth) / (time))
 = ((44100 * 16) / (160 * 1000000)) = 0.00441 bits.

Я уверен, что в приведенном выше расчете есть ошибка, поскольку существует 44100 выборок в секунду и, следовательно, для 160 микросекунд должен существовать счетчик битов, который является положительным натуральным числом и не может быть десятичным значением.

Может кто-нибудь помочь с этим расчетом? Спасибо.

1 Ответ

0 голосов
/ 14 мая 2019

Если частота дискретизации составляет 44,1 кГц, это означает, что между выборками имеется зазор 1/44100 или около 22,675 мкСек.
В кадре 160uSec содержится около 7 сэмплов (160 / 22,675 = 7,05), поэтому вам нужно прочитать 7 сэмплов.
Помните, что ваш файл содержит 2 канала и что глубина составляет 2 байта, поэтому внутри кадра 160uSec у вас есть 28 байтов - 14 для каждого канала.

...