我正在尝试在我的树莓派上创建一种机器人来回答我的问题。
起初我是这样设计的,它只在听到它的名字时才回答,而且效果很好。但现在我正在添加更自然的对话,我偶然发现了一个问题。
每当机器人使用 aplay 命令说话时,arecord 命令会捕获自己的声音并发送给机器人进行处理。机器人无法区分我的声音和它自己的声音,所以它开始循环自言自语(很有趣,我必须补充一下)。
我检查了我的机器人代码,以验证听到的内容是否与所说的完全相同(在我将其转换为文本之后),但效果不是很好(有时它可以理解自己,几乎没有变化),并且需要一些额外的处理时间才能发现,我自己的命令没有被处理的时间,因为它试图找出它听到的声音是否是它自己的。
我想知道是否有办法让 arecord 的实例忽略 aplay 实例在同一台机器上所说的内容。我相信一个更底层的解决方案绝对是可能的(例如,我正在考虑如何在没有耳机的情况下使用Skype;它不需要使用语音识别来知道不要无限循环我朋友的声音)。
我一直在寻找解决方案,但我似乎找不到任何提及这个问题的内容(这似乎应该很常见)。也许我只是不知道现象的名称。想法?