python语音播报天气预报_python让生活更有趣--来个语音天气助手吧
须知说明
天气来源
DT阿凡达数据,需要api_key
腾讯天气,无需key
语音来源
百度Ai开放平台(需要申请key,在线合成mp3文件,文本长度有限制,但声音好听)
pyttsx3语音库(不用在线转语音,不生成mp3文件,直接播放,声音一般)
环境
python 3.+
库依赖
# baidu-aip==2.2.0.0
# certifi==2018.1.18
# chardet==3.0.4
# idna==2.6
# pypiwin32==223
# pyttsx3==2.7
# pywin32==223
# requests==2.18.4
# urllib3==1.22
#一步安装方法:需要到[我的项目]下载req.txt
pip install -r req.txt
文件结构
│ map.txt//创建城市数据表
│ test.py//测试运行文件
│ zh_map.db//国内省市数据库
├─base
│ │- avata_weather.py//DT阿凡达数据模块实现
│ │- baidu_ai_voice.py//百度语音合成接口处理模块
│ │- weather.py//主要是天气信息的百度ai语音合成模块
│ │- wisqqcom_weather.py//腾讯天气数据解析模块
│
└─model
│- map_db.py//国内省市数数据库模块
示例图片
test.JPG
关键代码
– wisqqcom_weather.py
获取腾讯天气的json数据
def get_wethear_from_wisqqcom(province,city):
#parse.quote()这个函数调用很重要,主要是将字符串转为url编码
province=parse.quote(province)
city=parse.quote(city)
url_data='http://wis.qq.com/weather/common?
source=pc&weather_type=observe%7Cforecast_24h%7
Cindex%7Calarm%7Ctips&province='+province+'&city='+city+'
&county=&callback='
with urllib.request.urlopen(url_data) as response:
str = response.read().decode('UTF-8','strict')
return json.loads(str)
腾讯天气数据组合成需要的天气预报文本:
def get_wethear_info_text(province,city):
dict=get_wethear_from_wisqqcom(province,city)
if dict['status']!=200:
return '获取%s天气失败,请重试'%city
today=dict['data']['forecast_24h']['1']
msg=''
for k,v in today_weather_keyword.items():
msg+=v+':'+today[k]+','
#print (msg)
today_tips=dict['data']['index']
tips=''
for k,v in wheather_keywords.items():
if k=='alarm':
continue
tips+=v+today_tips[k]['detail']
if dict['data']['alarm'] != '':
tips=wheather_keywords['alarm']+'无,'+tips
#print(tips)
return '正在为你播报'+province+city+'天气'+msg+tips+'播报结束!'
-baidu_ai_voice.py
百度Ai 语音合成与保存
def translate_voice(content_data,filename):
print (baidu_3args)
client = AipSpeech(baidu_3args['app_id'], baidu_3args['api_key'], baidu_3args['secret_key'])
#对文本长度进行检测,截取区间为0-512,然后进行拼接,直到长度小于512
while len(content_data)>512:
content =content_data[0:512]
print (content)
result = client.synthesis(content, 'zh', 1, {'vol': 12,})
if not isinstance(result, dict):
with open(filename, 'ab+') as f:
f.write(result)
else:
return False
content_data=content_data[512:len(content_data)]
#print(content_data)
#剩余的或者小于512的一段直接合成
result = client.synthesis(content_data, 'zh', 1, {'vol': 12,})
if not isinstance(result, dict):
with open(filename, 'ab+') as f:
f.write(result)
return True
else:
return False
-test.py
如果要测试百度ai语音的weather.info_by_wisqqcom请自己把baidu_3args的参数配置好,赋值给weather.config[‘baidu_3args’]
同样如果要获取阿凡达的天气请配置config[‘avata_key’]的值,调用函数为 weather.info(province,city)
注意config[‘avata_key’],weather.config[‘baidu_3args’]不需要同时配,看你的需求
import model.map_db as db
import base.weather as weather
import pyttsx3
#baidu_3args={
# 'app_id':'',
# 'api_key':'',
# 'secret_key':''
#}
#weather.config['avata_key']=''
#weather.config['baidu_3args']=baidu_3args
#db.initdata('zh_map.db','map.txt') 城市地图数据库建立与初始化
city=input('城市:')
province=db.search_province_by_city('zh_map.db',city)
if province!='':
#weather.info(province,city) #阿凡达
#data=weather.info_by_wisqqcom(province,city) #腾讯
#print('已保存为%s'%data)
##以下是pyttsx3语音,不是百度ai语音
engine = pyttsx3.init()
msg=weather.get_text(province,city)
#打印天气预报信息
print(msg)
engine.say(msg)
engine.runAndWait()
其他
对于为什么要创建数据库的原因是,因为查询天气时需要省份参数也需要城市参数,为了实现输入城市直接匹配省份而建立了省和城市两个数据表
使用百度ai语音合成注意事项:
联网调用http接口 。[REST API] 仅支持最多512字(1024 字节)的音频合成,合成的文件格式为mp3。
没有其他额外功能。
如果需要使用离线合成等其它功能,请使用Android或者iOS 合成 SDK
请严格按照文档里描述的参数进行开发。请注意以下几个问题:
1. 合成文本长度必须小于1024字节,如果本文长度较长,可以采用多次请求的方式。切忌不可文本长度超过限制。
2. 语音合成 rest api初次申请默认请求数配额 200000次/天,如果默认配额不能满足需求,请申请提高配额。
3. 必填字段中,严格按照文档描述中内容填写。
项目地址
python语音播报天气预报_python让生活更有趣--来个语音天气助手吧相关推荐
- python语音播报天气预报_python实现智能语音天气预报
python编写的语音天气预报 本系统主要包括四个函数: 1.获取天气数据 1.输入要查询天气的城市 2.利用urllib模块向中华万年历天气api接口请求天气数据 3.利用gzip解压获取到的数据, ...
- python语音播报天气预报_树莓派之天气预报语音播报
目录 树莓派之天气预报语音播报 方案选定 项目基调 需求分析 解决方案 具体实施 step1天气信息 安装ilang软件 json解析和文字组合 定时任务 树莓派之天气预报语音播报 前几天跟同事在聊家 ...
- android智能机顶盒的ota设计,智能机顶盒APP方案开发,让生活更有趣!
原标题:智能机顶盒APP方案开发,让生活更有趣! 目前的有线存量机顶盒配置低.支撑业务比较少.用户体验也非常差,只能满足基本的看电视需求,并不支持新业务形态,也很难进行新业务拓展,面临用之无味.弃之可 ...
- 让生活更有趣,不可少的手帐笔记神器!
让生活更有趣,不可少的手帐笔记神器! 最近收到了朋友寄来的一个礼物,迷你打印机:咕咕机. 然后就玩嗨了✌,感觉这个神奇很有趣! 和大家分享分享---- 这个迷你打印机很精致小巧,非常方便携带.尤其是新 ...
- uniApp 新闻详情页语音播报,百度语音合成app端、H5端语音播报实例
非常轻便的语音合成接口,可以用于新闻详情页语音播报,实例功能: 点击"播放"按钮播放新闻详情页面的内容,播放按钮文字也图标变为"暂停",再点击重新播放. 实例用 ...
- python 语音播报库_Python爬取天气信息并语音播报
导读 爬虫是爬取网页的相关内容,了解HTML能够帮助你更好的理解网页的结构.内容等. TCP/IP协议,HTTP协议这些知识了解一下就可以,能够让你了解在网络请求和网络传输上的基本原理,这次的小案例用 ...
- python语音播报天气预报_Python3爬虫之自动查询天气并实现语音播报
一.写在前面 之前写过一篇用Python发送天气预报邮件的博客,但是因为要手动输入城市名称,还要打开邮箱才能知道天气情况,这也太麻烦了.于是乎,有了这一篇博客,这次我要做的就是用Python获取本机I ...
- python 语音播报库_python 语音库
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我需要自动分离两位发言者的声音. 我刚开始学习语音识别,我看了python的wa ...
- python 语音播报库_python腾讯语音合成
一.腾讯语音合成介绍 腾讯云语音合成技术(TTS)可以将任意文本转化为语音,实现让机器和应用张口说话. 腾讯TTS技术可以应用到很多场景,比如,移动APP语音播报新闻:智能设备语音提醒:依靠网上现有节 ...
最新文章
- java如何调用thrift_java – 我想在一个传输上使用多个服务(Thrift)
- Qt QLabel 显示gif动图
- Fragment 底部菜单栏
- css初始化_CodeMirror项目【在线编辑器】--项目初始化
- 第二届全国计算机安全技能比赛,第2届网络安全技能大赛试题(2018年).PDF
- javascript 小结
- python变量详解_python基础教程-03-变量详解
- php中不让数组初始化,javascript中数组与php数组初始化差异
- C语言逐行读取文件内容
- Eclipse调试Java的10个技巧
- 字符串匹配之PabinKarp(模式匹配)
- 阿里巴巴CTO程立:践行“好科技”,我们正在做这些事
- 初学者指南:为开源做贡献
- 联想打印机测试软件,办公实用主义 联想LJ3800DW打印机测试
- editplus html格式化,Editplus 格式化js,css,html工具
- java 6个逆向工程软件
- wps下载的简历无法删除空白页
- 浅析专题中的构图之美
- 两个可能常用到的几何知识(圆与椭圆的方程、求垂直向量)
- 友价源码开发系统如何对接验证码功能?