一、写在前面

之前写过一篇用Python发送天气预报邮件的博客,但是因为要手动输入城市名称,还要打开邮箱才能知道天气情况,这也太麻烦了。于是乎,有了这一篇博客,这次我要做的就是用Python获取本机IP地址,并根据这个IP地址获取物理位置也就是我所在的城市名称,然后用之前的办法实现查询天气,再利用百度语音得到天气预报的MP3文件,最后播放,这样是不是就很方(tou)便(lan)了呢?

二、具体步骤

这次有四个py文件:get_ip.py,get_wather.py,get_mp3.py和main.py。其中get_ip.py实现了获取本机ip地址和物理位置,get_wather.py实现了根据物理位置查询天气,get_mp3.py实现了调用百度语音API把文本转化成MP3文件,main.py是我们需要运行的py文件。这里由于查询天气用的是之前的方法,所以就不需要赘述了,主要说一下get_ip.py和get_mp3.py。

(1)get_ip.py

要获取本机IP,这里有一个很简单的办法,就是打开这个网页:https://www.ip.cn/,打开之后就能看到我们的IP地址和所在地理位置信息了。因为我们可以请求一下这个网页,然后对返回的结果进行一下解析,就能得到我们想要的结果了。代码如下:

"""

Version: Python3.5

Author: OniOn

Site: http://www.cnblogs.com/TM0831/

Time: 2019/2/9 16:46

"""

import re

import requests

# 获取本机IP和地理位置

def get_ip():

res = requests.get("http://www.ip.cn")

result = re.findall("

您现在的 IP:(.*?)

所在地理位置:(.*?)", res.text)

ip, address = "", ""

if len(result):

ip = result[0][0] # IP地址

address = result[0][1].split(' ')[0] # 地理位置

else:

print("Error!")

exit()

return ip, address

(2)get_mp3.py

这里需要使用百度云,没有账号的需要先注册一下,然后搜索一下百度语音,再创建一个应用,如下:

这里AppID、API Key和Secret Key在后面都需要用到,具体使用方法参见官方文档。这里还需要安装一个第三方库:baidu-aip,可以使用pip install baidu-aip进行下载安装。

下面是一个调用百度语音接口的示例:

from aip import AipSpeech

""" 你的 APPID AK SK """

APP_ID = '你的 App ID'

API_KEY = '你的 Api Key'

SECRET_KEY = '你的 Secret Key'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

result = client.synthesis('你好百度', 'zh', 1, {

'vol': 5,

})

# 识别正确返回语音二进制 错误则返回dict

if not isinstance(result, dict):

with open('auido.mp3', 'wb') as f:

f.write(result)

其中synthesis方法的各参数含义如下:

有了这个例子,做起来就简单多了,只需要将天气预报的文本传入进去就行了,然后我们可以根据自己喜好改变一下其他参数。代码如下:

"""

Version: Python3.5

Author: OniOn

Site: http://www.cnblogs.com/TM0831/

Time: 2019/2/9 17:53

"""

from aip import AipSpeech

# 你的APP_ID,API_KEY,SECRET_KEY

APP_ID = ""

API_KEY = “"

SECRET_KEY = ""

# 获取语音文件

def get_mp3(text):

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

result = client.synthesis(text, 'zh', 1, {"spd": 4, "vol": 6})

# 识别正确返回语音二进制,错误则返回dict

if not isinstance(result, dict):

with open('weather.mp3', 'wb') as f:

f.write(result)

else:

print("Error!")

exit()

三、运行结果

首先是的代码运行的结果,如下图:

然后会生成一个weather.mp3文件:

最后会播放这个MP3文件。

完整代码已上传到GitHub!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python语音播报天气预报_Python3爬虫之自动查询天气并实现语音播报相关推荐

  1. python web微信应用(五) 自动下载接收的图片/语音/视频/普通文件

    文章目录 前言 一.webwx 模块介绍 二.自动下载接收的图片/语音/视频/普通文件到本地 前言 本篇文章作为系列第五篇文章,将实现自动下载接收到的图片.语音.视频.普通文件的功能: 系列其它文章请 ...

  2. 企业级Python开发大佬利用网络爬虫技术实现自动发送天气预告邮件

    前天小编带大家利用Python网络爬虫采集了天气网的实时信息,今天小编带大家更进一步,将采集到的天气信息直接发送到邮箱,带大家一起嗨~~拓展来说,这个功能放在企业级角度来看,只要我们拥有客户的邮箱,之 ...

  3. python微博批量点赞_python3 爬虫学习:自动给你心上人的微博点赞(二)

    selenium定位元素的八大方法: 在开始登录前,咱们得先学习一下selenium定位元素的方法,不然找不到元素是没办法完成自动操作 find_element_by_id() find_elemen ...

  4. python 扫码签到_python3之51cto自动定时签到

    前言 之前写过一遍,pyhton结合图灵机器人自动回复,之前51cto是使用网页签到,但是已经失效了,微信签到的原理和之前的机器人差不多的,不过是使用了python的itchat模块,结合定时功能,自 ...

  5. python header头部请求_python3爬虫怎样构建请求header

    写一个爬虫首先就是学会设置请求头header,这样才可以伪装成浏览器.下面小编我就来给大家简单分析一下python3怎样构建一个爬虫的请求头header. 1.python3跟2有了细微差别,所以我们 ...

  6. python 反爬机制_python3爬虫--反爬虫应对机制

    python3爬虫--反爬虫应对机制 内容来源于: 前言: 反爬虫更多是一种攻防战,网络爬虫一般有网页爬虫和接口爬虫的方式:针对网站的反爬虫处理来采取对应的应对机制,一般需要考虑以下方面: ①访问终端 ...

  7. python城市经纬度网格_Python3爬虫 利用百度地图api得到城市经纬度

    有2种方式,第一种是利用urllib , 方法1:利用urllib , 先把url 转成urlcode,然后读取网页,读到网页再用json读取内容,比较麻烦. 可以在浏览器输入,看一下格式. http ...

  8. python手枪_Python入门,爬虫训练——枪械查询

    一.效果图: 二.怎么做到的? 1,首先安装requests.bs4. 这两个第三方模块. 我们按住win+R 在弹出来的窗口上输入cmd,来到命令窗口,输入pip install requests. ...

  9. python语音播报天气预报_python让生活更有趣--来个语音天气助手吧

    须知说明 天气来源 DT阿凡达数据,需要api_key 腾讯天气,无需key 语音来源 百度Ai开放平台(需要申请key,在线合成mp3文件,文本长度有限制,但声音好听) pyttsx3语音库(不用在 ...

最新文章

  1. linux generic什么意思_如何在 Ubuntu Linux 上释放 /boot 分区的空间? | Linux 中国
  2. SQL 养成一个好习惯是一笔财富
  3. php70wfpm,CentOS 7 安裝 Nginx、PHP7、PHP-FPM
  4. python turtle画熊猫人_Python 使用turtle插件,画小猪佩奇
  5. ajax清除session,跳出iframe框架页面后跳转页面
  6. Mac OS X: launchd plist在线编辑器
  7. php 汉字拼音字典排序,按拼音排序的小技巧
  8. 贪心算法-会议安排问题
  9. C# winform 界面美化技巧(扁平化设计)
  10. JScript基本认知
  11. python精灵什么意思_图像和精灵有什么区别?
  12. 屏蔽百度搜索结果页的推送广告
  13. JavaScript学习(五)
  14. 最全APP测试思想及流程要点,高薪测试人员一定要看
  15. Tor配置:514 Authentication required
  16. 项目开发遇到前端传递时间问题处理
  17. Java回炉学习(七)
  18. 同一台服务器上安装mysql5.5和mysql5.7 不同版本的实例
  19. js价格筛选商品案例
  20. uniapp 动态获取手机屏幕高度

热门文章

  1. 微信小程序-天气预报1.0版本
  2. 在腾讯云中配置服务器外网可以访问
  3. Delphi中的线程类--之(2)
  4. 常见通信协议之UART、RS485
  5. Ubuntu22.04安装riscv64-toolchain和QEMU
  6. ResultMap中association和collection的区别
  7. VC dll 注入之钩子注入
  8. RSS Can:将网站信息流转换为 RSS 订阅源(三)
  9. Numpy piecewise报错
  10. 谈yolov5车辆识别