简介

最近专注于捣腾mac系统,发现了系统语音朗读的功能,于是萌生了从一些天气服务的API获得并解析天气,在本地调用语音朗读指令,使得电脑上的“天气预报”也实现播报功能。

代码我已经上传到本人的GitHub上去了,需要的可以任意取用。

代码实现不是很麻烦,看得懂的人看看就晓得了。如果看不懂,也不需要纠结(看得懂我那蹩脚的英文说明和注释也足够了)。

代码中解析的天气服务,来自雅虎提供的天气API:http://xml.weather.yahoo.com/forecastrss?w={0}&u={1}

其中,参数{0}表示城市代码,也是唯一你可能需要改动的地方,我使用的是南京。你所在的城市代码,可以在这里查找到:http://sigizmund.info/woeidinfo/

参数{1}表示使用的温度单位,不玩非主流,传入“c”表示使用摄氏度,另一值为“F”

需要的支持库:FeedParser

因为Yahoo!提供的这个API返回的格式是标准的RSS 2.0格式,而Python也正好提供了一个解析RSS的库,名为:FeedParser;因此,那段程序脚本需要该库的支持。

关于如何安装该RSS解析库?

如果你已经安装了Pip,那么就是一句话的事情:

pip install feedparser

如果,你没有安装过pip,我这里就不说了,教程网上是可以找到的(建议先安装pip,然后安装该库)

开启系统语音朗读功能

既然需要语音播报,当然需要开启系统语音相关的功能,这里因为需要用中文播报,需要开启中文朗读,Apple的国际化做得还不错,提供了中文语音库,不过需要下载。

首先,打开系统设置中的如下设置项:

进入后切换至“Text to speech”(中文的系统应该是文本至语音吧):

点开“System Voice”后的下来菜单,选择不同语言的语音库,默认的是英文语音,选择自定义查找“Chinese”:

可以看到只中文相关的就提供了三种语音库:中国大陆简体、广东话、中华台湾的台湾话(赶紧收复那该死的TW吧!):

注:虽然提供了,但没有内置到你目前的操作系统,所以当你选择的时候,会提示你先下载(文件还不小,所以按需下载,我这里打上勾代表我已经下载了中文库了)

下载完,选择中文即可,点击Play是可以试听的!

好了,以上就已经使得默认的语音库为中文语音库了。如何测试,它会读中文?你可以在应用程序的实用工具里找到“终端”(英文系统叫Terminal)。打开它,然后输入:

say 祝你:身体健康

系统就会自动朗读:祝你:身体健康

为系统设置定时唤醒和定时开机的系统计划

这个同样不难,进入系统设置,选择节能灯的菜单:

进入点击:

进入,即可设置定时计划:

系统定时开机设置完毕!

下面,还是回到我上篇文章中如何使得一个脚本程序开机自启。需要的文件,我已经在代码库里提供了。

代码注解

代码中,我自己设置了,假如过了九点机子才被开机,那么将取消自动播报天气预报:

#before 08:59:59, the weather voice reportor will start if time.localtime(time.time())[3] <= 8:parserRSSFeed(WEATHER_SERVICE_URL)

上面提到的如何设置系统定时开机,不是必须动作,这只不过可以使得这个程序看起来更为“智能”一点。

因为,say命令遇到一些特殊字符,会使得朗读命令失效,所以,我简单得列举了几个我碰到过的失败的例子的正则表达式,如果文字中包含这些,则将其替换:

#handle some "special char" which will stop the "speak order"
#such as -、(、).....
PRE_PROCESSING_EXPRESSION=\
(('[-]'          ,   '负'),('[\(]'         ,   '左括号'),('[\)]'         ,   '右括号')#......#TODO:append more
)
def processSpeakingTxt(txtStr):global PRE_PROCESSING_EXPRESSIONfor (reg_Expression, replaceingStr) in PRE_PROCESSING_EXPRESSION:if re.search(reg_Expression, txtStr) is not None:txtStr = re.sub(reg_Expression, replaceingStr, txtStr)return txtStr

另外如果你不想改.sh和.plist文件,你还需要在/usr/local下新建一个名为:customizeService的文件夹,然后把.py和.sh的两个文件放到其下。.plist文件如何放置,还是看我上一篇文章。

最好,还要提醒一下:成功执行的前提是——系统开机时,电脑已连接互联网(否则你如果想听见语音播报,只能在之后,自己手动执行了)

原文发布时间为:2013-02-15

本文作者:vinoYang

本文来自云栖社区合作伙伴CSDN博客,了解相关信息可以关注CSDN博客。

Python脚本实现Mac开机自动语音播报天气相关推荐

  1. java语音播报天气_Home Assistant系列 -- 自动语音播报天气

    在树莓派上要让 Home Assistant  发声朗读 ,从硬件上我们需要 3.5mm插口音箱(耳机)或usb口音箱(耳机).软件方面 我们需要一个媒体播放器以及 tts ( 将文字转化为语音的服务 ...

  2. 自动语音播报WinCC报警消息

    文章转载至微信公众号:人机常情 WinCC 自动语音播报WinCC报警消息 原创 He havefun 人机常情 WinCC 3月3日 作者:胡世川 - 西门子数字化工业集团自动化部 实现思路: 实时 ...

  3. python脚本连接交换机,自动执行命令。

    python脚本连接交换机,自动执行命令. python脚本连接交换机,自动执行命令,查询交换机端口的学习mac地址,自动写入txt中.设置定时器,每xx秒执行一次,自动对比上次返回结果,TXT中保存 ...

  4. python登录交换机执行命令_利用Python脚本登录交换机实现自动配置备份的方法

    主机参考:服务器测评参考推荐网,专注分享服务器优惠信息!如果您想在本站投放您的广告,点此直达!如果您不想付费,您也可以免费投稿您的产品信息,点此直达!联系我们 部分文章发布时间较久远,可能存在未知因素 ...

  5. python脚本实现GNSS数据自动下载

    python脚本实现GNSS数据自动下载 本文代码思路参考了博文[https://blog.csdn.net/weixin_39672353/article/details/1098525] 在此基础 ...

  6. 电脑开机自动联服务器,如何让Mac开机自动连接到NAS或网上邻居上的电脑

    越是越多人会用空间更大的NAS来保存,不过奇怪的是Mac电脑似乎没法自动记住已连线的网络磁盘或资料夹,必须每次还开机后都再按一次挂机,甚至还得重新输入一次密码. 如果你有这样的困扰,可以试试试看一下的 ...

  7. 火车站信号自动语音播报系统的设计

    在现代工业控制过程中,广泛应用了工作状态和故障状态报警装置,通常它以声.光形式提醒操作者及时处理出现的问题.随着新技术的发展,人们又开始将语音技术应用到这一领域.它以更直观.易懂.更方便.准确的形式向 ...

  8. android 加固服务器,Python 脚本构建Android APK 自动加固、打渠道包并上传服务器

    Python 脚本构建Android APK 自动加固.打渠道包并上传服务器 常规流程 打出原始apk 使用乐固工具加固并打出响应渠道包 将生成的渠道包上传对应服务器,生成推广链接 因为每一步都需要人 ...

  9. springboot实现企业微信机器人自动按时播报天气

    springboot实现企业微信机器人自动按时播报天气 第一步搭建项目...这个没有什么好说的 配置: <dependency><groupId>org.apache.http ...

最新文章

  1. 人类与AI结合的最佳形态是什么样?|A16Z内部万字报告
  2. java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.cho
  3. Spine 2D animation for games
  4. Linux之fgrep命令
  5. 拓端tecdat|R语言混合正态分布极大似然估计和EM算法
  6. webgis期末考试试题_WebGIS考试参考试题
  7. Git for Windows 国内下载站,发布
  8. 各种计算机控制系统特点小结
  9. 美国国家安全局(NSA)网络攻击主战武器“验证器”
  10. linux和主机共享文件,设置Linux虚拟机与主机共享文件的方法
  11. CDN加速是什么?具体有什么用?
  12. android期末复习
  13. 高品质摄影作图台式计算机推荐,能拍出高品质作品的强大系统 摄影师段岳衡专访...
  14. 「云计算」全球最大的5家云计算公司
  15. pytorch 12 支持任意维度数据的梯度平衡机制GHM Loss的实现(支持ignore_index、class_weight,支持反向传播训练,支持多分类)
  16. java数组下标越界的问题
  17. 【NIPS 2018】完整论文下载链接
  18. 带你开发一个完整的 node.js 项目
  19. 4.12 使用格式刷实现单元格样式的快速复制 [原创Excel教程]
  20. 322. 零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每

热门文章

  1. C语言--数据在内存中的存储
  2. Linux源码安装软件包时--prefix的配置建议
  3. 什么是推挽输出,开漏输出?
  4. 进程间通信 [3] —— 信号SIGNAL、信号量SEMAPHORE
  5. zurb是什么网站_Zurb的Tribute库的Vue.js包装器,用于本机@mentions
  6. python3跑通smpl模型_SMPL模型改用python3+numpy计算
  7. 扒一扒流量攻击那些事
  8. Python爬虫JS解密详解,学会直接破解80%的网站(一)!!!
  9. ELK安装经常遇到的问题
  10. 产品经理如何进行数据分析?看这一篇文章就够了