语音 AI 合成这个选题我们已经写过一篇了,对比来对比去,还是微软家的晓晓说话好听。
而正因为微软这个效果好,所以每当看到有人基于微软 TTS 搞出来的软件,我都会上手把玩一下,像 GitHub 开源的这个 edge-TTS-record,是把 Edge 浏览器里大声朗读的接口封装了过来,然后通过内录实现生成语音文件的功能。
像吾爱破解论坛上经常出现的这种易语言的写的工具,封装的则是微软语音合成 Demo 的接口,把在线生成的音频缓存给提取了出来,从而实现保存语音文件到本地的效果。
两种都是通过封装在线接口实现的白嫖,可我总觉得这些微软语音合成二次封装的工具都有一个问题——即找不到适用场景。
诚然,如果你是个不想真人念稿的视频制作者,或者有这样那样工作上的用途,这些工具已经能一定程度上的满足需求。
但对于更多的人来说,比如我,除了尝鲜和水一篇文章外,别无他用,真不如 @ag2s20150909 大佬开源的那个安卓上的 TTS 目标明确,搭配阅读器来在线听小说。
用过 TTS 听小说的小伙伴应该知道,比起传统的像朗读女那种老式语音朗读软件,或比起其他大厂的语音合成工具,效果简直是降维打击。
那电脑上或 iOS 上想用微软语音合成听书,又该怎么办呢?我研究了两天有了些心得,特来分享给大家。
微软语音听书
说起电脑上听书,我第一时间想到的就是用 Edge 浏览器的大声朗读,事实上也确实可以听,在线小说站单章就能听,本地的 txt 文件用 Edge 打开后也能听。
但问题在于前者需要我们听完一章后手动切换下一章,后者虽能整本打开,但又因为文本体积太大而导致大声朗读罢工。
直到我在吾爱破解上看到了 @xljxlj 制作的「微软语音听书」。
原理前面也提到了,就是利用 Demo 的接口在线把文字生成语音,可又因为微软 TTS 是没有提前缓存操作的。
所以微软语音听书这里加了个预加载的功能,即生成第一段语音后,会连续生成后几段的语音,以便我们能安心的连续听书。
第一次打开软件,我们要去右下角找到「打开文件」并导入本地的 txt 文件:
如果你和我一样导入的是 400 多万字近 10 MB 大小的《雪中悍刀行》,那导入过程略慢,因为它会把小说按章节切割:
切割后的文本会在软件同目录下所生成的「data」文件夹内。
此时我们要做的就是去右上角选择语音和风格,比如晓晓的撒娇风格。
然后,微软语音听书就开始干活了,注意,这里的缓存单位是段。
具体的语音文件能在软件同目录下「temp」临时缓存文件内找到。
我们只要选择「开始」,就可以听缓存好的小说了。
要说有啥注意的,微软语音听书这个工具默认的缓存上限只有 30 段,听了 1 段就会删掉 1 段的缓存。
如果需要提高这个缓存上限,可以用文本打开「config.ini」配置文件,把缓存数改高。
至于听到一半有事不听了,放心关闭软件,这个微软语音听书可以自动记录听到了哪里,但美中不足的是,每次关闭都会清干净当前音频缓存,需要再次加载。
电脑上的在线听书方案,大体上就是利用 Edge 的大声朗读听在线小说,用微软语音听书这个工具听本地小说。
那 iOS 呢?实话实话,没找到最佳的方案,我用了 iOS 上的 Edge 浏览器访问在线小说网站,或用在线阅读器打开本地文件,再使用大声朗读,也试了 Stay 2 装了与之相关的脚本。
可无一例外,效果都很差,做不到连续听书的效果,剩下的思路只有 iOS 上用安卓虚拟机再安装使用 TTS,这种旁门左道的做法。
本想着放弃,但我用微软语音听书的时候,不是发现它是缓存了多个本地音频文件嘛。
这给了我曲线救国的新思路——在线听不了,咱本地生成后导到手机上听。
顺着这个曲线救国的新思路研究下去,我发现我们需要一个批量文字转语音的微软 TTS 工具。
上一节的「微软语音听书」虽然可以批量缓存音频到本地,但为了稳定性,人家只能一段一段的缓存,也就是说一整本小说缓存下来,那得上万个音频文件,明显不适合现在使用。
理论上说,我们也可以用 Aspeak 这个微软语音合成的命令行工具,搭配 FFmpeg 这个音视频处理的命令行工具,编写脚本实现批量处理。
但门槛高不说,这么折腾属实没必要,因为我去吾爱破解、GitHub 等网站扒拉了俩小时后,找到了支持批量转换工具,TTS-VUE。
安装好后,我见到了胜利的曙光,这个工具可以搞定批量转换。
但也有一些坑需要避,因为是一次性生成语音文件,而微软那边的白嫖接口又有字数限制,所以分割文本这事需要我们自己解决。
我找来了一年前碰到的「TXT 杀手」,你可以按章节分割,也可以按字数分割,保险起见我这里按 2000 字切割了《雪中悍刀行》(后测试可以更多)。
于是生成了 2000 多份的文件(这怨种小说字确实多)。
但用 TXT 杀手分割出来的文本是 ANSI 编码的,微软 TTS 只支持 UTF-8 编码,所以需要批量转换一下编码。
网上搜到的批量转编码工具大多是 VBS 脚本,从吾爱上找了个 19 年的小工具,选择「添加文件夹」,然后「转换」,两千多份文本就都转成了 UTF-8 格式了。
把转好的文本添加到 TTS-VUE 内,批量生成的语音文件就搞定了。
我试了 2000 多份文本直接往里拖,结果不出意外的崩溃了,2000 字的文本 10 个 10 个往里扔,不到 1 分钟就转换好了。
你说这算成功了嘛?
总结
我看了下 2000 字生成的每个音频文件在 7 分钟左右,这明显还不是一个完善的解决答案,但剩下的,无非就是调一下分割字数等参数,找找音频合成的工具了(格式工厂能搞定)。
但这两天没功夫折腾了,就当挖个坑,感兴趣的小伙伴可以顺着这个思路玩下去。
这篇写得长也杂,但我的目的是想更具体的为大家提供思路,工具嘛都是好工具,无论是在线预加载的「微软语音听书」,还是批量转换的「TTS-VUE」,亦或「TXT 杀手」和「编码转换器」。
有关项目的地址,和我自己存的蓝奏云链接就不往后台扔了,大家有需要自取吧。
微软语音听书 吾爱原帖:
www.52pojie.cn/forum.php?mod=viewthread&tid=1676076
上面这个的蓝奏云:
wws.lanzouj.com/iPV9X0aik2wd
TTS-VUE(批量转换)GitHub:
github.com/LokerL/tts-vue
上面的蓝奏云:
wws.lanzouj.com/iUQru0aik3uh
TXT 杀手:
wws.lanzouj.com/ivjgy0aik4cf
TXT 编码转换器:
wws.lanzouj.com/i94p40aik5gf
安卓 TTS:
github.com/ag2s20150909/TTS
虽然这篇说成功也没那么成功,但当你碰到电脑听小说,文字转语音,TXT 文本处理的时候,别忘了这些我已经帮你踩过坑的工具,over。