2010-12-06 3 views
3

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

+0

Если это 16-разрядные данные, вам необходимо проверить пары байтов. – 2010-12-06 03:24:39

+0

Я попытался преобразовать его в массив шорт. Я начал получать отрицательные значения и значения, превышающие 255. Это нормально? Если да, то что отрицательные значения представляют в одном канале и каково будет максимальное значение объема? спасибо – Brap 2010-12-06 03:38:40

ответ

4

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

3

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

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

Но я не знаю аудиофайлов, так что я просто делаю вещи. ☺

+0

Для «создания чего-то», это звучало неплохо! – 2010-12-06 03:38:45

0

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

Смежные вопросы