首页 > 编程语言 >【编程实践】利用 Python 调用图灵机器人 API 实现实时语音聊天及自动回复

【编程实践】利用 Python 调用图灵机器人 API 实现实时语音聊天及自动回复

时间:2022-12-29 10:32:03浏览次数:65  
标签:itchat Python 微信 机器人 图灵 API get data

前言

什么是图灵机器人

在人工智能技术飞速发展的今天,很多以前科幻电影里面的高科技都已经变为现实,而且充斥着我们生活的方方面面,比如说机器人,说说话就能把很多时办了。生活中最常见机器人的有:小米的小爱同学,天猫精灵,华为的小艺,苹果的 siri,微软的小冰以及我们今天用到的图灵机器人等等,他们能够模拟人类对话,这是这类机器人最基本的功能

介绍之前先附上图灵的官网:​​http://www.turingapi.com​

图灵机器人是一款可定制的多场景智能聊天机器人的开放平台,通过调用图灵机器人的 API 即可构建属于自己聊天机器人,我们可以创建一个微信机器人或者 QQ 聊天机器人以供我们娱乐,给无聊的时光带来一丝欢乐。目前图灵机器人对中文语义理解准确率已达 90%,并且具备准确,流畅,自然的中文对话能力,可以满足自然语言对话的需求。完成自动聊天机器人需要了解图灵机器人的知识与原理。

对话体验

流畅自然 自研的增强学习模型,让机器人聊天对话更接近真人

情感交互 23 类情绪识别及多维情感表达,让机器人更拟人化

记忆系统 通过深度记忆系统与用户画像,让机器人更懂你

更多其它介绍可到官网了解,本文主要实现图灵机器人的聊天功能

【编程实践】利用 Python 调用图灵机器人 API 实现实时语音聊天及自动回复_自动化办公

1.使用之前当然是先要注册,以及实名制(以前图灵接口是免费的,现在需要收费基础版本要 19.9,可到官网了解)

【编程实践】利用 Python 调用图灵机器人 API 实现实时语音聊天及自动回复_微信_02

2.然后获取图灵机器人 API:创建一个机器人,并配置机器人相关参数

【编程实践】利用 Python 调用图灵机器人 API 实现实时语音聊天及自动回复_AI_03

【编程实践】利用 Python 调用图灵机器人 API 实现实时语音聊天及自动回复_图灵机器人_04

自动回复

要实现自动回复需要大量的文本数据来训练机器人.提供大量的问答对话训练,让机器人学习其中的对话规律,训练过程也是在构建和丰富机器人的词库,我们常说的词穷,就是我们词汇量储备不足,所以机器人要想能更流畅对话需要更丰富的词库来训练.这样我们就可以实现一个能够与人流畅对话的聊天机器人.比如:当我们收到微信好友发来的消息时,我们如果没有空回复,我们可以将这个消息,传给图灵机器人的 API,他会根据消息做相应的答复,我们再将答复返回给微信好友.

特别提示

特别提示:itchat大多微信基本用不了,特别是2017年后新注册的微信,虽然不能使用itchat库进行微信自动回复,如果itchat无法使用还可以使用wechat-hook进行微信的相关操作.感兴趣的同学可以自行了解,本文主要针对图灵机器人API的使用,对于wechat-hook的使用这里不展开,有机会可以单独唠唠,除了上述方法,你还可以通过控制电脑的的方式进行自动操作,特别强调的是,WeChat-hook或者其他微信操作接口一定要谨慎使用,以免被封号,最终要的是,不要做非法或者违法操作.

安装 itchat 模块

itchat 模块是 Python 实现的微信接口,itchat 的安装命令如下:

​pip3 install itchat​

​pip3 install itchat itchat-uos ​

【编程实践】利用 Python 调用图灵机器人 API 实现实时语音聊天及自动回复_人工智能_05

itchat 介绍

itchat.content 中包含的所有的消息类型参数如下:

TEXT:文本内容

MAP:位置文本/位置分享

CARD:推荐人字典

SHARING:分享名称

RECORDING:语音的下载方法

VIDEO:小视频的下载方法

ATTACHMENT:附件的下载

NOTE:通知文本

SYSTEM:更新内容用户

itchat 登录流程

itchat 提供了登陆所需的每一步的方法,登陆的过程按顺序为: 获取二维码 uuid->获取二维码->判断是否已经登陆成功->获取初始化数据->更新微信相关信息(通讯录、手机登陆状态)->循环扫描新信息(开启心跳)

获取二维码 uuid

获取生成二维码所需的 uuid,并返回。

方法名称: get_QRuuid 所需值:无返回值:成功->uuid,失败->None

获取二维码

根据 uuid 获取二维码并打开,返回是否成功。

方法名称: get_QR 所需值:uuid 返回值:成功->True,失败->False

判断是否已经登陆成功

判断是否已经登陆成功,返回扫描的状态码。

方法名称: check_login 所需值:uuid 返回值:登陆成功->'200',已扫描二维码->'201',二维码失效->'408',未获取到信息->'0'

获取初始化数据

获取微信用户信息以及心跳所需要的数据。

方法名称: web_init 所需值:无返回值:存储登录微信用户信息的字典

获取微信通讯录

获取微信的所有好友信息并更新。

方法名称: get_contract 所需值:无返回值:存储好友信息的列表

更新微信手机登陆状态

在手机上显示登录状态。

方法名称: show_mobile_login 所需值:无返回值:无

循环扫描新信息(开启心跳)

循环扫描是否有新的消息,开启心跳包。

方法名称: start_receiving 所需值:无返回值:无

编程实践

  1. 导入 itchat 和 requests 模块
  2. 使用 requests 库进行的接口的请求,通过请求调用执行图灵的机器人接口,实现聊天对话内容获取
  3. 将得到的内容返回给好友
  4. 扫描二维码登录客户端,连接程序自动回复消息

代码实现

导入 itchat 和 requests 库

import requests
import itchat

通过 API 连接图灵机器人,并接收从图灵机器人返回的消息

KEY = '************'


def get_response(msg):
apiUrl = 'http://www.tuling123.com/openapi/api'
data = {
'key': KEY,
'info': msg,
'userid': 'wechat-robot',
}
try:
r = requests.post(apiUrl, data=data).json()
r.encoding = 'utf-8' # 防止中文乱码
return r.get('text')

except:
return

定义图灵机器人回复方法,将接受到的信息进行编辑然后返回,并发送消息给朋友

@itchat.msg_register(itchat.content.TEXT)
def tuling_reply(msg):
defaultReply = 'I received: ' + msg['Text']
reply = get_response(msg['Text'])
return reply or defaultReply

手机扫屏幕弹出的二维码,在电脑上进行登录,登录成功后即可实现自动回复

itchat.auto_login(hotReload=True)
itchat.run()

实现机器人语音聊天

也许微信自动聊天无法使用,但是娱乐操作不能少,你还可以使用Python实现语音聊天

pip install SpeechRecognition
pip install pyAudio
需要安装pyAudio,如果不能安装,可以去Python Extension Packages下载安装。
还需要安装百度语言识别库
pip install baidu-aip

完整代码如下:

import requests
import speech_recognition as sr
from aip import AipSpeech

KEY = '3104727d87f7421d951fb9d07cbe5a7c'
BAIDU_APP_ID = '15452710'
BAIDU_API_KEY = 'gO7RyqqMOX5SuTS5pP3GLEtG'
BAIDU_SECRET_KEY = 'NvdiiCoRGQfkda8XZZUei75p8Mazn73K'
aip_speech = AipSpeech(BAIDU_APP_ID, BAIDU_API_KEY, BAIDU_SECRET_KEY)


def get_response(msg):
# apiUrl = 'http://www.tuling123.com/openapi/api'
apiUrl = 'http://openapi.tuling123.com/openapi/api/v2'
data = {
'key': KEY,
'info': msg,
'userid': 'wechat-robot',
}
try:
r = requests.post(apiUrl, data=data).json()
return r.get('text')
except:
return

r = sr.Recognizer()
# 麦克风
mic = sr.Microphone(sample_rate=16000)
while True:
print('正在录音中,,说完请等待片刻...')
with mic as source:
r.adjust_for_ambient_noise(source)
audio = r.listen(source)
#print('录音结束,识别中...')
#print(type(audio))
audio_data = audio.get_wav_data()
#print(type(audio_data))
# 识别本地文件
ret = aip_speech.asr(audio_data, 'wav', 16000, {'dev_pid': 1536, })
#print(ret)
if ret and ret['err_no'] == 0:
result = ret['result'][0]
print(result)
print(get_response(result))

else:
print('错误:',ret['err_msg'])

标签:itchat,Python,微信,机器人,图灵,API,get,data
From: https://blog.51cto.com/micai01/5976332

相关文章

  • Python进阶—Pandas
    Pandas再来一次文章目录​​一、Series和DataFrame​​​​二、选择数据​​​​三、赋值及操作(增、删、改)​​​​四、处理丢失数据​​​​五、读取并写入文件​​​​......
  • Python进阶—Numpy
    Numpy再来一遍文章目录​​一、Numpy的属性​​​​二、创建array​​​​三、Numpy的运算​​​​四、随机数生成及矩阵的统计​​​​五、Numpy索引​​​​六、合并​......
  • 简单聊下.NET6 Minimal API的使用方式(转)
    前言#    随着.Net6的发布,微软也改进了对之前ASP.NETCore构建方式,使用了新的MinimalAPI模式。之前默认的方式是需要在Startup中注册IOC和中间件相关,但是在MinimalA......
  • FastAPI 记录笔记
    https://fastapi.tiangolo.com/安装pipinstallfastapipipinstall"uvicorn[standard]"基本代码main.pyfromtypingimportUnionfromfastapiimportFastAPI......
  • Python学习笔记--高阶技巧(二)
    Socket服务端开发基本步骤如下:socket客户端开发基本步骤如下:1、创建socket对象2、连接到服务器3、发送消息4、接收返回消息5、关闭连接正则表达式基础方法......
  • PYTHON用时变马尔可夫区制转换(MARKOV REGIME SWITCHING)自回归模型分析经济时间序列|附
    全文下载链接:http://tecdat.cn/?p=22617最近我们被客户要求撰写关于MRS的研究报告,包括一些图形和统计输出。本文提供了一个在统计模型中使用马可夫转换模型模型的例子,来......
  • python读取文本中的字典
    首先得明确文本的每行是存的json或者用python的write(str(一个字典))写入的,那么不用借助json模块就能读取为字典,使用eval函数就行,json只能处理带双引号的字符串,但很多时候......
  • opencv-python学习之旅
    opencv-python操作*注:在此笔记中只记录下各种函数的使用,规则详细讲解见https://opencv.apachecn.org/#/docs/4.0.0/2.1-tutorial_py_image_display创建,读取,显示,保存图......
  • 05|Context API
    ContextAPI是React官方提供的一种组件树全局通信的方式。ContextAPI有3个关键的要素:React.createContext、Provider、Consumer。我们通过调用React.createConte......
  • 使用detours进行windows api hook
    例子在这里:https://github.com/mschadev/detours-example detours-exampleAPIhookingexampleprojectusingMicrosoftDetoursInstallRungitbashgitclone......