Оценить продолжительность из необработанных данных аудио массива звукового фрагмента

Как оценить длительность звукового фрагмента из необработанных данных массива?

Я получаю необработанные данные с микрофона и знаю частоту дискретизации и количество каналов. Мне нужна математическая формула для расчета продолжительности этого аудиофрагмента.

Я узнал это:

1000 * bytesLength / 4 / rate_hz

Но я думаю, что это неправильно.


person Dima Melnik    schedule 26.12.2015    source источник


Ответы (1)


Существенные факторы, уравновешивающие качество и требования к ресурсам для необработанного звука в формате PCM:

 Attribute     Typical Values
____________  _________________
bit_depth     16 bits per sample (8 bits per byte)        ... higher the better
num_channels  2 for stereo (or 1 for mono), lets use stereo
sample_rate   44100 samples per second (CD quality audio) ... higher the better

Эта формула выражает связь между вышеуказанными переменными:

storage_in_bytes / second == num_channels * sample_rate * bit_depth / 8

решение за секунды: (вот уравнение, которое вы просите)

duration in seconds = storage_in_bytes/(num_channels * sample_rate * (bit_depth/8))

подключая использование вышеуказанных переменных, нам нужно предоставить либо storage_in_bytes, либо продолжительность в секундах, поэтому, если

storage_in_bytes = 2 mb = 2097152 bytes

тогда мы получаем

duration = 2097152/(2 * 44100 * (16/8)) = 11.89 seconds
person Scott Stensland    schedule 28.12.2015
comment
В вашем первом уравнении bit_depth было разделено на 2, но в следующем уравнении (том, которое, как вы говорите, запрашивает ОП) 2 исчезло. Не могли бы вы объяснить, почему это так? - person nacho4d; 28.12.2015
comment
8 бит на 1 байт ... поэтому битовая глубина 16 бит == (16 бит / 8) байт == 2 байта на выборку ... теперь исправлен хороший улов - person Scott Stensland; 28.12.2015