Как правильно структурировать фильтр AEC (Acoustic Echo Cancellation) для JMF? - PullRequest
2 голосов
/ 12 июля 2011

Я работаю над подключением библиотеки Speex к JMF с целью обнаружения голосовой активности / уменьшения шума, а также для подавления акустического эха.(Я могу принять кодек в какой-то момент в будущем, но это не является основной целью этой конкретной интеграции)

Первый вариант относительно прост: один входной сигнал, один выходной сигнал, тот же формат, без проблем.Я закодирую это как javax.media.Effect.

Последний фильтр является более сложным, и мне было интересно, какой подход здесь подходит для этого.

JMF имеетКласс эффектов, который я реализую для обоих из них, но AEC также требует сигнал воспроизведения в качестве входа, а не только вход микрофона.Это интересно использовать в плагине эффектов, так как он должен быть либо приемником данных, либо иметь второй интерфейс эффектов только для обработки сигнала динамика.

class AECFilter {
  javax.media.Effect getRecordingFilter();  // Does AEC
  javax.media.Effect getPlaybackFilter();   // Samples the playback audio only
}

Есть ли лучший способ сделать это?это, или это то, как фильтр AEC должен быть закодирован?

...