Я работаю над подключением библиотеки 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 должен быть закодирован?