我一直在玩一些语音到文本和文本到语音的系统,并且遇到了一个问题,即当计算机发出它可以识别的声音时,它开始从自身接收命令。为避免这种情况,我想要麦克风拾取的所有声音流,这些声音不是由计算机本身产生的。
我看到 PulseAudio 有一个回声消除模块,但到目前为止,我无法区分它的输出和原始麦克风输出:它仍然包含麦克风拾取的来自计算机扬声器的所有声音。我想知道默认的回声消除器是否与我想要的相反(即,它消除了麦克风听到的声音被发送到扬声器)。
知道我该怎么做(最好用pacmd
)?我已经彻底混淆了自己试图为回声消除器指定非默认源,并徘徊在环回模块和其他可能不相关的东西中。我对 PulseAudio 知之甚少,还没有找到很好的介绍(我查看了很多PulseAudio 文档,但没有看到任何相关内容),并且可能只是遗漏了一些简单的东西。我对回声消除显然不起作用感到沮丧,我找不到有关它的文档,也找不到其他人的工作示例。
在此先感谢您的帮助!
其他可能相关的细节:我在联想 Thinkpad T410 上运行 Ubuntu Saucy。我使用的是内置麦克风和扬声器(所以,我很确定他们使用的是同一张声卡,我不会遇到时钟漂移问题)。我的实际应用程序通过 GStreamer 获得声音,但 GStreamer 从 PulseAudio 获得声音,而且我认为 GStreamer 本身没有 AEC 功能。如果有不同的方法可以做到这一点,我很乐意切换到那个。