Как в реальном времени из звукового потока убрать громкие звуки и усилить тихие?

Какой алгоритм можно использовать для такой задачи?
Задача такова — звук из микрофона (в цифре) поступает на вход модуля? там каким-то образом обрабатывается, и идет на выход.
Вопрос: какой алгоритм использовать? Может кто подскажет исходники реализации такого алгоритма. Желательно на objective-c или С++.
  • Вопрос задан
  • 3552 просмотра
Пригласить эксперта
Ответы на вопрос 3
Fastto
@Fastto
То что вы ищите называется алгоритм АРУ (автоматическая регулировка усиления)

В простейшем случае можно реализовать так:
1) вычисляем скользящую среднюю уровня — например за 1/10 секунды
2) если вычисленный уровень меньше минимально допустимого, увеличиваем коэффициент передачи модуля на определенный шаг, иначе если уровень больше максимально допустимого, уменьшаем на определенный шаг
3) переходим к 1)

тут много ссылок
Ответ написан
Edro
@Edro
Бытрое реобразование Фурье — глушение гармоник выше нужного уровня — обратное БПФ — усиление нормализацией уровня громкости
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы