我在 Amazon 开发者控制台中定义了自定义插槽类型,该插槽包含名称列表,如下所示。
homer simpson
ned flanders
principal skinner
comic book guy
然后我将示例话语定义如下。
PlayAudio to play {Name}
所以最后,我希望用户能够说出类似于以下内容的内容:
Alexa, ask the simpsons to play homer simpson
Alexa, ask the simpsons to play ned flanders
Alexa, ask the simpsons to play principal skinner
Alexa, ask the simpsons to play comic book guy
当然,Alexa 听错名字的可能性极高,因此我需要能够将听到的名字与插槽值之一尽可能匹配。
我将如何做到这一点,我是否必须在函数中对其进行编码,或者是否有更好的方法?
最佳答案
使用自定义槽时,Alexa 有可能提供列表中没有的值。随着列表规模的增大,这会变得特别成问题。按照 Tom 建议使用 Beta 测试功能可能会有所帮助,但您将无法发现所有问题,并且最终无法扩展。
我发现,完全确保您从列表中获得值(value)的唯一方法是在技能中拥有完整的列表并每次都进行检查。为了进行检查,精确匹配并不总是最好的选择,我尝试了两种方法:
- 字符串编辑距离功能:当用户可能说出不完整的话语或向列表中的话语添加单词时,效果很好。检查:https://en.wikipedia.org/wiki/Edit_distance
- 声学/语音:相对容易实现,可能更适合识别外来词或专有名称。您可以预处理列表以进行快速比较。检查:https://en.wikipedia.org/wiki/Soundex
关于node.js - 引导 Alexa 做出特定槽值响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44604620/