天气预报已然成为人们生活中不可缺少的一部分,实时了解气象的优劣,做到第一时间预防是至关重要的。所以,当我们需要外出时,如果能提前知道天气的变化情况,做好预防准备措施,就能让出行变得更加顺利。
本系统为用户提供播报天气情况功能,每天出门前询问“依米”当日的天气情况,它便会告诉你当日温度、能见度、风速等信息,并给用户一些出行建议,做好预防准备,智能家居让出行变得更加简单。具体实现流程如图所示。

调用天气情况功能的关键代码如下:

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的音频文件,最后在主程序中播放该文件即可。

智能聊天功能——天气情况篇相关推荐

  1. python如何实现微信自动聊天_如何利用python实现微信智能聊天功能,具体该怎么做?...

    这个实现不难,需要先安装一下itchat库,之后注册一下图灵机器人,最后就可以编程实现微信智能聊天功能了,下面我简单介绍一下实现过程,实验环境win10+python3.6+pycharm5.0,主要 ...

  2. 给自己的网站加入智能聊天功能

    引言 现在突然发现有很多 QQ 群都开启了群机器人的功能,其中有两个角色,他们分别是:Baby Q 和 QQ 小冰.在 Q 群中,你可以对他们进行任意程度的调戏,不过,遗憾的是鱼和熊掌不可得兼,一个群 ...

  3. 微信公众号实现智能聊天-接入第三方智能机器人平台

    我已将博客放到csdn平台了,后面也是打算在csdn上编写博客,本文在csdn博客的地址:http://blog.csdn.net/wsa518/article/details/51112020 上一 ...

  4. 为自己的社交账号接入人工智能机器人,实现 自动回复\智能聊天,翻译\查询天气等各种服务。

    为自己的社交账号接入人工智能机器人,实现 自动回复\智能聊天,翻译\查询天气等各种服务. 1.暂时只介绍qq账号的,其他的自己摸索,也不难 2.图灵机器人\TuringRobot\ 官网:http:/ ...

  5. 【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.处理请求的 ...

  6. Android Studio实现一个智能聊天机器人

    项目目录 一.需求分析 1.业务需求分析 2.模型需求分析 3.界面需求分析 二.开发环境介绍 三.聊天功能业务实现 ✨1.申请机器人身份标识 2.搭建聊天界面布局 3.搭建聊天条目布局 4.封装聊天 ...

  7. 基于“机器学习”的智能聊天机器人---python实现(1)

    本博文以自己课程设计为依托,介绍如何利用python语言编程实现基于"机器学习"的智能聊天机器人.由于本项目是自己首次接触python以及利用计算机编程实现小型项目,中途遇到诸多问 ...

  8. 环境参数智能监测站设计(说明书篇)

    摘要 环境参数监控系统,价格高,功耗较大,移动性较差,需要较高的硬件与软件支持,数据采集端与监控端需要通过很多很长的通信线进行连接,从而使得系统稳定性不高,对于多参数多点监控的场所,传统设备不能满足其 ...

  9. 智能聊天机器人实现(源码+解析)

    前言: 之前写了一篇  <美女图片采集器 (源码+解析)> 得到了众多朋友的支持, 发现这样系列的教程还是挺受欢迎的, 也激励我继续写下去. 也在那一篇文章中提过, 美女图片采集只是我先前 ...

最新文章

  1. 时间管理大师!一程序员同时给谷歌和 Facebook 打工??
  2. java logic_java logic怎么做用户登录
  3. Hadoop生态圈-Ambari控制台功能简介
  4. vuejs项目性能优化 - 总结篇
  5. Ubuntu16.04下制作deb包的方法详解
  6. “不会Linux,会有什么影响?”资深程序员:基本等于自废武功!
  7. python编程入门经典百度云-python电子书学习资料打包分享百度云资源下载
  8. 零基础学python要多久-零基础如何学Python?小白学Python需要多久?
  9. java实现插入排序+代码推导
  10. shiny datatable child row:shiny表格二级子行的展开与折叠
  11. verilog语法检查
  12. jQuery入口函数的写法
  13. 阿里巴巴2021校招
  14. java谐音梗_你听过最好玩的英语谐音梗是?
  15. 铁路网络售票是利用计算机,铁路客运计算机售票具体操作图文.pdf
  16. linux进入vi界面后命令,教你Linux-vi编辑器的常用命令
  17. 如何从一个文件夹中批量读取图片名字有规则
  18. 从 http 升级到 https 过程中遇到的一些问题
  19. RK3399平台开发系列讲解(电源管理篇)11.7、PM callback
  20. 三菱FX3U与东元Teco变频器N310通讯实战程序

热门文章

  1. JIra+Python+Pyechart 通过分析jira数据生成图表并展示,出具质量可视化的测试报告
  2. 项目管理-进度网络图
  3. 基于SVM的数字手势识别模型
  4. opencv-图像人脸识别和视频人脸识别
  5. windows10 安装msdatlst.ocx控件
  6. 佳能EOS 450D固件升级过程
  7. Three.js实战--修改OrbitControls的按键
  8. 苹果开发者账号_邓白氏编码申请过程
  9. 苹果6外音没有了怎么办_时尚高颜简约风,苹果蓝牙耳机AirPods2保护套精选
  10. 使用umi快速搭建项目以及如何在umi中使用dva进行状态管理