Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Dialogflow在3-4位数处切断数字输入_Regex_Dialogflow Es_Numeric_Voice Recognition - Fatal编程技术网

Regex Dialogflow在3-4位数处切断数字输入

Regex Dialogflow在3-4位数处切断数字输入,regex,dialogflow-es,numeric,voice-recognition,Regex,Dialogflow Es,Numeric,Voice Recognition,我目前正在制作语音助手,遇到以下问题: Google Dialogflow的语音检测严重破坏了我对助手的数字输入。 比如当我清楚地念出“一、九、八、七、二、三”时,它会变成987或1987。当它认为自己有一个完整的实体时,它似乎切断了倾听,并直接继续 我制作了一个定制的复合实体,它由三种不同的识别模式组成 @sys.number integer:number integer NumberRegex^([1-9]{1}([0-9]){1,4}[0-9]{1})$ NumberCardinals@

我目前正在制作语音助手,遇到以下问题:

Google Dialogflow的语音检测严重破坏了我对助手的数字输入。 比如当我清楚地念出“一、九、八、七、二、三”时,它会变成987或1987。当它认为自己有一个完整的实体时,它似乎切断了倾听,并直接继续

我制作了一个定制的复合实体,它由三种不同的识别模式组成

  • @sys.number integer:number integer
  • NumberRegex^([1-9]{1}([0-9]){1,4}[0-9]{1})$
  • NumberCardinals@sys.cardinal:cardinal(作为复合实体重复3-6次)
基本上,我想要检测的是一个数字输入,由最小3个数字和最大6个数字组成。 打字效果很好,它可以完美地检测所有组合,无论是基数还是数字

但是语音只是一个巨大的问题,它在用户结束讲话之前就被切断了


有人对如何克服这个问题有什么建议吗?并强制DialogFlow侦听最大数量的数字

我不认为它能解决问题,但是模式可以缩短为
^[1-9][0-9]{2,5}$
肯定不能解决问题,是的,这是一种更干净的方法来编写与上面相同的正则表达式,我这样做是因为我还想在数字之间留有空格。您原来的模式不会匹配数字之间的空格。如果要匹配数字之间的空格(不在第一个数字之前,也不在最后一个数字之后),可以使用
^[1-9](?:*[0-9]){2,5}$
如果要匹配空格,可以使用
\s*
替换空格和asterix。我在使用Google Assistant时遇到过这种情况。这不是Dialogflow的问题。正如您所提到的,当输入文本时,它工作正常。Dialogflow只处理从记录用户语音的设备中获取的内容。因此,在这种情况下,无论您使用什么设备,语音识别都是一个问题,您无法真正更改识别本身的任何内容。您是否尝试过引导用户不要说“一两”或“三四”,而是使用“十二”和“四十三”?在这一点上,识别效果比单个数字输入要好得多。