如何优雅的用python玩转语音聊天机器人

author author     2023-05-09     313

关键词:

参考技术A 所需硬件:
树莓派B+
人体红外线感应模块
内置麦克风摄像头(实测树莓派免驱淘宝链接)
申请API:
百度语音api
图灵api
语音聊天机器人实现原理:当有人来到跟前时--》触发聊天功能,开始以每2s检测录制语音--》通过百度语音api合成文字--》传递给图灵api返回回答信息--》通过百度语音合成播放
【人体感应识别部分Python代码renti.py】
123456789101112131415161718192021222324252627282930313233

#/usr/bin/python#coding:utf-8import RPi.GPIO as GPIOimport timeimport osimport signalimport atexitGPIO.setmode(GPIO.BCM) GPIO_PIR = 14 GPIO.setup(GPIO_PIR,GPIO.IN) # Echojing = 0dong = 0 sum = 0sum1 = 0oldren = 0sleep = 0def ganying(): i = 0 ok = 0 error = 0 while i < 10: if GPIO.input(GPIO_PIR) == 1 : ok = ok + 1 if GPIO.input(GPIO_PIR) == 0 : error = error + 1 time.sleep(0.01) i = i + 1 ren = ok/(error+1) return ren

1

GPIO_PIR = 14

为 红外线检测模块与树莓派的针脚,脚本函数返回0表示无人,>0 为有人
【Python语音识别聊天部分robot.py】
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112

#/usr/bin/python# -*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding( "utf-8" )import urllibimport urllib2import jsonimport uuidimport base64import osimport timefrom renti import * #获取百度tokenappid=7647466apikey="百度API"secretkey="百度API" baidu_url="h.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + apikey + "&client_secret=" + secretkey; y_post=urllib2.urlopen(baidu_url)y_read=y_post.read()y_token=json.loads(y_read)['access_token']#print y_read#print y_token #------------------function------------- def luyin(): os.system('arecord -D plughw:1,0 -c 1 -d 2 1.wav -r 8000 -f S16_LE 2>/dev/null') def fanyi():
#---------------语音识别部分 mac_address="haogeoyes" with open("1.wav",'rb') as f: s_file = f.read() speech_base64=base64.b64encode(s_file).decode('utf-8') speech_length=len(s_file) data_dict = 'format':'wav', 'rate':8000, 'channel':1, 'cuid':mac_address, 'token':y_token, 'lan':'zh', 'speech':speech_base64, 'len':speech_length json_data = json.dumps(data_dict).encode('utf-8') json_length = len(json_data) asr_server = 'm/server_api' request = urllib2.Request(url=asr_server) request.add_header("Content-Type", "application/json") request.add_header("Content-Length", json_length) fs = urllib2.urlopen(url=request, data=json_data) result_str = fs.read().decode('utf-8') json_resp = json.loads(result_str) if json_resp.has_key('result'): out_txt=json_resp['result'][0] else: out_txt="Null" return out_txt def tuling(b): f=urllib.urlopen("23.com/openapi/api?key="此处为图灵API"&info=%s" % b) f=json.loads(f.read())['text'] return f def hecheng(text,y_token): #text="你好我是机器人牛牛很高兴能够认识你" geturl="u.com/text2audio?tex="+text+"&lan=zh&per=1&pit=9&spd=6&cuid=CCyo6UGf16ggKZGwGpQYL9Gx&ctp=1&tok="+y_token return os.system('omxplayer "%s" > /dev/null 2>&1 '%(geturl)) #return os.system('omxplayer "%s" > /dev/null 2>&1 '%(geturl)) def nowtime(): return time.strftime('%Y-%m-%d %H:%M:%S ') #---------------main-----------------num=0 #num用来判断是第一次说话,还是在对话过程中first=1 #判断是不是第一说话 当1000次没有人动认为是第一次while True: if ganying()!=0: run=open('run.log','a') if first==0: hecheng("你好,我是牛牛机器人,你可以和我聊天,不过说话的时候你必须靠近话筒近一点,",y_token) hecheng("说点什么吧,2秒钟内说完哦.",y_token) first=1 #为1一段时间就不执行 num=0 #从新计数 #print ganying() run.write(nowtime()+"说点神马吧..........."+'\n') print nowtime()+"说点神马吧.........." luyin() #开始录音 out=fanyi().encode("utf-8") #翻译文字 run.write(nowtime()+"我说:"+out+'\n') print nowtime()+"我说:"+out if out == "Null": text="没有听清楚你说什么" os.system('omxplayer "shenme.wav" > /dev/null 2>&1 ') else: text=tuling(out) hecheng(text,y_token) print nowtime()+"牛牛:"+text run.write(nowtime()+"牛牛:"+text+'\n') run.close() else: #print ganying() #调试查看是否为0有人没人 #print num num=num+1 #num长时间增大说明没有人在旁边 if num > 1000: first=0 #0表示第一次说话

万事俱备 运行nohup python robot.py 哈哈就可以脱离屏幕开始愉快的语音聊天啦
下面看看聊天的日志记录吧
后续更新。。。。。。Python如何用语音优雅的控制小车

python自动化高效办公第二期,带你项目实战{数据可视化发送邮件(定时任务监控)python聊天机器人(基于微信钉钉)}(代码片段)

 相关文章和数据源:python自动化高效办公第二期,带你项目实战【一】{excel数据处理、批量化生成word模板、pdf和ppt等自动化操作}Python自动化办公--Pandas玩转Excel【一】Python自动化办公--Pandas玩转Excel数据分析【... 查看详情

python自动化高效办公第二期,带你项目实战{数据可视化发送邮件(定时任务监控)python聊天机器人(基于微信钉钉)}(代码片段)

 相关文章和数据源:python自动化高效办公第二期,带你项目实战【一】{excel数据处理、批量化生成word模板、pdf和ppt等自动化操作}Python自动化办公--Pandas玩转Excel【一】Python自动化办公--Pandas玩转Excel数据分析【... 查看详情

10个优雅的python编程技巧,掌握后瞬间玩转python(持续更新)(代码片段)

...代码在Python中还有一种写法,叫做PythonicPythonic(优雅的、地道的、整洁的)要写出Pythonic代码需要有大量的代码量的积累今天这里带来十条常 查看详情

如何优雅的用markdown编写一份简历(代码片段)

如何优雅的用MarkDown编写一份简历背景近期笔者因故离开了上家公司,因为前段时间忙于工作和离职等事情,疏于更新博客,为此笔者感到了深深的罪恶感以及发自良心的谴责。2020已经过去大半,自己立的flag看来... 查看详情

如何使用 Python 中的 API 使用 Discord 聊天机器人发送新闻?

】如何使用Python中的API使用Discord聊天机器人发送新闻?【英文标题】:HowtosendnewsusingDiscordchatbotusingAPIinPython?【发布时间】:2021-10-0113:18:45【问题描述】:我正在使用python制作一个不和谐的聊天机器人,我的机器人使用API发送新... 查看详情

优雅!优雅!居然可以如此优雅的玩转启动优化?实现优化技术

记得之前有个热门已久的话题:如何加载100M的图片却不撑爆内存如何处理大图,一张100M的大图,如何预防OOM?当时的回答井然有序,列出很清晰的条理,不仅把面试问题拓展开来分析,还提出了完整... 查看详情

语音识别玩转语音识别1语音识别简介

...助我们跨越语言的鸿沟,实现不同语言间的翻译销售:语音机器人可以帮助我们确定客服的基本需求,提高销售效率 查看详情

小白如何做一个python人工智能语音助手(代码片段)

...?废话不说直接上图1、录音2、语音识别3、接入图灵机器人4、语音合成5、播放语音前期准备源代码1、录音2、语音识别(将录音内容进行语音识别转成文字)3、接入图灵机器人(将文字发送给机器人获得回复ÿ... 查看详情

如何优雅的用js动态添加html代码

一、使用javascript模板引擎用javascript预编译模版,就是动态修改模板文件使之成为一个可用的静态HTML文件。我平时会使用artTemplate,性能很好而且易上手。编写模板使用一个type="text/html"的script标签存放模板:<scriptid="test"type="te... 查看详情

论如何优雅的用bitset来求四维偏序

四维偏序。。就是给你一个四维集合。再给你一些询问,请你求出a[i].x1<=ask.x1&&a[i].x2<=ask.x2&&a[i].x3<=ask.x3&&a[i].x4<=ask.x4的个数。。集合大小<=30000询问个数<=30000然后怎么做呢??其实很简单只要排序+... 查看详情

如何优雅的用vscode编写c++大型项目?(代码片段)

vscode远程开发配置由于后面项目用到了epoll和splice,这些都是unix环境中才有的调用,所以我们还是需要在linux环境中开发,我选用的vscode连接linux进行远程开发选用vscode的原因在这里只跟clion做下比较,clion支持的fu... 查看详情

bash玩转脚本7之说好的用crontab搞个自动任务(代码片段)

一、前言在“【Python融于生活】之我想要保存QQ邮箱富途的附件”文章末尾说到,这种拉取附件的脚本可以使用一个定时任务去做,所以今天就来使用一下crontab,使用一个定时任务去做这件事情。传送门:【Python... 查看详情

python如何使用图灵的apikey搭建聊天机器人?

...+info response=getHtml(request) dic_json=json.loads(response) print'机器人:'.decode('utf-8')+dic_json['text'] 查看详情

基于tensorflowlitemicro在物联网设备上玩转tinyml之离线语音唤醒(代码片段)

1.案例简介随着机器学习的发展,TinyML(微型机器学习)已在你的家里、车里、甚至口袋里工作了。什么是TinyML呢?它是属于机器学习的一个子领域,包含了算法、硬件和软件,能够基于传感器数据分析... 查看详情

题目:用python3实现微信聊天机器人(代码片段)

做微信聊天机器人,实现步骤:获取微信的使用权,即python脚本能控制微信收发信息。python脚本收到聊天信息后,要对该信息进行处理,返回机器人的回应信息。一二两步要用到wxpy库里的各种组件来收发信息&... 查看详情

玩转react-javascript代码里写html一样可以很优雅

这是《玩转React》系列的第三篇,看到本篇的标题,了解过React的同学可能已经大致猜到我要讲什么了,本篇中要讲的内容对于刚接触React的同学来说,可能有些难以接受,但希望你能坚持学下去,这是Facebook的前端大神们为前端... 查看详情

14张python代码速查表,玩转数据分析&可视化&机器学习

Python基础系列推出的内容包括:Python基础、Python进阶、导入数据及JupyterNotebook。Python数据科学速查表-Python基础Python数据科学速查表-导入数据Python数据科学速查表-JupyterNotebook数据处理系列推出的内容包括:Numpy、Pandas及Sci... 查看详情

用aiml开发人工智能聊天机器人

借助Python的AIML包,我们很容易实现人工智能聊天机器人。AIML指的是ArtificialIntelligenceMarkupLanguage(人工智能标记语言),它不过是简单的可XML(扩展标记语言)形式。本文的示例代码将带你初步领略如何借助Python创建属于你的人... 查看详情