2

我必须运行一个涉及用 python 编程的 NAO 机器人的项目。我要做的是分配一些关于向 NAO 显示的内容的知识。

例如:

  • 一个人给 NAO 看一张图片(在白板上手绘)
  • 这个人说“房子”(假设这个人画了一个房子)
  • NAO 现在知道显示的图片代表一所房子

我遇到的问题是在语音识别模块中。只能识别特定词汇中的单词。但是在我的项目设置中,一个人应该在白板上画画,然后告诉 NAO 那里画了什么。所以,意味着我不知道这个人要画什么,也不能提前设置词汇。

我的出发点是这里的本教程。正如您通过阅读教程所看到的,只能识别属于词汇表的某些单词,例如这行代码:

wordList=["yes","no","hello Nao","goodbye Nao"]
asr.setWordListAsVocabulary(wordList)

在识别期间,会引发一个名为 WordRecognized 的事件。它有这样的结构:

Event: "WordRecognized"
callback(std::string eventName, AL::ALValue value, std::string subscriberIdentifier)

当使用 ALSpeechRecognitionProxy::setWordListAsVocabulary() 的指定单词之一被识别时,会引发此问题。当前未识别任何单词时,将重新初始化该值。

所以我想我的答案的关键就在这里,但我需要帮助。我该如何解决这个问题?有没有更好的文档可以参考?

提前致谢!

4

1 回答 1

2

问题是 NAO 语音识别模块是专有的,我非常怀疑你可以用它做这样的事情。

但是,如果您考虑 ROS 平台和像 CMUSphinx 这样的开源引擎,您绝对可以为所欲为。将占位符单词包含在语法中很容易,该语法将与未知单词匹配,然后放入字典中。

这是一个非常复杂的研究问题,通过语音交互来学习词汇,但它是以前做过的。例如,您可以阅读此出版物

专有名词自动音标的组合系统 A. Laurent、T. Merlin、S. Meignier、Y. Esteve、P. Deleglise

http://www.lrec-conf.org/proceedings/lrec2008/pdf/455_paper.pdf

唯一的事情是您想在非常低的级别上使用识别器。

于 2014-02-03T13:11:32.927 回答