在我们自己的硬件上运行文本到语音的最令我惊讶的是该模型有多小。 一份文件,78 MB,可容纳 904 个不同的扬声器。 这不到一个电话照片爆发,大约是单个中档语言模型的十分之一,而它带来的声音你不会立即放置为合成的。 我测量了该工具公开的八种声音中的三个:它们的中值音高是 103 Hz、184 Hz 和 242 Hz,这是一个真正的范围,从低男性声音到高音女性,来自同一文件中的不同数字,传入的数字不同。
TL;博士: 发动机是使用 Librits-R 模型在站点自己的盒子上运行的 Piper。 测量:113 个字符在大约 3 到 4 秒的墙时间内产生 5.8 到 6.1 秒的音频,因此它的合成速度比您收听的速度快。 你会得到一个 22,050 Hz 的单声波,大约是每分钟 2.6 MB。 速度控制工作但被压缩:完整的 0.7 到 1.5 范围产生 1.61 倍的持续时间点差,而不是 2.14x 数字暗示,0.85 与 1.0 无法区分。 相同的文本永远不会是相同的音频两次。 那个 文本到语音工具 将输入限制为 3,000 个字符。
说话是什么?
Piper,一个神经文本到语音引擎,作为自己的容器在网络应用程序旁边运行,模型训练在 自由利比利斯-R。
该语料库值得了解,因为它可以解释输出的质量和特性。 大约是585小时的阅读英语语音,最初来自Librivox有声读物,然后通过语音恢复模型来清理源材料的录制质量。 演讲者是阅读公共领域书籍的志愿者。
所以声音听起来像人们大声朗读,因为这正是他们正在做的事情。 该模型擅长陈述性句子和散文段落,这是它所听到的。 它在任何对话中都没有说服力,因为训练数据中没有人在进行对话。
模型文件可容纳 904 个扬声器,该工具显示其中 8 个。 代码中的 ID 是模型自己的,选择跨越范围而不是最好的八个,如果八个都不适合你,这是一个值得记住的区别。
八个声音有什么不同吗?
是的,可测量的。 我在其中三个中生成了相同的句子,并计算了语音帧的中值基频:
| 发言权 | 演讲者 ID | 中位数 F0 |
|---|---|---|
| 声音 2 | 3 | 103.3赫兹 |
| 发声 5 | 45 | 183.8赫兹 |
| 语音 8 | 150绔 涔诲芥澶澧 | 242.3赫兹 |
这些不是主题的变体。 成年男性的语言通常以 85 至 155 Hz 为中心,成年女性语音约为 165 至 255 Hz,因此这三个位于正常人类范围的底部、中间和顶部。
持续时间几乎相同,同一句话的时间为 2.07 到 2.08 秒,因此切换语音会在不改变节奏的情况下改变音色和音高。 这使得八个真正可以互换给定的脚本,如果你正在制作一组剪辑并想要重新录制一个剪辑,这很重要。
它有多快?
比听着快,这是重要的数字。
| 测量 | 价值 |
|---|---|
| 输入 | 113 个字符 |
| 音频产生 | 5.77 至 6.08 秒 |
| 墙时间 | 2,994 至 3,929 毫秒 |
| 比率 | 实时时间约为1.5至1.9倍 |
因此,一分钟的音频需要 30 到 40 秒的时间,而 3,000 个字符的最大值在大约两分之三的时间内完成,等待不到两分钟的时间。
需要注意的是,一次提供一项请求。 服务器刻意运行一个合成插槽:在盒子上测量,单独的文本大约需要 2.2 秒,三个文本一次需要大约 9 秒,因此并行性不会购买总吞吐量,并且在队列中花费第一人。 最多可以等待 20 个请求;过去该工具显示它很忙,而不是让您等待几分钟。
每十分钟还有二十代的访客预算,这足够高,正常使用永远不会满足,而且足够低,没有人将盒子变成免费的有声读物工厂。
你拿什么回来?
一个 wav 文件,未压缩,大小值得在做一个长的文件之前了解。
codec pcm_s16le
sample rate 22,050 Hz
channels 1 (mono)
bit depth 16
每秒44.1 KB的音频,所以大致 2.6 MB 每分钟,一个完整的 3,000 个角色运行在 7 MB 附近降落。 上面的 113 个字符样本为 254,508 字节,持续 5.77 秒。
对于您要编辑或转换的内容,uncompressed 是正确的默认设置,因为它是每个编辑器都不会抱怨的格式,并且没有需要添加的代数。 对于您要上传或发送电子邮件的内容,这是错误的默认设置,修复是一步:运行 wav 音频转换器 并拿 MP3 或 M4A。 它的指南 涵盖了选择哪个,语音的简短答案是,任何 128 kbps 或以上的东西都可以。
22,050 Hz 的速率是型号自己的,它是 CD 速率的一半。 值得注意的是,Librits-R 的分布频率为 24 kHz,因此模型输出的语料库速率低于它所学到的语料库的速率;这是 Piper 自己的配置,而不是在这里丢失的任何东西。 对于语音来说,无论哪种方式,它都不起眼,因为语音能量远低于 11 kHz,这是 22,050 Hz 的承载能力。 这确实意味着输出不会作为录音室录音通过,向上重新采样不会增加任何内容。
速度控制是否符合它所说的范围?
它改变了速度,而不是数字显示的那么多。 这是测量曲线:
| 速度设置 | 龄 | 比率与 1.0 | 线性会给 |
|---|---|---|---|
| 0.7 | 7.268 秒 | 1.195 | 1.429 |
| 0.85 | 6.142 秒 | 1.010 | 1.176 |
| 1.0 | 6.084 秒 | 1.000 | 1.000 |
| 1.25 | 5.271 秒 | 0.866 | 0.800 |
| 1.5 | 4.516 秒 | 0.742 | 0.667 |
单调,因此控制按您期望的方向工作,并在两端压缩。 0.7 到 1.5 的整个范围应该是 2.14 倍的持续时间,尺寸为 1.61 倍。 0.85 设置在 1.0 的 1% 以内,也就是说它没有任何你能听到的声音。
机制是将设置作为持续时间尺度传递给模型,模型自己的持续时间预测器决定每个音素的长度。 它将规模视为一个强暗示而不是乘数。
实用阅读:如果您想要明显不同的节奏,请使用 0.7 或 1.5,并且不要期望中间设置可以为您提供精细的控制。 如果您需要一个确切的持续时间,请在 1.0 中生成并在音频编辑器中更改速度,其中数字表示它所说的内容。
为什么同一个文本从来没有两次相同的音频?
因为该模型在每次运行时都会对时间做出新的决定。
我两次发送相同的请求,相同的文本,相同的声音,相同的速度。 结果为 6.084 秒和 6.002 秒,文件的字节字节不同。 没有任何缓存,也没有播种。
这是这个模型系列所固有的:持续时间预测器是随机的,因此即使每个输入都固定,音素长度在运行之间也会略有不同。 这里测量的变化约为 1.4%,这是无法听到的速度差异,并且作为文件长度的差异很明显。
两个后果。 如果一个尴尬的停顿或一个奇怪的词落地,那么再次生成它是一个真正的解决方案,而不是一个迷信。 如果您正在制作一组必须匹配的剪辑,请在一次会话中生成它们并保留您获得的内容,因为明天回来进行一条替换线会给您一条相差几分之一秒的线。
为什么有 3,000 个字符限制?
因为它背后的东西,而不是关于文本的任何东西。
三千个字符大约是两分之三的语音和大约 7 MB 的 WAV,在每个人共享的单个合成槽中产生。 一个 30,000 个字符的章节将占用该插槽 20 分钟,并在执行此操作时将 70 MB 缓冲区保存在内存中。
对于更长时间的内容,拆分段落边界并连接部分。 无论如何,这是更好的做法:第九段中的一个错误让你付出了第九段而不是整个章节,以及 音频转换器 之后将加入并转换集合。
分裂句子中间是一件事,因为模型决定每个话语的语调。 一个切成两半的句子会产生两个听起来像完整的句子的片段,在思想的中间有一个下降的语气。
它有什么好处,什么是不行?
适合大声朗读的任何内容,这是一个比听起来更窄的类别。
| 效果很好 | 工作得不好 |
|---|---|
| 视频或幻灯片的叙述 | 人物之间的对话 |
| 文章的音频版本 | 任何需要情感或强调的东西 |
| 可访问性:听取自己的草稿 | 普通英语之外的名称和地点 |
| 原型的占位符语音 | 视频剪辑的精确时序 |
| 你写的句子的发音 | 唱歌,或任何音乐剧 |
右列中的模式是控制。 该模型为您提供声音、速度和可供听的座位。 没有办法强调特定单词、插入给定长度的暂停、更改问题的语调或拼出首字母缩略词。 这些是专业 TTS API 通过标记公开的内容,而这没有任何内容。
左列的第一行是它获得位置的地方。 一个语音读你自己的文章是最快的校对工具,因为一个不起作用的句子在别人说出来的那一刻就很明显了。
在你承诺之前你能听到一个声音吗?
不,这是我将改变的界面的一部分。
八个声音是标签的下拉:Voice 1 到 Voice 8,没有任何样本附加到任何一个样本。 找出 Voice 6 听起来像什么的唯一方法是随它生成,它占用了共享的合成槽,需要几秒钟,并且每十分钟对你的 20 代产生影响。
一次性的就可以了。 对于项目的声音选择,这意味着在开始之前对同一条线进行八次试听,这是您决定的预算的十分之一。
实用的方法是用短线而不是脚本进行试听。 一句十个字在大约两秒钟内回来,告诉你音高和字符,这就是你在其中选择的全部。 然后在您选择后切换到真实文本。
本指南中的表是部分快捷方式:语音 2 为低音,语音 5 为中间,语音 8 为高。 我没有测量的五个坐在他们中间的某个地方。
与云音色相比如何?
不利于波兰语,这不是这里重要的比较。
商业 API 为您提供更好的语调、数十种语言、对停顿和强调的标记控制以及为广播训练的声音。 如果你正在制作一些东西以供出版,那是物有所值的。
相反,这给你带来的是文本永远不会离开网站自己的硬件,输出是你的,没有每个字符的账单,也没有帐户。 对于上面左栏中的用途,特别是听到你自己的草稿读回,波兰语的区别不值得一个云帐户和一个 API 密钥。
诚实的总结是,这相当于一个不错的内置麦克风的 TTS。 你不再注意到它在那里,而不是你用来录制专辑的东西已经足够好了。
可以在商业上使用音频吗?
可能,归因,许可证值得仔细观察而不是肯定。
Piper 发动机获得 MIT 许可。 这里的模型是在 libritts-r 上训练的,它 OpenSLR 以“许可证:CC x 4.0”分发。, CC by 4.0 允许提供商业用途的商业用途。
有必要小心,因为 Librits-R 论文自己的引文元数据带有不同的许可证字符串,即非商业无衍生品变体。 这很可能是引文模板中的剩余部分,而不是意图声明,分发页面是更强的信号,但两者不同意,我无法为您解决。
所以:对于任何偶然的事情,这不是任何人都会问的问题。 对于基于音频的商业产品,请自己阅读特定语音模型的许可证并听取建议,而不是阅读数据集页面。
发布音频之前应该检查什么?
四件事,按他们出错的顺序。
- 听听整个事情。 这听起来很明显,并且经常被跳过,这是捕捉错误发音的名字的唯一方法。
- 任何专有名词、首字母缩略词或单位。 该模型没有您可以编辑的字典。 如果“Sei”或“GDPR”出现错误,则修复在输入文本中拼写它并接受输入现在是丑陋的。
- 长度,与它必须填充的插槽相对。 请记住,节奏只能松散地控制,所以要留出空间而不是计划到第二个。
- 上传前转换。 2.6 MB 每分钟的 WAV 不是您在网页上想要的。
为什么它在站点自己的服务器上运行?
因为人们大声朗读的文本经常是他们自己未发表的作品。
草稿、剧本、求职信、演讲、他们不确定发送的信息。 传统的替代方案将其发布到每个字符的账单服务,将文本保留在没人阅读的术语下,并且需要在第一个单词之前进行帐户。
在这里,它进入了 Web 应用程序旁边的容器,被综合,并作为文件返回。 成本在上述每次测量中都可见:一次一个插槽,一个 3,000 个字符的天花板,22 kHz 的单声道,以及一个好的而不是广播的声音。 作为交换,您已经信任该页面的机器读取了文本。



