Объем из байтового массива - PullRequest
       25

Объем из байтового массива

3 голосов
/ 06 декабря 2010

Я новичок в аудиоанализе, но мне нужно выполнить (казалось бы) простую задачу.У меня есть байтовый массив, содержащий 16-битную запись (один канал) и частоту дискретизации 44100. Как мне выполнить быстрый анализ, чтобы получить громкость в любой момент?Мне нужно рассчитать порог, поэтому функция должна возвращать значение true, если оно превышает определенную амплитуду (объем), и значение false, если нет.Я подумал, что мог бы пройтись по байтовому массиву и проверить его значение, причем 255 - самый громкий, но, похоже, это не сработает, так как даже когда я ничего не записываю, появляется фоновый шум и часть массива заполнена255. Любые предложения будут великолепны.Спасибо

Ответы [ 3 ]

4 голосов
/ 06 декабря 2010

Поскольку у вас есть 16-битные данные, вы должны ожидать, что сигнал будет варьироваться от -32768 до +32767.Для расчета объема вы можете взять интервалы, скажем, 1000 образцов, и рассчитать их среднеквадратичное значение.Суммируйте квадратные значения выборки, разделите на 1000 и возьмите квадратный корень.сравните это число с вашим порогом.

3 голосов
/ 06 декабря 2010

Обычно измеряют энергию волн, используя среднеквадратичное значение .

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

Но я неЯ тоже не знаю аудио, поэтому я просто придумываю.☺

0 голосов
/ 06 декабря 2010

Я мог бы попробовать применить скользящее окно со стандартным отклонением. OTOH, я бы не предположил, что 255 = самый громкий. Возможно, но я бы хотел знать, какая кодировка используется. Если присутствует какое-либо сжатие, то я сомневаюсь, что 255 "самый громкий".

...