eSpeak 是一个可在 Linux 命令行中使用的开源的 TTS 合成器。欢迎回到《24 天介绍 Linux 命令行小玩具》。如果这是你首次阅读本系列文章，你可能不知道什么是 Linux 命令行小玩具。无需担心，你只需要边看边体会。通常来说，它有可能是游戏或其它能让你在终端中娱乐的小程序。或许你已经对一些玩具有了解了，不过我们相信，在本系列文章中总有那么几个你没见过的玩意。年轻读者可能不知道，在 Alexa、Siri 或 Google Assistant 问世之前，计算机就能说话了。我们也许永远不会忘记来自 2001 太空漫游) 中与机组人员交流的 HAL 9000。但是在 1960 年代到今天的时间里，是存在着许多能说话的计算机的。它们有些很出色，也有些不那么出色。其中一个我最爱的是一个叫做 eSpeak 的开源项目。它以多种形式发布，比如可以嵌入你自己项目中的库。与此同时，它也提供了可供你安装的命令行版本。在我所用的发行版中，安装十分简单，只需使用：$ sudo dnf install espeak你既可以与 eSpeak 交互，也可以用它来输出其它程序的信息，甚至通过简单的 echo 命令来使用它。这里 有一些可供 eSpeak 使用的声音文件，你可以在无聊时切换他们。甚者你可以制作一个属于你自己的声音。在 2015 年，一些希望继续 eSpeak 开发的开发者创建了一个名为 eSpeak NG （即 “Next Generation”，“下一代”的意思）的项目。eSpeak 目前在 GPL v3 许可证下开源，你可以在 SourceForge 上详细了解这个项目或下载源代码。别急，我今天还会介绍一个额外的小程序，它叫 cava。我经常希望用一张独一无二的截图作为我文章的头图，更何况今天的玩具主要是关于声音的，这就图片更少了。因此，我需要一些东西来填补这些空白。Cava 是 基于 ALSA 的命令行音频可视化工具 console-based audio visualizer for ALSA 的简写（尽管它现在支持的比 ALSA 更多），它是一个优秀的命令行音频可视化工具，并且它正以 MIT 许可证开源。下面是一个将 eSpeak 输出可视化的命令：$ echo "Rudolph, the red-nosed reindeer, had a very shiny nose." | espeak你想让作者介绍你喜欢的命令行玩具吗？请前往原文下留言，作者可能会考虑介绍的。同时，你也可以去原文下评论你对文章的看法。欢迎去看看我们昨天介绍的玩具，在 Linux 命令行中使用 nudoku 解决谜题。敬请期待我们明天的文章吧！via: https://opensource.com/article/18/12/linux-toy-espeak作者：Jason Baker 选题：lujun9972 译者：zhs852 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
Fedora 工作站默认带有一个小软件，叫做 espeak。它是一个声音合成器 —— 也就是转换文本为声音的软件。在当今这个世界，发音设备已经非常普遍了。在智能电话、Amazon Alexa，甚至火车站的公告栏中都有声音合成器。而且，现在合成声音已经跟人类的声音很类似了。我们生活在 80bandaid 的科幻电影里！与前面提到的这些工具相比，espeak 的发音听起来有一点原始。但最终 espeak 可以产生不错的发音效果。而且不管你觉得它有没有用，至少它可以给你带来一些乐趣。运行 espeak你可以在命令行为 espeak 设置各种参数。包括：振幅（-a）音高调整 （-p）读句子的速度 （-s）单词间的停顿时间 （-g）每个选项都能产生不同的效果，你可以通过调整它们来让发音更加清晰。你也可以通过命令行选项来选择不同的变音。比如，-ven+m3 表示另一种英式男音，而 -ven+f1 表示英式女音。你也可以尝试其他语言的发音。运行下面命令可以查看支持的语言列表：espeak --voices 要注意，很多非英语的语言发音现在还处于实验阶段。若要创建相应的 WAV 文件而不是真的讲出来，则可以使用 -w 选项：espeak -w out.wav "Audio file test" espeak 还能读出文件的内容。espeak -f plaintextfile 你也可以通过标准输入传递要发音的文本。举个简单的例子，通过这种方式，你可以创建一个发音盒子，当事件发生时使用声音通知你。你的备份完成了？将下面命令添加到脚本的最后试试效果：echo "Backup completed" | espeak -s 160 -a 100 -g 4 假如有日志文件中出现错误了：tail -1F /your/log/file | grep --line-buffered 'ERROR' | espeak 或者你也可以创建一个报时钟表，每分钟报一次时：while true; do date +%S | grep '00' && date +%H：%M | espeak; sleep 1; done 你会发现，espeak 的使用场景仅仅受你的想象所限制。享受你这会发音的 Fedora 系统吧！via: https://fedoramagazine.org/add-speech-fedora-system/作者：Alessio Ciregia 译者：lujun9972 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出