Я новичок в анализе звука, но мне нужно выполнить (казалось бы) простую задачу. У меня есть байтовый массив, содержащий 16-битную запись (один канал) и частоту дискретизации 44100. Как выполнить быстрый анализ, чтобы получить объем в любой момент? Мне нужно вычислить порог, поэтому функция возвращает true, если она выше определенной амплитуды (объема) и false, если нет. Я думал, что могу перебирать байтовый массив и проверять его значение, причем 255 является самым громким, но это, похоже, не работает, даже когда я ничего не записываю, возникает фоновый шум, а часть массива заполняется 255. Любые предложения были бы замечательными. ThanksОбъем байт-массива
ответ
Поскольку у вас есть 16-разрядные данные, вы должны ожидать, что сигнал будет варьироваться от -32768 до +32767. Чтобы рассчитать объем, вы можете взять интервал примерно 1000 выборок и рассчитать их среднеквадратичное значение. Суммируйте значения квадратов выборки на 1000 и возьмите квадратный корень. проверьте этот номер на порог.
Обычно измеряют энергию волн, используя root mean square.
Если вы хотите быть более точным, вы можете принять сигнал временной области через сигнал discrete fourier transform в сигнал частотной области и интегрировать по величинам с некоторой функцией взвешивания (поскольку низкочастотные волны воспринимаются громче, чем высокие -частотные волны при той же энергии).
Но я не знаю аудиофайлов, так что я просто делаю вещи. ☺
Для «создания чего-то», это звучало неплохо! – 2010-12-06 03:38:45
Я могу попробовать применить скользящее окно со стандартным отклонением. OTOH, я бы не предположил, что 255 = самый громкий. Может быть, но я хотел бы знать, какая кодировка используется. Если какое-либо сжатие присутствует, то я сомневаюсь, что 255 «самый громкий».
- 1. Карта Объем контейнера данных объем
- 2. Объем и объем области углового корня
- 3. Объем NSTimer()
- 4. Объем сферы?
- 5. Объем typedefs
- 6. SystemSoundID Объем
- 7. Рассчитать объем
- 8. Android MediaPlayer игнорирует это внутренний объем, когда объем системы изменяется
- 9. Docker составляют названный объем: найти объем на хост-машине
- 10. синтаксического анализа вывода бото [Объем: т-14235987, Объем: т-1234567]
- 11. IllegalStateException: Нет Объем зарегистрирован объем «сеанс» на модульном тестировании
- 12. Do шаблоны имеют объем или объем, как вещь
- 13. Объем глобального Flash-плеера? Переопределить объем дочерних звуковых преобразований?
- 14. Динамически менять изолированный объем?
- 15. GeometryModel3D Площадь и объем
- 16. Объем B-rep?
- 17. Объем блока CATransaction
- 18. Объем AVAudioPlayer от переменной
- 19. Объем звука приложения
- 20. Объем потребляемой суммы SQL?
- 21. Обнаружить, когда объем установлен
- 22. угловой объем путаницы
- 23. доступа родительской директивы $ Объем
- 24. Объем этих переменных
- 25. Объем проблемы внутри React.createClass
- 26. Объем входящего потока Webrtc
- 27. Объем веб-разработки
- 28. Смутно зашифрованный объем EBS
- 29. рельсы HAS_MANY Объем
- 30. Объем не определен
Если это 16-разрядные данные, вам необходимо проверить пары байтов. – 2010-12-06 03:24:39
Я попытался преобразовать его в массив шорт. Я начал получать отрицательные значения и значения, превышающие 255. Это нормально? Если да, то что отрицательные значения представляют в одном канале и каково будет максимальное значение объема? спасибо – Brap 2010-12-06 03:38:40