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多线程操作实例
Nov 21 Python
使用Python的Flask框架来搭建第一个Web应用程序
Jun 04 Python
python数字图像处理实现直方图与均衡化
May 04 Python
Python设置在shell脚本中自动补全功能的方法
Jun 25 Python
Python爬虫实战之12306抢票开源
Jan 24 Python
python在OpenCV里实现投影变换效果
Aug 30 Python
解决python 读取 log日志的编码问题
Dec 24 Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 Python
python批量提取图片信息并保存的实现
Feb 05 Python
python库sklearn常用操作
Aug 23 Python
Python matplotlib可视化之绘制韦恩图
Feb 24 Python
Python学习之os包使用教程详解
Mar 21 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
IIS6的PHP最佳配置方法
2007/03/19 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
一些实用的jQuery代码片段收集
2011/07/12 Javascript
javascript中字符串拼接详解
2014/09/26 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
2016/02/25 Javascript
jquery中实现时间戳与日期相互转换
2016/04/12 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
2018/07/13 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
2019年度web前端面试题总结(主要为Vue面试题)
2020/01/12 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
python 自动化将markdown文件转成html文件的方法
2016/09/23 Python
Python中Threading用法详解
2017/12/27 Python
Python3中exp()函数用法分析
2019/02/19 Python
解决os.path.isdir() 判断文件夹却返回false的问题
2019/11/29 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
详解Python 中的 defaultdict 数据类型
2021/02/22 Python
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
生物技术毕业生自荐信
2013/10/23 职场文书
公司活动方案范文
2014/03/06 职场文书
小平您好观后感
2015/06/09 职场文书
雷锋观后感
2015/06/10 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
Python基础之条件语句详解
2021/06/16 Python