写点什么

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

作者:迷彩
  • 2022 年 9 月 27 日
    广东
  • 本文字数:2970 字

    阅读完需:约 10 分钟

前言

什么是图灵机器人

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

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

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

对话体验

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

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

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

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



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


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



自动回复

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


特别提示

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

安装 itchat 模块

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

pip3 install itchat

pip3 install itchat itchat-uos

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 requestsimport 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 SpeechRecognitionpip install pyAudio需要安装pyAudio,如果不能安装,可以去Python Extension Packages下载安装。还需要安装百度语言识别库pip install baidu-aip
复制代码

完整代码如下:

import requestsimport speech_recognition as srfrom 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'])
复制代码


发布于: 2022 年 09 月 27 日阅读数: 9
用户头像

迷彩

关注

我的工作是常年写bug|公众号:编程架构之美 2020.06.18 加入

修bug的菜鸟~公众号:“互联网有啥事”已改名为“编程架构之美”

评论

发布
暂无评论
【编程实践】利用 Python 调用图灵机器人 API 实现实时语音聊天及自动回复_Python_迷彩_InfoQ写作社区