为 JMF 构建 AEC(声学回声消除)滤波器的正确方法是什么?
我正在努力将 Speex 库连接到 JMF,以便进行语音活动检测/降噪,以及声学回声消除。 (我可能在将来的某个时候采用该编解码器,但这不是这种特定集成的主要目的)
前者相对简单,一个输入信号,一个输出信号,相同的格式,没有问题。我将其编码为 javax.media.Effect。
后一个过滤器更复杂,我想知道执行此操作的适当方法是什么。
JMF 有一个 Effect 类,我将为这两者实现,但 AEC 还需要播放信号作为输入,而不仅仅是麦克风输入。这对于效果插件来说很有趣,因为它要么需要一个数据接收器,要么有第二个效果接口仅用于处理扬声器信号。
class AECFilter {
javax.media.Effect getRecordingFilter(); // Does AEC
javax.media.Effect getPlaybackFilter(); // Samples the playback audio only
}
有没有更好的方法来做到这一点,或者这就是 AEC 滤波器需要编码的方式?
I'm working on connecting the Speex Library to JMF for the purpose of doing Voice Activity Detection/Noise reduction, and also for Acoustic Echo Cancellation. (I may adopt the codec at some point in the future, but that's not the primary purpose of this particular integration)
The former is relatively simple, one input signal, one output signal, same format, no problem. I'll code this as a javax.media.Effect.
The latter filter is the more complex, and I was wondering what the appropriate approach here is to doing this.
JMF has an Effect class that I will implement for both of these, but AEC also requires the playback signal as an input, not just the microphone input. This is interesting to feed into the effect plugin, as it will either need to be a data sink, or have a second effect interface just for processing the speaker signal.
class AECFilter {
javax.media.Effect getRecordingFilter(); // Does AEC
javax.media.Effect getPlaybackFilter(); // Samples the playback audio only
}
Is there a better way to do this, or is this how the AEC filter needs to be coded?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论