python实现智能语音天气预报

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实现智能语音天气预报就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 详解用python自制微信机器人,定时发送天气预报

    0 引言 前段时间找到了一个免费的天气预报API,费了好段时间把这个API解析并组装成自己想用的格式了,就想着如何实现每天发送天气信息给自己.最近无意中发现了wxpy库,用它来做再合适不过了.以下是wxpy库的简介: wxpy基于itchat,使用了 Web 微信的通讯协议,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展.实现了微信登录.收发消息.搜索好友.数据统计.微信公众号.微信好友.微信群基本信息获取等功能. 废话不多说,代码写起来. 1 环境 操作系统:Windows / Li

  • Python3爬虫教程之利用Python实现发送天气预报邮件

    前言 此次的目标是爬取指定城市的天气预报信息,然后再用Python发送邮件到指定的邮箱. 下面话不多说了,来一起看看详细的实现过程吧 一.爬取天气预报 1.首先是爬取天气预报的信息,用的网站是中国天气网,网址是http://www.weather.com.cn/static/html/weather.shtml,任意选择一个城市(比如武汉),然后要爬取的内容为下面的部分: 先查看网页源代码,并没有找到第一张图中的内容,说明是这些天气信息是通过别的方式加载出来的.我们打开开发者工具,点击XHR选项

  • Python定时发送天气预报邮件代码实例

    这篇文章主要介绍了Python定时发送天气预报邮件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 用python爬虫爬到的天气预报,使用smtplib和email模块可以发送到邮箱,使用schedule模块可以定时发送.以下是代码- #导入模块 import requests from bs4 import BeautifulSoup import smtplib from email.mime.text import MIMEText

  • python使用itchat模块给心爱的人每天发天气预报

    本文实例为大家分享了python给心爱的人每天发天气预报的具体代码,供大家参考,具体内容如下 下面的代码实现了用了之前获取天气的代码,然后用itchat模块 给指定的人发送消息 代码比较简单,改一下CITY_NAME和name个发送语句直接就可以用 import requests import json import itchat from threading import Timer global CITY_NAME CITY_NAME = "北京" headers = { 'Use

  • 基于Python获取城市近7天天气预报

    这篇文章主要介绍了基于Python获取城市近7天天气预报,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先,我们打开中国天气网,找到黄石市近7天天气的网页. http://www.weather.com.cn/weather/101200601.shtml 然后按F12开始分析网页结构,找到各个标签,并分析它们的作用.h1:日期:p:天气:tem-span:最高温:tem-i:最低温:win:风:em:风向:win-i:风力. 接下来,我们需

  • python实现智能语音天气预报

    python编写的语音天气预报 本系统主要包括四个函数: 1.获取天气数据 1.输入要查询天气的城市 2.利用urllib模块向中华万年历天气api接口请求天气数据 3.利用gzip解压获取到的数据,并编码utf-8 4.利用json转化成python识别的数据,返回为天气预报数据复杂形式的字典(字典中的字典) 2.输出当天天气数据 1.格式化输出当天天气,包括:天气状况,此时温度,最高温度.最低温度,风级,风向等. 3,语音播报当天天气 1.创建要输出的语音文本(weather_forecas

  • Python爬取国外天气预报网站的方法

    本文实例讲述了Python爬取国外天气预报网站的方法.分享给大家供大家参考.具体如下: crawl_weather.py如下: #encoding=utf-8 import httplib import urllib2 import time from threading import Thread import threading from Queue import Queue from time import sleep import re import copy lang = "fr&qu

  • python文字转语音实现过程解析

    这篇文章主要介绍了python文字转语音实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用百度接口 接口地址 https://ai.baidu.com/docs#/TTS-Online-Python-SDK/top 安装接口 pip install baidu-aip from aip import AipSpeech """ 你的 APPID AK SK """ APP_ID =

  • Python做智能家居温湿度报警系统

    物联网技术开创了一个智慧城市的新时代,从智能摄像头到部署各种传感器,以此对城市各种数据进行收集,并经云端AI技术处理后,有助于提高对交通和街道等城市公共管理能力:物联网的发展也为智能家居带来了新的玩法,智能机器人,智能冰箱,智能电视等相继推出,智能家居离我们越来越近.下面带大家用Python通过HTTP协议做一个廉价的温湿度报警系统. 物联网应用需要检测设备和处理设备,我们选用TPYBoard v102作为中心处理设备.为了方便我选择用无线传输,选了TPYBoard v202(ESP8266模块

  • python调用百度语音REST API

    本文实例为大家分享了python调用百度语音REST API的具体代码,供大家参考,具体内容如下 (百度的rest接口的部分网址发生了一定的变化,相关代码已更新) 百度通过 REST API 的方式给开发者提供一个通用的 HTTP 接口,基于该接口,开发者可以轻松的获得语音合成与语音识别能力.SDK中只提供了PHP.C和JAVA的相关样例,使用python也可以灵活的对端口进行调用,本文描述了简单使用Python调用百度语音识别服务 REST API 的简单样例. 1.语音识别与语音合成的调用

  • Python谱减法语音降噪实例

    代码中用到了nextpow2,其中n = nextpow2(x) 表示最接近x的2的n次幂. #!/usr/bin/env python import numpy as np import wave import nextpow2 import math # 打开WAV文档 f = wave.open("filename.wav") # 读取格式信息 # (nchannels, sampwidth, framerate, nframes, comptype, compname) par

  • 使用python编写一个语音朗读闹钟功能的示例代码

    想找一个可以播放文字的闹钟找不到,自己写一个更简单.TTS实现由很多种办法,百度等都提供了API接口,但类似百度,需要先注册等一系列动作. 其实windows自带的win32com功能可以简单实现TTS功能.要用到win32com模块, 可以通过如下指令进行安装 python -m pip install pypiwin32 安装以后就可以编写播放代码了如下 #coding:utf-8 import win32com.client spk = win32com.client.Dispatch("

  • python爬虫智能翻页批量下载文件的实例详解

    python爬虫遇到爬取文件内容时,需要一页页的翻页爬取,这样很是麻烦,其实可以获取每个列表信息下的文件名和文件链接,让文件名和文件链接处理为列表,保存后下载,实现智能翻页批量下载文件,本文以以京客隆为例,批量下载文件,如财务资料,他的每一份报告都是一份pdf格式的文档.以此页面为目标,下载他每个分类的文件python爬虫实战之智能翻页批量下载文件. 1.引入库 import requests import pandas as pd from lxml import etree import r

  • 基于Python PaddleSpeech实现语音文字处理

    目录 前言 环境安装 项目验证 tts语音合成 asr语音识别 标点恢复 总结 前言 这段时间一直在研究飞浆平台,最近试了试PaddleSpeech项目,试着对文本语音做处理.整体的效果个人觉着不算特别优越,只能作为简单的学习使用. 项目github地址:github仓库 环境安装 首先我们看一下项目结构以及安装文档. 需要Python3.7以上.C++环境.requirements安装等等,下面按照我的顺序说一下. 1.conda安装Python3.9虚拟环境 使用conda安装python3

  • 基于Python实现智能停车场车牌识别计费系统

    目录 项目结构 主要代码 实现效果 前段时间练习过的一个小项目,今天再看看,记录一下~ 项目结构 说明: datefile文件夹:保存车辆信息表的xlsx文件 file文件夹:保存图片文件夹.ic_launcher.jpg是窗体的右上角图标文件:income.png是实现收入统计的柱状图(下一篇文章实现):key.txt是使用百度的图片识别AI接口申请的key:test.jpg保存的是摄像头抓取的图片 venv文件夹:项目所需要的各种模块,即项目运行环境 btn.py文件:按钮模块 main.p

随机推荐