适用于深圳市的报时 bash 脚本,用来播报当前时间、深圳市天气信息(每隔 4 小时)。
- 建议每隔半小时调度报时。 一个简单的 crontab 设置:
0,30 * * * * <你的帐号> /本脚本的路径/本脚本
午休不放音
0,30 * 0-12,14-23 * * <你的帐号> /本脚本的路径/本脚本
- 脚本会播报“上午”、“下午”、“晚上”等粗略时辰信息,并根据深圳市当天的日出时间、日落时间,在日出前报时时将时辰播报为“凌晨”,在日落前一小时报时时将时辰信息播报为“傍晚”。
具体时辰信息如下(时间区间为:包含左侧时间点、不包含右侧时间点,即 '[)'):
- “半夜”: 半夜 12 点及之后的一个小时
- “凌晨”: 1 点到深圳日出时间
- “早上”: 深圳日出时间到 08:30
- “上午”: 08:30 到 11:30
- “中午”: 11:30 到 13:30
- “下午”: 13:30 到深圳日落前一小时
- “傍晚”: 深圳日落前一小时 到 深圳日落
- “晚上”: 深圳日落 到 半夜 12 点
- 播报深圳天气信息: 每隔 4 小时的整点(具体说:00:00、04:00、08:00、12:00、16:00、20:00)报时时,附带播报深圳当日天气信息
- 播报提醒音: 在报时前,会先播报一个提示音。提示音在脚本当前路径下,名称为:
announce-time-notification.mp3
,可以将其他位置的 mp3 文件软连接到该文件名,格式必须为 mp3
若要正常使用报时,还需要安装如下包
sox
- 语音处理工具。这里只用到的了它提供的play
功能,用来将播报提醒音、TTS 语音播放出来。注意:确保你所使用的 sox 带有播放 mp3 格式的插件。jq
- 处理 JSON 数据的命令行工具。用来从深圳气象台返回的 JSON 数据中提取有用信息的工具curl
- 通常多数发行版都会有这个工具,但 debian 默认安装的是 wgethead
/tail
- 通常多数发行版都会有这两个工具(隶属于 coreutils 包)
本脚本使用了百度语音 API 接口来将文字转为语音,所以,你需要先去 http://yuyin.baidu.com/ 申请百度语音 API 的 APP KEY 和 APP 密码。申请后,将 key 的内容放到 /etc/asterisk/baidu-cloud-app-key.txt
文件中,将密码放到 /etc/asterisk/baidu-cloud-app-password.txt
文件中。并确保这两个文件的权限能让运行报时脚本的操作系统帐号访问。
然后,将本项目的 baidu-voice-api.sh
文件存放到 /etc/asterisk
文件夹下(这个脚本原先是用在 asterisk 服务器中的,所以还是沿用了原来的路径,你也可以放在其他地方,但要改一下 announce-time.sh
脚本),并为该文件加上可执行的权限。
最后,还要创建 /var/spool/asterisk/baidu-voice-api-results/
文件夹,该文件夹用来存储语音合成的语音文件,并确保该文件夹的权限能被运行报时脚本的操作系统帐号访问。
建议安装 asterisk
软件包,然后将你的操作系统帐号加到 asterisk
操作系统工作组中(需要注销或者重启才能生效,或者使用 su -
命令让 asterisk
工作组成员在新的终端窗口内生效),然后将 /var/spool/asterisk/baidu-voice-api-results/
的权限设置为 775
,将 /var/spool/asterisk/
的权限设置为 770