![如何使用 Aterisk 将移动呼叫集成到聊天机器人](https://linux22.com/image/1560231/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20Aterisk%20%E5%B0%86%E7%A7%BB%E5%8A%A8%E5%91%BC%E5%8F%AB%E9%9B%86%E6%88%90%E5%88%B0%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA.png)
我正在开发一个基于语音的聊天机器人,它可以呼叫某人并进行对话。目前,聊天机器人使用我的电脑麦克风和扬声器输入和输出音频。我正尝试通过移动网络集成它,以便用手机替换我的电脑麦克风和扬声器。请参阅链接中的框图以了解
我从麦克风获取输入并将其提供给语音到文本转换器(S2TC),并将聊天机器人给出的响应提供给文本到语音(T2S)转换器。
import speech_recognition as sr
from speechtotext import convert_speech_to_text
r = sr.Recognizer()
with sr.Microphone() as source:
# in_audio is the mic input
in_audio = r.listen(source)
# bot give response based on input audio
bot_response = chatbot(convert_speech_to_text(in_audio))
out_audio = convert_text_to_speech(bot_response)
现在我尝试利用 Asterisk 连接网络并集成移动设备和我的聊天机器人。为此,我需要将移动设备上说的任何话作为“in_audio”接收,并将“out_audio”通过网络发送。
在这里,机器人发起呼叫,我刚刚收到一个链接拨打电话,但是我如何通过网络接收或捕获 in_audio 以发送到我的程序或转换器,并将 out_audio 发送给用户。有没有星号功能可以做到这一点?如果无法配置星号,有什么方法可以将移动网络集成到语音机器人中吗?
我正在 Windows 中使用 python 和 bing 语音到文本转换器构建应用程序。
注意:我是星号的新手。
答案1
Asterisk 具有可用于此目的的 audiohooks 接口(需要 c/c++ 编码)
还有 EAGI 接口(文件句柄号 3 可以接收声音)。
这种机器人的主要问题是无法连接。电话服务使用 8khz 语音,这不足以正确识别。没有办法改变更好的语音,目前 PSTN/GSM 连接上的所有编解码器都是 8khz 编解码器。
IBM Watson 还拥有电话集成服务(价格昂贵),可以接听电话、识别并通过回调向您发送结果。但同样,如果对方的语言不完美,识别质量会很差。