如何使用 Aterisk 将移动呼叫集成到聊天机器人

如何使用 Aterisk 将移动呼叫集成到聊天机器人

我正在开发一个基于语音的聊天机器人,它可以呼叫某人并进行对话。目前,聊天机器人使用我的电脑麦克风和扬声器输入和输出音频。我正尝试通过移动网络集成它,以便用手机替换我的电脑麦克风和扬声器。请参阅链接中的框图以了解

相同的框图但不同的云

我从麦克风获取输入并将其提供给语音到文本转换器(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 还拥有电话集成服务(价格昂贵),可以接听电话、识别并通过回调向您发送结果。但同样,如果对方的语言不完美,识别质量会很差。

相关内容