Использование DCT для создания анимации «уровней» в реальном времени для входа микрофона.IOS

Программируем под IOS
Ответить
Anonymous
 Использование DCT для создания анимации «уровней» в реальном времени для входа микрофона.

Сообщение Anonymous »

Для контекста: я пытаюсь создать простую анимацию «монитора уровня» потоковой передачи аудиоданных с микрофона. Я запускаю этот код на устройстве iOS и в значительной степени опираюсь на платформу Accelerate для обработки данных.
На многое из того, что у меня есть до сих пор, сильно повлиял этот пример проекта от Apple: https://developer.apple.com/documentati ... pectrogram
Вот какие шаги я предпринимаю в настоящее время:
  • Начать прием (Int16) сэмплов с микрофона с помощью AVFoundation.
  • Сохранять сэмплы до тех пор, пока у меня не будет хотя бы 1024 семпла, а затем отправить первые 1024 семпла в мой алгоритм обработки. >
  • Преобразуйте выборки в денормализованное число с плавающей запятой (с плавающей запятой одинарной точности).
  • Примените к выборкам окно Хэннинга, чтобы предотвратить наложение псевдонимов, поскольку количество выборок довольно мало. , из соображений производительности.
  • Запустите прямое преобразование DCT-II выборок временной области в выборки частотной области.
  • Абсолютное значение для всех образцы.
  • "Группируйте" образцы так, чтобы они соответствовали количеству столбцов, которые мне нужно анимировать... для каждых 1024/n образцов найдите максимальное значение в каждом диапазоне.
  • Нормализация каждого интервала в диапазоне 0...1 путем деления каждого на образец с наивысшей магнитудой, который был обнаружен в глобальном масштабе.
Честно говоря, после 5-го шага у меня просто нет интуитивного понимания того, что происходит со значениями частотной области. Я понимаю, что более высокое значение означает, что частота, представленная одним значением, более распространена в данных во временной области... но я не знаю, что означает значение, скажем, 12 или 6492.
В любом случае, конечным результатом является то, что самый низкий бин (0...255) имеет мощность, которая по сути представляет собой просто общую амплитуду, в то время как три верхних бина никогда не поднимаются выше 0,001. Я чувствую, что нахожусь на правильном пути, но мое незнание того, что означает вывод DCT, не позволяет мне понять, что здесь происходит не так. Я мог бы также использовать БПФ, если бы это дало лучший результат, но я понимаю, что БПФ и ДКП дают аналогичные результаты, и Apple рекомендует ДКП для повышения производительности.

Подробнее здесь: https://stackoverflow.com/questions/784 ... hone-input
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»