0

我尝试做的事情和实际做的事情的简短总结。

在我的项目中,我有两个简单的节点:一个用于收听和发布,另一个用于说和订阅。我分别将它们命名为 listenerNode 和 speakNode。

我想要完成的任务非常简单,我会让用户说“记住我”,这将被识别为关键字并发布到voiceCommandCallback说话节点中的方法,这样我的机器人就可以说“好的,请说出你的名字”。然后,回到侦听节点,除了发布该关键字短语之外,它还将调用recognize_from_mic_with_dict()您可以猜到的将使用名称字典运行的方法。

recognize_from_mic_with_dict()方法将侦听名称并将尝试将该名称发布到namesCallback()侦听节点中,这是我检查发布的内容是实际名称还是只是胡言乱语的地方,在这种情况下,我会问用户重复他/她的名字并再次订阅,recognize_from_mic_with_dict()以便它可以再次收听。

这听起来可能更复杂,但这是我能想到的实现这种“模式切换”的唯一方法。问题是,如果它听到胡言乱语,它会说“对不起,我没听清楚。请重复一遍!” 我想知道是否有办法让监听节点忽略机器人所说的任何内容,因为它试图从自己的句子中识别名字。

4

1 回答 1

0

您可以将其视为反馈控制问题。鉴于 :

  • u 是用户语音信号
  • r是机器人扬声器的输出信号,
  • h 反馈路径函数,
  • s=h*r 反馈信号;* 指卷积
  • y = s + u = h*r + u 麦克风的输入信号

问题是估计 ĥ 和因此 ŝ (r 已知),因此用户语音信号的估计由 û = y - ŝ = y - ĥ * r

于 2017-04-13T20:13:58.550 回答