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动态监控日志内容的示例
Feb 16 Python
Python解析命令行读取参数--argparse模块使用方法
Jan 23 Python
python监控进程脚本
Apr 12 Python
djang常用查询SQL语句的使用代码
Feb 15 Python
Python multiprocessing多进程原理与应用示例
Feb 28 Python
浅谈Python批处理文件夹中的txt文件
Mar 11 Python
pycharm新建一个python工程步骤
Jul 16 Python
pycharm创建scrapy项目教程及遇到的坑解析
Aug 15 Python
python如何实现复制目录到指定目录
Feb 13 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
Apr 10 Python
Python调用shell命令常用方法(4种)
May 11 Python
python 解决Fatal error in launcher:错误问题
May 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
如何利用php+mysql保存和输出文件
2006/10/09 PHP
php 高性能书写
2010/12/11 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
js跑马灯代码(自写)
2013/04/17 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
解决vue项目router切换太慢问题
2020/07/19 Javascript
[48:38]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs Secret
2018/03/31 DOTA
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
python排序方法实例分析
2015/04/30 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
Python将多个excel表格合并为一个表格
2021/02/22 Python
Python调用C++,通过Pybind11制作Python接口
2018/10/16 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
python 发送邮件的四种方法汇总
2020/12/02 Python
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
电脑租赁公司创业计划书
2014/01/08 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
大家访活动实施方案
2014/03/10 职场文书
旅行社各个岗位职责
2014/03/15 职场文书
感恩小明星事迹材料
2014/05/23 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL
python 下划线的多种应用场景总结
2021/05/12 Python