我花了最后 3 周的时间试图让它发挥作用。我想使用 github 上提供的 googletts.agi 脚本从星号进行语音拨号。它可以工作,但问题是 googletts 有时会在“话语”变量中返回一个单词而不是一个数字,例如 18004633339 可能会返回为“180046 tree tree tree nite”或“1800 force 6 tree tree 339”等。
https://github.com/zaf/asterisk-googletts https://github.com/zaf/asterisk-speech-recog
下面的链接有一个将单词转换为数字的脚本
http://www.karlrixon.co.uk/writing/convert-numbers-to-words-with-php
这是我的拨号方案
exten => 2255,1,Answer()
exten => 2255,n,Wait(1)
;exten => 2255,n,flite("Say the number you wish to call. Then press the pound key.")
exten => 2255,n,Espeak("Say the number you wish to call. Then press the pound key.")
exten => 2255,n(record),agi(speech-recog.agi,en-US)
exten => 2255,n,Noop(= Script returned: ${status} , ${id} , ${confidence}, ${utterance} =)
exten => 2256,6,Set(NUM2CALL=${utterance})
此处需要代码,该代码将采用 ${utterance} 或 NUM2CALL 变量,如果其中有单词,则将其修复为星号可以拨打的正确号码
exten => 2255,n,SayDigits("${NUM2CALL2}")
exten => 2255,n,Background(vm-star-cancel)
exten => 2255,n,Background(vm-tocallnum)
exten => 2255,n,Read(PROCEED,beep,1)
exten => 2255,n,GotoIf($["foo${PROCEED}" = "foo1"]?15:16)
exten => 2255,15,Goto(outbound-allroutes,${NUM2CALL2},1)
exten => 2255,16,hangup
我在想,如果我可以添加到字典数组中,我最终将拥有一个非常准确的语音拨号器。我花了 4 天时间测试 tropo ASR,它对于个位数来说非常准确,但多位数的准确度会很快下降。提前感谢您的任何帮助。我会将完成的脚本作为项目发布在 github 上。我也尝试使用pocketphinx 使用TIDIGITS 语法和模型,但这比pocketsphinx 默认字典更糟糕,它给出了类似的问题。