语音播报在Linux下是个非常有意思的事情,有时候来了一封邮件,或者完成了一项后台任务(比如备份、更新、爬虫任务等)之后来一次声音提醒,无疑会给工作者带来快乐。如果你的工作时间不规律,还可以用语音播报来提醒休息时间。这个时候就要用到文本转语音的工具。
Linux下的文本转语音的工具有espeak、festival、ekho等。小衲对这几个工具都逐个测试过,espeak不能识别汉字,festival操作复杂,基于festival的ekho在这三个工具里面是最好的。用以下命令可以实现ekho较好的播放效果:
ekho -s -10 -p -35 -r 15 "现在时间10点整,休息10分钟嘛"
但是ekho的语音比较生硬,一听就知道是机器自动生成的。(如下所示)
小衲不满意,于是继续搜索其他解决方案,发现几年前有人用Google翻译的tts工具实现了语音合成,想必效果应该不错,可惜现在谷歌已经不提供相应接口了。
不过呢!百度在这方面仍然有相关接口保留,比如http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=5&text=我是小衲(可用curl -o将这个链接导出为音频文件)
于是我做了一个下面的shell脚本,将其保存为/usr/bin/bdsay文件,然后运行sudo chmod 755 /usr/bin/bdsay
将其设置为可执行。bdsay的用法很简单:bdsay 我要说的话
#!/bin/bash
say() {
local IFS=+;
/usr/bin/mplayer -ao alsa -really-quiet -noconsolecontrols "http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=5&text=$*";
}
say $*
bdsay的语音效果比上面的ekho强多了。(如下所示)
接下来就是利用cron实现定时播报的功能,在crontab里加入以下一行即可:
0 * * * * export DISPLAY=:0.0;bdsay "现在时间`date +%_H`点整,休息10分钟嘛"
其中export DISPLAY=:0.0;
是必须的,否则cron无法播放声音。date +%_H
命令能计算当前时间是几点钟。
cron真是个好东西!很多时候要用到它。不懂如何设置cron定时任务的,可以参考本站的《Ubuntu 16.04设置crontab定时计划任务》或《ArchLinux设置cron定时计划任务(Manjaro也适用)》等文。
注:百度语音合成的接口已于2018.03.28失效。
山西省晋城市某Android用户觉得这篇文章很有帮助。
广东省广州市某Android用户觉得这篇文章很有帮助。
四川省成都市某Windows用户觉得这篇文章很有帮助。
香港特别行政区某Linux用户觉得这篇文章很有帮助。
学生党没有收入,他们需要某种东西却很难得到,带来的负面情绪我觉得是可以同情的。不要一棍子打翻一船人。
你说的很对,是可以同情。很多软件开发者都大发慈悲,做了educational版本。但学生党的“穷”不是藐视他人劳动成果的借口。作为学生党,将来很多人也都是靠知识和技能吃饭的,不尊重别人的知识产权,那么自己将来的知识产权又有什么理由获得别人的尊重。有的学生党很是狂妄,喜欢指点江山,当起评论家来一套一套的,根本无视开发者的辛苦,把开发者当孙子使唤,视开发者的盈利为大逆不道,肆意凌驾于开发者之上,就像孩子凌驾于父母之上,这是我最反感的类型。好在这类负面角色就像一锅粥的老鼠屎,不能代表所有正常、明是非的学生党。
博主好像很讨厌学生党啊?
“拜金主义”、有分辨力的正常学生党还是很多的,讨厌的就是那种两年之内无法保证有工作有收入却在那里评头论足、浑身负能、胡思乱想、高调装逼、自以为是的傻逼。实践是检验真理的唯一标准,只有经过痛苦磨炼的实践才会产生同理心,才会成熟,才会避免冲突。相当一部分只评不做的喷子、看问题非常片面乱贴标签的幼稚者都来自学生党。