2013-02-23 2 views
2

В реальном времени для iphone есть приложение для аудио, которое добавляет некоторые эффекты (реверберация, задержка и т. Д.) Для ввода звука и воспроизведения его. Итак, у меня классический усилитель audio loop issue. Вы, наверное, знакомы с этим. Это происходит часто, когда вы помещаете микрофон близко к громкоговорителю (звук с входа усиливается, гаснет, возвращается и т. Д.).Проблема с обратной связью аудио в приложении iphone

Было бы здорово услышать любые идеи, как исправить это.

(я уже пытался:..

  1. ограничения громкости макс звука для предотвращения обратной связи с растущей
  2. Используйте фильтры, чтобы ограничить некоторые частоты
  3. Вычитанием ранее выходной сигнал от нового входного сигнала (который Я думаю, это лучший способ, но это не является совершенным. Даже если выбор времени хорош (я так думаю) этот метод портит звук слишком много)

Спасибо.

ответ

5

Ваш номер 3 и номер 2 вместе, вероятно, являются лучшими. Посмотрите на адаптивное акустическое эхоподавление.

AEC, использующий nLMS, довольно легко реализовать, но требует немного процессора. Он может работать, если вы используете более низкую частоту дискретизации, в зависимости от того, как долго в вашем эхом.

Существует быстрая версия, которая использует БПФ для адаптации. Он не адаптируется так быстро, но, вероятно, будет хорошо в мобильном приложении, где нет длинного хвоста эха.

Принцип работы AEC заключается в том, что он сходится по акустической модели для эхо-канала между громкоговорителем и микрофоном, а затем использует эту модель для вычитания выходного эха с микрофонного входа. Он знает, что происходит, он ставит это через модель и получает представление о том, каково будет эхо, а затем удаляет это эхо из ввода. С течением времени модель становится лучше, а эхо - меньше.

+0

Спасибо, посмотрю. – krafter

+0

Да. AEC + - это комбинация фильтров низких частот, верхних частот. – krafter

1

Возможно, вы уже знаете это, но только чтобы быть в безопасности - убедитесь, что вы направляете выход на правый динамик. Как говорится в in the docs, когда вы устанавливаете категорию аудиозаписей «воспроизведение и запись», выход по умолчанию - это верхний громкоговоритель (тот, на который вы положили ухо во время разговора). Внизу есть еще один динамик, и, поскольку он намного ближе к микрофону, он будет получать гораздо больше отзывов. Если вы установите категорию «играть и записывать», обычно требуется ручное переопределение, чтобы направить неправильный (нижний) динамик, но я думал, что упомянул об этом, чтобы быть уверенным.

+0

Стоит упомянуть, спасибо. Верхний динамик решит проблему, но он слишком тихий, поэтому я должен использовать нижний. – krafter

0

Чтобы помочь другим людям, пытающимся решить эту проблему: AEC плюс комбинация высокочастотных фильтров нижних частот.

http://speex.org, это часть AEC выполняет эту работу. High-pass, low-pass фильтры довольно просты в применении. (см. пример Apple AccelerometerGraph для LP, реализация фильтров HP)