gpt4 book ai didi

php - 在 Asterisk 拨号方案中将单词转换为数字

转载 作者:搜寻专家 更新时间:2023-10-31 21:39:30 24 4
gpt4 key购买 nike

我花了过去 3 周的时间试图让它发挥作用。我想使用 github 上提供的 googletts.agi 脚本从 Asterisk 进行语音拨号。它有效,但问题是 googletts 有时会在“话语”变量中返回一个单词而不是数字,例如 18004633339 可能会返回为“180046 tree tree tree nite”或“1800 force 6 tree tree 339”等。

https://github.com/zaf/asterisk-googlettshttps://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 变量,如果其中有单词,则将其修复为 Asterisk 可以调用的正确数字

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 默认字典更糟糕,它给出了类似的问题。

最佳答案

AGI , PHP-AGI你可以调用一个函数,即。 convert_word_to_numberset a Variable ,执行 AGI 脚本后,您可以在 Dialpan 中使用它。

在拨号方案中

exten => 2256,6,Set(NUM2CALL=${utterance})
exten => 2256,n,AGI(/home/asterisk/agi-bin/words_agi.php);

AGI 脚本:

#!/usr/bin/php -q
<?php
set_time_limit(30);
require_once 'phpagi.php';

// replace this function with yours
function convert_word_to_number($word) {
$words = array(
'tree',
'too',
// ...
);
$numbers = array(3,2)
// replace words with numbers - example only
$num = str_replace($words, $numbers, $word);
return $num;
}

$agi = new AGI();
$word = $agi->get_variable("NUM2CALL");
$spokenNumber = convert_word_to_number($word);
$agi->set_variable("NUM2CALL", $spokenNumber);

您只需实现更准确的 convert_word_to_number 版本即可将单词替换为数字,将其替换为您的函数。

关于php - 在 Asterisk 拨号方案中将单词转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12811727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com