我想重现active noise-control的效果使用普通耳机和 Linux 计算机的耳机,以便实时静音任何环境噪音(不仅仅是从背景噪音中清除声音输入)。
计划是通过 Alsa/Pulseaudio 环回麦克风输入,应用前馈窄带降噪滤波器(作为 LADSPA 滤波器?),然后将结果输出到耳机。
问题是我不知道从哪里开始过滤器部分:我应该如何将它连接到 Alsa/Pulseaudio?是否有某种 C API 可用于创建自定义过滤器?
最佳答案
1) 我建议在 Pulseaudio 中执行此操作;通过过滤器重定向 ALSA 输出将更加困难。
2) 已经有 module-ladspa-sink
之类的模块对于 Pulseaudio,详细信息,例如here .该模块将 LADSPA 处理的声音转发到 master
,但由于您需要麦克风输入和计算机声音输出,您可能必须使用一些其他模块(例如,组合接收器、空接收器作为虚拟输出接收器)和/或 pulseaudio 环回命令在不同的集合上转发它们 channel 到 LADSPA 模块。
也许您也可以加载两个 LADSPA 模块,将一个用作虚拟输出,将麦克风输入环回另一个,并从单个 LADSPA 插件处理这两个模块 - 我没有尝试过,但如果它有效,它可能会更简单。
3) Pulseaudio 也已经有降噪和回声消除模块,例如用于 Pulseaudio。在基于 Linux 的智能手机中;也许其中之一足以满足您的需求。谷歌。
4) 如果一切都失败了,或者如果仅 LADSPA 过滤器还不够,请查看 source此模块(或其他 Pulseaudio 模块),并相应地对其进行修改。
关于audio - 为 Alsa/Pulse 环回创建实时音频过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50539766/