基于PaddleNLP+wechaty第一个实时微信语音聊天机器人诞生了
B站视频
StarCraft(星际争霸)一作为1998年的游戏存活到现在,这是全世界99%的游戏公司都不敢想象的事。它不仅陪伴我度过了青春年少,也成为我直到现在还仅存的几个娱乐活动之一。从练习分农民,建筑学,部位微操;再到高难的甩飞龙,甩影飞,学习Boxer的瞬间用幽灵兵锁住半队航母;最后到运营,资源配置,大局观的磨砺。让我发现,游戏真的不仅仅是游戏,它到后来对我学习,工作的帮助都非常大。以至于后来我会建议别人,不论你喜欢游戏也好,唱歌跳舞运动什么都好,把它练到一种亚职业的状态,你会发现,对你未来的职业会产生巨大的促进意义。用星际争霸图片融合重温经典和童年。
PaddleNLP-wechaty
本例子展示一个基于 PaddleNLP + Wechaty 的微信闲聊机器人。通过Wechaty获取微信接收的消息,然后使用PaddleNLP的plato-mini
模型根据对话的上下文生成新的对话文本,最终以微信消息的形式发送,实现闲聊的交互,可发语音、可发文字聊天,发一张图片,机器人会把图片转换成星际争霸风格的图片。
风险提示
本项目采用的api为第三方——Wechaty提供,非微信官方api,用户需承担来自微信方的使用风险。
在运行项目的过程中,建议尽量选用新注册的小号进行测试,不要用自己的常用微信号。
Wechaty
关于Wechaty和python-wechaty,请查阅以下官方repo:
- Wechaty
- python-wechaty
- python-wechaty-getting-started
环境准备
- 系统环境:Windows
- python3.7+
- 安装必要的包,在requirements.txt
pip install -r requirements.txt
安装和使用
Set token for your bot
在当前系统的环境变量中,配置以下与
WECHATY_PUPPET
相关的两个变量。
关于其作用详情和TOKEN的获取方式,请查看Wechaty Puppet Services。部署服务器
首先去阿里云申请服务器部署申请好的token,参照链接部署
申请百度语音api接口.参照链接百度api
Run the bot
python main_chat_bot.py
运行后,可以通过微信移动端扫码登陆,登陆成功后则可正常使用。
运行效果
在main_chat_bot.py
中,通过以下几行代码即可实例化一个plato-mini
的模型
# Initialize a PaddleHub plato-mini model
from interaction_chat import PlatoNlp
model = PlatoNlp(max_turn=10) # Dialogue round configuration # 对话轮次配置
on_message
方法是接收到消息时的回调函数,可以通过自定义的条件(譬如消息类型、消息来源、消息文字是否包含关键字、是否群聊消息等等)来判断是否回复信息,消息的更多属性和条件可以参考Class Message。
本示例中的on_message
方法的代码如下,脚本中回复的条件是:
- 消息类型是文字
async def on_message(msg: Message):"""Message Handler for the Bot"""if not msg.is_self() and isinstance(msg.text(), str) and len(msg.text()) > 0 and \msg._payload.type == MessageType.MESSAGE_TYPE_TEXT:text_new = re.sub(r'<.*>', '', msg.text())if len(text_new) < 400:if '@' in text_new:if '@小裕' in text_new:bot_response = model.predict(data=text_new.replace('@小裕', ''))await msg.say(bot_response)else:bot_response = model.predict(data=text_new)await msg.say(bot_response)else:await msg.say('说的太多了,长话短说啊')elif not msg.is_self() and msg._payload.type == MessageType.MESSAGE_TYPE_IMAGE:file_box_2 = await msg.to_file_box() # 将Message转换为FileBoxawait file_box_2.to_file(file_path=img_in_path, overwrite=True) # 将图片保存为本地文件img_new_path = img_transform(img_in_path) # 调用图片风格转换的函数file_box_3 = FileBox.from_file(img_new_path) # 从新的路径获取图片await msg.say(file_box_3)elif not msg.is_self() and msg._payload.type == MessageType.MESSAGE_TYPE_AUDIO:file_box_audio = await msg.to_file_box()await file_box_audio.to_file(file_path=mp3_path, overwrite=True)audio_path_new = resample_rate(mp3_path, wav_path, new_sample_rate=16000) # 转换能识别格式text = aip_asr(audio_path_new) # 语音识别成文字bot_response = model.predict(data=text) # 生产文字回复bot_response_path = aip_synthesis(bot_response, wav_path_res) # 语音生成file_box_audio_new = FileBox.from_file(bot_response_path)await msg.say(file_box_audio_new)
脚本成功运行后,所登陆的账号即可作为一个Chatbot,
基于PaddleNLP+wechaty第一个实时微信语音聊天机器人诞生了相关推荐
- java实现仿微信app聊天功能_Android仿微信语音聊天功能
本文实例讲述了Android仿微信语音聊天功能代码.分享给大家供大家参考.具体如下: 项目效果如下: 具体代码如下: AudioManager.java package com.xuliugen.we ...
- 微信语音聊天内容如何录制 如何录制通话内容
微信的注册用户已破十亿,这一庞大的数字代表着其在人们生活和工作中的地位之重,使用微信一般都是用来交流聊天,但是现在随着电子商务的日益发展,微商也在日益壮大,最经常使用的功能还是聊天通话,那对于重要的通 ...
- android高仿微信聊天页面,Android 高仿微信语音聊天页面高斯模糊(毛玻璃效果)
目前的应用市场上,使用毛玻璃效果的APP随处可见,比如用过微信语音聊天的人可以发现,语音聊天页面就使用了高斯模糊效果. 先看下效果图: 仔细观察上图,我们可以发现,背景图以用户头像为模板,对其进行了高 ...
- Android 实现微信语音聊天
1.效果图 2.代码摘自 imooc 之hyman 视频 代码详情,请移至imooc.com 之 Android-仿微信语音聊天 此处只提供下载 3.源码说明 采用 Android Studio 1. ...
- android 仿微信语音聊天
android 仿微信语音聊天 跟着imooc老师学习 代码地址: https://github.com/tingsky9985/Weixin_Recorder
- 微信语音聊天框样式+功能
仿微信语音聊天播放效果(左右朝向的动态小喇叭) 效果图: 暂停/播放用动态的class控制,语音聊天框的长度通过动态的style控制(依据当前语音的秒数) <!-- 音频文件 -->< ...
- 基于 QT5 百度语音API 图灵机器人API 的智能语音聊天机器人
基于 QT5 百度语音API 图灵机器人API 的智能语音聊天机器人 程序简介 代码一共分为以下几个模块 伪代码形式为 部分代码 源代码下载地址 程序简介 程序界面包含录音和发送两个按钮 点录音将开始 ...
- Android仿微信语音聊天界面设计
这篇文章主要为大家详细介绍了Android仿微信语音聊天界面设计代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 有段时间没有看视频了,昨天晚上抽了点空时间,又看了下鸿洋大神的视频教程,又抽时间 ...
- 一款基于微客服的仿微信的聊天软件
一款基于微客服的仿微信的聊天软件 服务分类: 其它开发,推送 使用服务: 微客服 , 小米推送 功能分类: 社交 支持平台: Android 运行环境: Android 开发语言: Java 开发工具 ...
最新文章
- 如何在Python中对字符串进行子字符串化
- 008_多配置文件的引入
- java stdout库_Java重写StdOut并将日语写入文件
- linux数据库实例开机启动,Oracle数据库之Linux下实现Oracle数据库单实例开机自启动设置...
- 循环取矩阵的某行_一文搞懂RNN(循环神经网络)基础篇
- 如何在 Mac 上自动启用隐藏式字幕?
- java 中高级面试题_Java中高级面试题
- 王者荣耀是用什么代码变成MOBA游戏的,该怎么学?有前途吗?
- 什么是反向跟单?反向跟单怎么运作?
- 为什么blender安装后无法打开_CAD软件打开图纸后钢筋符号无法读取的解决办法...
- mysql-跨库联合查询
- python阿拉伯数字转中文_阿拉伯数字转换成中文的python代码
- 在网页标题前添加一个小图标
- 为什么人人都爱油炸食物?
- 信息系统项目管理师必背核心考点(六十九)访问控制授权方案
- android 日历动画的实现
- 高稳定性、低延时、支持多路的实时流媒体播放器之EasyPlayer.js在直播时隐藏倍速播放按钮操作方法
- php开发微信手册,PHP技术开发微信公众平台
- 公务员备考(四十) 图推提升
- 一、基于wifi控制的智能家居系统之项目简介和设计方案(硬件基于arduino+esp8266,软件Android+Web端+scoket服务器,实现语音控制)