码迷,mamicode.com
首页 > 编程语言 > 详细

python实现智能语音天气预报

时间:2019-12-10 15:19:41      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:res   input   term   note   接口   https   图形化   sdn   图形   

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者: 飞奔的帅帅

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef

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

1、获取天气数据

  • 输入要查询天气的城市

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

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

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

2、输出当天天气数据

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

3,语音播报当天天气

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

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

  • 利用playsound模块播放语音

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

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

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

5、代码

  1 #导入必要模块
  2 import urllib.parse
  3 import urllib.request
  4 import gzip
  5 import json
  6 import playsound
  7 from aip import AipSpeech
  8 import matplotlib.pyplot as plt
  9 import re
 10 #设置参数,图片显示中文字符,否则乱码
 11 plt.rcParams[font.sans-serif]=[SimHei]
 12 #定义获取天气数据函数
 13 def Get_weather_data():
 14   print(------天气查询------)
 15   city_name = input(请输入要查询的城市名称:)
 16   url = http://wthrcdn.etouch.cn/weather_mini?city= + urllib.parse.quote(city_name)
 17   weather_data = urllib.request.urlopen(url).read()
 18   # 读取网页数据
 19   weather_data = gzip.decompress(weather_data).decode(utf-8)
 20   # #解压网页数据
 21   weather_dict = json.loads(weather_data)
 22   return weather_dict
 23 #定义当天天气输出格式
 24 def Show_weather(weather_data):
 25   weather_dict = weather_data
 26   if weather_dict.get(desc) == invilad-citykey:
 27     print(你输入的城市有误或未收录天气,请重新输入...)
 28   elif weather_dict.get(desc) == OK:
 29     forecast = weather_dict.get(data).get(forecast)
 30     print(日期:, forecast[0].get(date))
 31     print(城市:, weather_dict.get(data).get(city))
 32     print(天气:, forecast[0].get(type))
 33     print(温度:, weather_dict.get(data).get(wendu) + )
 34     print(高温:, forecast[0].get(high))
 35     print(低温:, forecast[0].get(low))
 36     print(风级:, forecast[0].get(fengli).split(<)[2].split(])[0])
 37     print(风向:, forecast[0].get(fengxiang))
 38     weather_forecast_txt = 您好,您所在的城市%s,  39                 天气%s,  40                 当前温度%s,  41                 今天最高温度%s,  42                 最低温度%s,  43                 风级%s,  44                 温馨提示:%s %  45                 (
 46                   weather_dict.get(data).get(city),
 47                   forecast[0].get(type),
 48                   weather_dict.get(data).get(wendu),
 49                   forecast[0].get(high),
 50                   forecast[0].get(low),
 51                   forecast[0].get(fengli).split(<)[2].split(])[0],
 52                   weather_dict.get(data).get(ganmao)
 53                 )
 54     return weather_forecast_txt,forecast
 55 #定义语音播报今天天气状况
 56 def Voice_broadcast(weather_forcast_txt):
 57   weather_forecast_txt = weather_forcast_txt
 58   APP_ID = 你的百度语音APP_ID
 59   API_KEY = 你的百度语音API_KEY
 60   SECRET_KEY = 你的百度语音SECRET_KEY
 61   client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
 62   print(语音提醒:, weather_forecast_txt)
 63   #百度语音合成
 64   result = client.synthesis(weather_forecast_txt, zh, 1, {vol: 5})
 65   if not isinstance(result, dict):
 66     with open(sound2.mp3, wb) as f:
 67       f.write(result)
 68       f.close()
 69   #playsound模块播放语音
 70   playsound.playsound(rC:\Users\ban\Desktop\bsy\sound2.mp3)
 71 #未来四天天气变化图
 72 def Future_weather_states(forecast):
 73   future_forecast = forecast
 74   dict={}
 75   #获取未来四天天气状况
 76   for i in range(5):
 77     data = []
 78     date=future_forecast[i][date]
 79     date = int(re.findall(\d+,date)[0])
 80     data.append(int(re.findall(\d+,future_forecast[i][high])[0]))
 81     data.append(int(re.findall(\d+, future_forecast[i][low])[0]))
 82     data.append(future_forecast[i][type])
 83     dict[date] = data
 84   data_list = sorted(dict.items())
 85   date=[]
 86   high_temperature = []
 87   low_temperature = []
 88   for each in data_list:
 89     date.append(each[0])
 90     high_temperature.append(each[1][0])
 91     low_temperature.append(each[1][1])
 92   fig = plt.plot(date,high_temperature,r,date,low_temperature,b)
 93   plt.xlabel(日期)
 94   plt.ylabel()
 95   plt.legend([高温,低温])
 96   plt.xticks(date)
 97   plt.title(最近几天温度变化趋势)
 98   plt.show()
 99 #主函数
100 if __name__==__main__:
101   weather_data = Get_weather_data()
102   weather_forecast_txt, forecast = Show_weather(weather_data)
103   Future_weather_states(forecast)
104   Voice_broadcast(weather_forecast_txt)

 

6、最终效果

技术图片

以上这篇python实现智能语音天气预报就是小编分享给大家的全部内容了,希望能给大家一个参考

python实现智能语音天气预报

标签:res   input   term   note   接口   https   图形化   sdn   图形   

原文地址:https://www.cnblogs.com/Qqun821460695/p/12016471.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!