智能聊天功能——天气情况篇
天气预报已然成为人们生活中不可缺少的一部分,实时了解气象的优劣,做到第一时间预防是至关重要的。所以,当我们需要外出时,如果能提前知道天气的变化情况,做好预防准备措施,就能让出行变得更加顺利。
本系统为用户提供播报天气情况功能,每天出门前询问“依米”当日的天气情况,它便会告诉你当日温度、能见度、风速等信息,并给用户一些出行建议,做好预防准备,智能家居让出行变得更加简单。具体实现流程如图所示。
调用天气情况功能的关键代码如下:
1. if "天气" in recognition_result:
2. s=recognition_result.replace('。','')
3. s=recognition_result.replace('?','')
4. s=s.replace('请问','')
5. s=s.replace('的天气怎么样','')
6. s=s.replace('天气怎么样','')
7. try:
8. tq=weather.get_wat(s)
9. print(tq)
10. weather.tts("./result/question_result.txt")
11. os.system('mpg123 ase.mp3')
12. except Exception:
13. url = baiduAPI.voiceSynthesis("识别错误,请这样问'某某天气怎么样'")
14. voice.playVoice(url)
15. time.sleep(2)
16. break
用户说出带有关键词“天气”的语句,系统将执行播报天气情况功能。上述代码对用户指令的识别结果进行了一些处理,目的是为了得到语句中的地名,然后通过urllib2.Request调用了和风天气api,获取城市天气情况。
调用接口的关键代码如下:
17. url_weather = 'https://free-api.heweather.net/s6/'+search+'?location='+index+'&key=301daef2824c41d9b3d6e0391011fd4d'
18. print(url_weather)
19. req = urllib2.Request(url_weather)
20. resp = urllib2.urlopen(req)
21. context = resp.read()
22. weather_json = json.loads(context, encoding='utf-8')
通过调用接口我们会得到很多数据,选取部分需要的数据即可。
根据需要我分别获取了实况天气、当日天气和明日天气情况。实况天气的部分代码如下:
23. def get_wat(wt):
24. city_weather_now = city_weather['now']
25. a= city_weather_now['cond_txt'] #天气状况描述
26. b= numtozh(city_weather_now['pres'] ) #气压
27. c= numtozh(city_weather_now['tmp'] ) #温度
28. d= numtozh(city_weather_now['vis']) #能见度
29. e= city_weather_now['wind_dir'] #风向
30. f= city_weather_now['wind_sc'] #风力
31. g= numtozh( city_weather_now['wind_spd']) #风速
32. weather_now_str = "目前天气{0},气压{1}帕斯卡,温度{2}度,能见度{3},风向{4},风力{5},风速{6}级;".format(a,b,c,d,e,f,g)
上述代码返回的结果中包含某些机器难以识别的数字,这使得语音合成出来的效果有点差强人意,比如:-18℃等之类的数据。因此,需要对获取结果中的特殊数字进行相关的处理。特殊数字处理的部分代码如下:
#数字转中文
def numtozh(num):num_dict = {1: '一', 2: '二', 3: '三', 4: '四', 5: '五', 6: '六', 7: '七',8: '八', 9: '九', 0: '零'}num = int(num)if 100 <= num < 1000:b_num = num // 100s_num = (num-b_num*100) // 10g_num = (num-b_num*100) % 10if g_num == 0 and s_num == 0:num = '%s百' % (num_dict[b_num])elif s_num == 0:num = '%s百%s%s' % (num_dict[b_num], num_dict.get(s_num, ''), num_dict.get(g_num, ''))elif g_num == 0:num = '%s百%s十' % (num_dict[b_num], num_dict.get(s_num, ''))else:num = '%s百%s十%s' % (num_dict[b_num], num_dict.get(s_num, ''), num_dict.get(g_num, ''))elif 10 <= num < 100:s_num = num // 10g_num = (num-s_num*10) % 10if g_num == 0:g_num = ''num = '%s十%s' % (num_dict[s_num], num_dict.get(g_num, ''))elif 0 <= num < 10:g_num = numnum = '%s' % (num_dict[g_num])elif -10 < num < 0:g_num = -numnum = '零下%s' % (num_dict[g_num])elif -100 < num <= -10:num = -nums_num = num // 10g_num = (num-s_num*10) % 10if g_num == 0:g_num = ''num = '零下%s十%s' % (num_dict[s_num], num_dict.get(g_num, ''))return num
上述代码是将获取到的天气情况中的特殊数字转化为中文字体,便于机器语音合成出用户能听懂的语言。
将处理后的结果写入文件,通过百度语言合成保存为ase.mp3的音频文件,最后在主程序中播放该文件即可。
智能聊天功能——天气情况篇相关推荐
- python如何实现微信自动聊天_如何利用python实现微信智能聊天功能,具体该怎么做?...
这个实现不难,需要先安装一下itchat库,之后注册一下图灵机器人,最后就可以编程实现微信智能聊天功能了,下面我简单介绍一下实现过程,实验环境win10+python3.6+pycharm5.0,主要 ...
- 给自己的网站加入智能聊天功能
引言 现在突然发现有很多 QQ 群都开启了群机器人的功能,其中有两个角色,他们分别是:Baby Q 和 QQ 小冰.在 Q 群中,你可以对他们进行任意程度的调戏,不过,遗憾的是鱼和熊掌不可得兼,一个群 ...
- 微信公众号实现智能聊天-接入第三方智能机器人平台
我已将博客放到csdn平台了,后面也是打算在csdn上编写博客,本文在csdn博客的地址:http://blog.csdn.net/wsa518/article/details/51112020 上一 ...
- 为自己的社交账号接入人工智能机器人,实现 自动回复\智能聊天,翻译\查询天气等各种服务。
为自己的社交账号接入人工智能机器人,实现 自动回复\智能聊天,翻译\查询天气等各种服务. 1.暂时只介绍qq账号的,其他的自己摸索,也不难 2.图灵机器人\TuringRobot\ 官网:http:/ ...
- 【SpringBoot框架篇】18.使用Netty加websocket实现在线聊天功能
文章目录 1.简介 2.最终功能实现的效果图 2.1.pc端 2.2.移动端 3.实战应用 3.1.引入依赖 3.2.配置文件 3.3.测试demo 3.3.1.消息内容实体类 3.3.2.处理请求的 ...
- Android Studio实现一个智能聊天机器人
项目目录 一.需求分析 1.业务需求分析 2.模型需求分析 3.界面需求分析 二.开发环境介绍 三.聊天功能业务实现 ✨1.申请机器人身份标识 2.搭建聊天界面布局 3.搭建聊天条目布局 4.封装聊天 ...
- 基于“机器学习”的智能聊天机器人---python实现(1)
本博文以自己课程设计为依托,介绍如何利用python语言编程实现基于"机器学习"的智能聊天机器人.由于本项目是自己首次接触python以及利用计算机编程实现小型项目,中途遇到诸多问 ...
- 环境参数智能监测站设计(说明书篇)
摘要 环境参数监控系统,价格高,功耗较大,移动性较差,需要较高的硬件与软件支持,数据采集端与监控端需要通过很多很长的通信线进行连接,从而使得系统稳定性不高,对于多参数多点监控的场所,传统设备不能满足其 ...
- 智能聊天机器人实现(源码+解析)
前言: 之前写了一篇 <美女图片采集器 (源码+解析)> 得到了众多朋友的支持, 发现这样系列的教程还是挺受欢迎的, 也激励我继续写下去. 也在那一篇文章中提过, 美女图片采集只是我先前 ...
最新文章
- 时间管理大师!一程序员同时给谷歌和 Facebook 打工??
- java logic_java logic怎么做用户登录
- Hadoop生态圈-Ambari控制台功能简介
- vuejs项目性能优化 - 总结篇
- Ubuntu16.04下制作deb包的方法详解
- “不会Linux,会有什么影响?”资深程序员:基本等于自废武功!
- python编程入门经典百度云-python电子书学习资料打包分享百度云资源下载
- 零基础学python要多久-零基础如何学Python?小白学Python需要多久?
- java实现插入排序+代码推导
- shiny datatable child row:shiny表格二级子行的展开与折叠
- verilog语法检查
- jQuery入口函数的写法
- 阿里巴巴2021校招
- java谐音梗_你听过最好玩的英语谐音梗是?
- 铁路网络售票是利用计算机,铁路客运计算机售票具体操作图文.pdf
- linux进入vi界面后命令,教你Linux-vi编辑器的常用命令
- 如何从一个文件夹中批量读取图片名字有规则
- 从 http 升级到 https 过程中遇到的一些问题
- RK3399平台开发系列讲解(电源管理篇)11.7、PM callback
- 三菱FX3U与东元Teco变频器N310通讯实战程序
热门文章
- JIra+Python+Pyechart 通过分析jira数据生成图表并展示,出具质量可视化的测试报告
- 项目管理-进度网络图
- 基于SVM的数字手势识别模型
- opencv-图像人脸识别和视频人脸识别
- windows10 安装msdatlst.ocx控件
- 佳能EOS 450D固件升级过程
- Three.js实战--修改OrbitControls的按键
- 苹果开发者账号_邓白氏编码申请过程
- 苹果6外音没有了怎么办_时尚高颜简约风,苹果蓝牙耳机AirPods2保护套精选
- 使用umi快速搭建项目以及如何在umi中使用dva进行状态管理