2015-12-26 8 views
1

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

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

Я узнал это:

1000 * bytesLength/4/rate_hz 

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

ответ

2

Существенных факторов балансировочных от качества от потребностей в ресурсах на сырье аудио в формате 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 
+0

В своем первом уравнении 'bit_depth' был разделен на' 2', но в следующем уравнении (тот, который вы говорите, о котором просит OP), '2' ушел. Не могли бы вы объяснить, почему? – nacho4d

+1

8 бит на 1 байт ... так битовая глубина 16 бит == (16 бит/8) байтов == 2 байта на образец ... хороший улов теперь исправлен –