实用语音指南
在 Lectern 里使用任意语音引擎
Android 允许任何人安装语音引擎,其中不乏好东西:为大厂忽略的语言而生的免费开源语音、在手机本地运行的神经语音,还有很多人用了多年的付费语音。从 Lectern 1.29 起,它们全都会出现在语音列表里,而且不用改系统设置。
简短答案
从 Google Play 安装引擎,打开它一次并下载想要的语音,然后在 Lectern 里打开一本书,进入音频 → 语音。新引擎会单独成组,上方标着它的名字。点语音旁边的播放按钮,先听再选。
1.29 改了什么
在这个版本之前,Lectern 只显示 Android 设为系统默认的那个引擎的语音。想用第二个引擎,就得在应用之外改掉这个默认值,然后整台手机都用它说话。这本不是设计意图,而是我们向 Android 索取语音的方式留下的缺口。
现在列表涵盖设备上的每个引擎。在一台装了五个引擎的测试机上,Lectern 找到横跨五个引擎的 39 个英语语音,各自归在提供它的引擎名下。你的系统默认值保持原样。
一步一步来
- 安装引擎。在 Google Play 里搜索想要的引擎,像装任何应用一样装上。不需要别的,它会自己向 Android 注册。
- 打开那个应用一次,下载一个语音。这一步最多人漏掉。几乎所有引擎装好时都没有语音数据:RHVoice 装完显示 Installed voices: none,在你下载之前它对任何应用都无可奉告。在引擎自己的应用里选好语言,让它下载。
- 在 Lectern 里打开语音列表。在书中打开阅读设置,切到音频标签,打开语音。每次打开这个列表,Lectern 都会重新读取已安装的引擎,所以刚装好的引擎立刻就在里面。
- 选之前先听。Android 给语音的只有
en-us-x-iob-local这样的标识。没有名字,没有性别,没有说明。九个英语语音分别叫 “iob”“iog”“iol” 等等,靠任何命名规则都猜不出你想要哪个。播放按钮会用该语音自己的语言念一句示例。 - 选中,开始读。选择按书的语言分别记住,所以中文书和英文书可以各留各的语音。
该装哪个引擎?
Lectern 自带离线语音 Piper 和 Kokoro,对大多数书来说它们是更好的选择:它们就是为长时间朗读挑的。当你需要它们没有覆盖的语言、想用某个你早就熟悉的语音,或者你买的付费语音确实比免费的都好时,系统引擎才值得装。
免费引擎
| 引擎 | 擅长什么 | 值得知道 |
|---|---|---|
| Speech Services by Google | 多数手机上的默认引擎。语言多,每种语言还有多个语音 | 在 Android 设置里下载离线语音数据,否则它需要联网 |
| RHVoice | 大厂跳过的语言:世界语、格鲁吉亚语、吉尔吉斯语、马其顿语、卢森堡语、白俄罗斯语、阿尔巴尼亚语等 | 开源且体积小。先在应用里装一个语音,否则它什么也不提供 |
| TTS Engine: Next-gen Kaldi | 在手机本地运行的神经语音,来自 sherpa-onnx 项目 | 开源。与 Lectern 用于 Piper 的是同一族模型 |
| Supertonic TTS | 十个富有表现力的英语语音,离线 | 仅英语。在较新的手机上清晰又快 |
| VoxSherpa TTS | 加载你自己的 Piper、Kokoro 或 Supertonic 模型 | 有广告。它一次只对外公布一种语言:你在它自己的选择器里选的那个,才是其他应用看到的 |
| eSpeak NG | 极快,高速下也听得清,支持一百多种语言 | 机械感明显。不少用 2 倍速听的人要的正是这个 |
| Samsung TTS | 三星手机预装 | 语言比 Google 的少,但本来就在机器上 |
付费引擎
这类卖的是语音而不是应用:引擎免费下载,每个语音在里面购买。它们是资深读屏用户最先会提到的引擎,原因就是音质。
| 引擎 | 擅长什么 | 值得知道 |
|---|---|---|
| Vocalizer TTS Voice | 五十多种语言,自然且有表现力,完全离线 | 每个语音单独购买,有试用期。长期以来是盲人和低视力读者中的标准 |
| Acapela TTS Voices | 语音目录很大,包括童声和角色声 | 应用免费,语音付费。买下之后离线可用 |
| CereProc CerePlay | 个性鲜明的语音,含地方口音 | 通常是付费引擎里最便宜的;语言较少 |
付费语音是一份授权,不是在我们这里订阅。你从引擎的开发者那里购买,它在所有使用系统语音的应用里都能用,包括 Lectern。我们不参与其中,也不从中获利。
引擎没出现时
几乎总是这三种情况之一,而第一种远远最常见。
引擎还没有语音数据
没下载过语音的引擎根本不会报告任何语音,而应用无法显示没人告诉它的东西。打开引擎自己的应用,确认里面列着已安装的语音。RHVoice 在你装上之前一直显示 Installed voices: none;这看起来和 Lectern 看不见这个引擎一模一样。
它提供的语言和你的书不一样
语音列表跟着你打开的书的语言走。只有英语的引擎,在一本中文书里没有可显示的内容。有些引擎还一次只公布一种语言,VoxSherpa 就是如此,所以它自己的选择器里选的是什么,所有应用看到的就是什么。如果一个你确定装过的语音没出现,先查这一项。
引擎启动不了
绑定失败的引擎会被跳过,因为 Android 这时会悄悄退回默认引擎并报告成功。把那些语音挂在错误的引擎名下,比不显示更糟。如果某个引擎在你手机上不正常,去 Android 自带的语音设置里试试:如果那里的示例也是静音,任何应用都别想让它出声。
关于自选语音的问题
我必须改系统默认引擎吗?
不用,1.29 之后不再需要。Lectern 会直接读取每一个已安装的引擎。你的系统默认值保持不变,手机的其他部分仍用你为它选的语音。
一本书里能混用引擎吗?
一本书同一时间只用一个语音,但选择是按语言保存的。中文书可以用一个引擎,英文书用另一个,来回切换不需要任何设置。
系统语音能离线用吗?
看引擎。RHVoice、eSpeak、Supertonic、Kaldi 和那些付费引擎本身就是离线的。Google 的语音要先下载离线数据,否则会走网络。只要同一个语音有本地和网络两种,Lectern 一律选本地那种。
为什么列表里的语音比引擎声称的少?
两道过滤。列出但未安装的语音会被排除,因为选它等于选一个手机上并不存在的东西。同一个语音若同时有本地和网络两种,只出现一次,取本地那份。在一台测试机上,473 个列出的语音就这样变成 28 个真正可用的。
系统引擎比 Piper 或 Kokoro 更好吗?
读书的话通常不是,那两个就是为此挑的。当你需要它们没有的语言,或者你买了更喜欢的付费语音时,系统引擎才更好。在同一页上都试一遍,相信自己的耳朵。
安装引擎会把什么东西发到什么地方吗?
通过 Lectern 不会。我们问 Android 有哪些引擎、它们提供哪些语音,这是本地的问题,得到的是本地的答案。引擎自己做什么是它的事,所以挑一个你信得过的,和装任何应用一样。
继续阅读