须知说明

天气来源

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让生活更有趣--来个语音天气助手吧相关推荐

  1. python语音播报天气预报_python实现智能语音天气预报

    python编写的语音天气预报 本系统主要包括四个函数: 1.获取天气数据 1.输入要查询天气的城市 2.利用urllib模块向中华万年历天气api接口请求天气数据 3.利用gzip解压获取到的数据, ...

  2. python语音播报天气预报_树莓派之天气预报语音播报

    目录 树莓派之天气预报语音播报 方案选定 项目基调 需求分析 解决方案 具体实施 step1天气信息 安装ilang软件 json解析和文字组合 定时任务 树莓派之天气预报语音播报 前几天跟同事在聊家 ...

  3. android智能机顶盒的ota设计,智能机顶盒APP方案开发,让生活更有趣!

    原标题:智能机顶盒APP方案开发,让生活更有趣! 目前的有线存量机顶盒配置低.支撑业务比较少.用户体验也非常差,只能满足基本的看电视需求,并不支持新业务形态,也很难进行新业务拓展,面临用之无味.弃之可 ...

  4. 让生活更有趣,不可少的手帐笔记神器!

    让生活更有趣,不可少的手帐笔记神器! 最近收到了朋友寄来的一个礼物,迷你打印机:咕咕机. 然后就玩嗨了✌,感觉这个神奇很有趣! 和大家分享分享---- 这个迷你打印机很精致小巧,非常方便携带.尤其是新 ...

  5. uniApp 新闻详情页语音播报,百度语音合成app端、H5端语音播报实例

    非常轻便的语音合成接口,可以用于新闻详情页语音播报,实例功能: 点击"播放"按钮播放新闻详情页面的内容,播放按钮文字也图标变为"暂停",再点击重新播放. 实例用 ...

  6. python 语音播报库_Python爬取天气信息并语音播报

    导读 爬虫是爬取网页的相关内容,了解HTML能够帮助你更好的理解网页的结构.内容等. TCP/IP协议,HTTP协议这些知识了解一下就可以,能够让你了解在网络请求和网络传输上的基本原理,这次的小案例用 ...

  7. python语音播报天气预报_Python3爬虫之自动查询天气并实现语音播报

    一.写在前面 之前写过一篇用Python发送天气预报邮件的博客,但是因为要手动输入城市名称,还要打开邮箱才能知道天气情况,这也太麻烦了.于是乎,有了这一篇博客,这次我要做的就是用Python获取本机I ...

  8. python 语音播报库_python 语音库

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我需要自动分离两位发言者的声音. 我刚开始学习语音识别,我看了python的wa ...

  9. python 语音播报库_python腾讯语音合成

    一.腾讯语音合成介绍 腾讯云语音合成技术(TTS)可以将任意文本转化为语音,实现让机器和应用张口说话. 腾讯TTS技术可以应用到很多场景,比如,移动APP语音播报新闻:智能设备语音提醒:依靠网上现有节 ...

最新文章

  1. java如何调用thrift_java – 我想在一个传输上使用多个服务(Thrift)
  2. Qt QLabel 显示gif动图
  3. Fragment 底部菜单栏
  4. css初始化_CodeMirror项目【在线编辑器】--项目初始化
  5. 第二届全国计算机安全技能比赛,第2届网络安全技能大赛试题(2018年).PDF
  6. javascript 小结
  7. python变量详解_python基础教程-03-变量详解
  8. php中不让数组初始化,javascript中数组与php数组初始化差异
  9. C语言逐行读取文件内容
  10. Eclipse调试Java的10个技巧
  11. 字符串匹配之PabinKarp(模式匹配)
  12. 阿里巴巴CTO程立:践行“好科技”,我们正在做这些事
  13. 初学者指南:为开源做贡献
  14. 联想打印机测试软件,办公实用主义 联想LJ3800DW打印机测试
  15. editplus html格式化,Editplus 格式化js,css,html工具
  16. java 6个逆向工程软件
  17. wps下载的简历无法删除空白页
  18. 浅析专题中的构图之美
  19. 两个可能常用到的几何知识(圆与椭圆的方程、求垂直向量)
  20. 友价源码开发系统如何对接验证码功能?

热门文章

  1. 电子学会 青少年编程等级考试(C语言)六级(数据结构)试题
  2. 老陈VFD 显示驱动程序(串口发送)
  3. 计算机科学与技术人工生命,人工生命
  4. PHP初级【10天小积累-第三天】
  5. 在AbpZero中hangfire后台作业的使用——开启hangfire
  6. 北斗时钟同步服务器(卫星授时)应用智慧路灯系统
  7. 【Unity3DRPG入门学习笔记第五卷】MouseManager 鼠标控制人物移动
  8. python 自动发微博_python3实现古城钟楼每个时辰自动发微博
  9. PHP跨境电商商城系统源码支持多语言功能
  10. 计算机视觉学习day1