python实现智能语音天气预报


Posted in Python onDecember 02, 2019

python编写的语音天气预报

本系统主要包括四个函数:

1、获取天气数据

1、输入要查询天气的城市

2、利用urllib模块向中华万年历天气api接口请求天气数据

3、利用gzip解压获取到的数据,并编码utf-8

4、利用json转化成python识别的数据,返回为天气预报数据复杂形式的字典(字典中的字典)

2、输出当天天气数据

1、格式化输出当天天气,包括:天气状况,此时温度,最高温度、最低温度,风级,风向等。

3,语音播报当天天气

1、创建要输出的语音文本(weather_forecast_txt)

2、利用百度的语音合成模块AipSpeech,合成语音文件

3,利用playsound模块播放语音

4、未来几天温度变化趋势

1、创建未来几天高低温数据的字典

2,利用matplotlib模块,图形化温度变化趋势

5、代码

#导入必要模块
import urllib.parse
import urllib.request
import gzip
import json
import playsound
from aip import AipSpeech
import matplotlib.pyplot as plt
import re
#设置参数,图片显示中文字符,否则乱码
plt.rcParams['font.sans-serif']=['SimHei']
#定义获取天气数据函数
def Get_weather_data():
  print('------天气查询------')
  city_name = input('请输入要查询的城市名称:')
  url = 'http://wthrcdn.etouch.cn/weather_mini?city=' + urllib.parse.quote(city_name)
  weather_data = urllib.request.urlopen(url).read()
  # 读取网页数据
  weather_data = gzip.decompress(weather_data).decode('utf-8')
  # #解压网页数据
  weather_dict = json.loads(weather_data)
  return weather_dict
#定义当天天气输出格式
def Show_weather(weather_data):
  weather_dict = weather_data
  if weather_dict.get('desc') == 'invilad-citykey':
    print('你输入的城市有误或未收录天气,请重新输入...')
  elif weather_dict.get('desc') == 'OK':
    forecast = weather_dict.get('data').get('forecast')
    print('日期:', forecast[0].get('date'))
    print('城市:', weather_dict.get('data').get('city'))
    print('天气:', forecast[0].get('type'))
    print('温度:', weather_dict.get('data').get('wendu') + '℃ ')
    print('高温:', forecast[0].get('high'))
    print('低温:', forecast[0].get('low'))
    print('风级:', forecast[0].get('fengli').split('<')[2].split(']')[0])
    print('风向:', forecast[0].get('fengxiang'))
    weather_forecast_txt = '您好,您所在的城市%s,' \
                '天气%s,' \
                '当前温度%s,' \
                '今天最高温度%s,' \
                '最低温度%s,' \
                '风级%s,' \
                '温馨提示:%s' % \
                (
                  weather_dict.get('data').get('city'),
                  forecast[0].get('type'),
                  weather_dict.get('data').get('wendu'),
                  forecast[0].get('high'),
                  forecast[0].get('low'),
                  forecast[0].get('fengli').split('<')[2].split(']')[0],
                  weather_dict.get('data').get('ganmao')
                )
    return weather_forecast_txt,forecast
#定义语音播报今天天气状况
def Voice_broadcast(weather_forcast_txt):
  weather_forecast_txt = weather_forcast_txt
  APP_ID = 你的百度语音APP_ID
  API_KEY = 你的百度语音API_KEY
  SECRET_KEY = 你的百度语音SECRET_KEY
  client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
  print('语音提醒:', weather_forecast_txt)
  #百度语音合成
  result = client.synthesis(weather_forecast_txt, 'zh', 1, {'vol': 5})
  if not isinstance(result, dict):
    with open('sound2.mp3', 'wb') as f:
      f.write(result)
      f.close()
  #playsound模块播放语音
  playsound.playsound(r'C:\Users\ban\Desktop\bsy\sound2.mp3')
#未来四天天气变化图
def Future_weather_states(forecast):
  future_forecast = forecast
  dict={}
  #获取未来四天天气状况
  for i in range(5):
    data = []
    date=future_forecast[i]['date']
    date = int(re.findall('\d+',date)[0])
    data.append(int(re.findall('\d+',future_forecast[i]['high'])[0]))
    data.append(int(re.findall('\d+', future_forecast[i]['low'])[0]))
    data.append(future_forecast[i]['type'])
    dict[date] = data
  data_list = sorted(dict.items())
  date=[]
  high_temperature = []
  low_temperature = []
  for each in data_list:
    date.append(each[0])
    high_temperature.append(each[1][0])
    low_temperature.append(each[1][1])
  fig = plt.plot(date,high_temperature,'r',date,low_temperature,'b')
  plt.xlabel('日期')
  plt.ylabel('℃')
  plt.legend(['高温','低温'])
  plt.xticks(date)
  plt.title('最近几天温度变化趋势')
  plt.show()
#主函数
if __name__=='__main__':
  weather_data = Get_weather_data()
  weather_forecast_txt, forecast = Show_weather(weather_data)
  Future_weather_states(forecast)
  Voice_broadcast(weather_forecast_txt)

6、最终效果

python实现智能语音天气预报

以上这篇python实现智能语音天气预报就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现登陆知乎获得个人收藏并保存为word文件
Mar 16 Python
python以环状形式组合排列图片并输出的方法
Mar 17 Python
Python实现递归遍历文件夹并删除文件
Apr 18 Python
python图片验证码生成代码
Jul 02 Python
Django中针对基于类的视图添加csrf_exempt实例代码
Feb 11 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
python利用pandas将excel文件转换为txt文件的方法
Oct 23 Python
如何在django里上传csv文件并进行入库处理的方法
Jan 02 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
Jan 18 Python
如何定义TensorFlow输入节点
Jan 23 Python
Selenium常见异常解析及解决方案示范
Apr 10 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
May 23 Python
Python:二维列表下标互换方式(矩阵转置)
Dec 02 #Python
python 实现二维列表转置
Dec 02 #Python
python列表推导式入门学习解析
Dec 02 #Python
Python 矩阵转置的几种方法小结
Dec 02 #Python
numpy.transpose()实现数组的转置例子
Dec 02 #Python
Python中低维数组填充高维数组的实现
Dec 02 #Python
python函数声明和调用定义及原理详解
Dec 02 #Python
You might like
极典R601SW收音机
2021/03/02 无线电
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
PHP使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
JavaScript的parseInt 取整使用
2011/05/09 Javascript
js中将HTMLCollection/NodeList/伪数组转换成数组的代码
2011/07/31 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
使用vue.js开发时一些注意事项
2016/04/27 Javascript
Javascript实现图片不间断滚动的代码
2016/06/22 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
python线程池的实现实例
2013/11/18 Python
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
酒店前厅员工辞职信
2014/01/08 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
建筑安全生产目标责任书
2014/07/23 职场文书
学校安全责任书范本
2014/07/23 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
中班下学期个人工作总结
2015/02/12 职场文书
写给同学的新学期寄语
2015/02/27 职场文书
工程催款通知书
2015/04/17 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
2016企业先进集体事迹材料
2016/02/25 职场文书