为中文小说生成语音朗读mp3
Convert Chinese Text novels to mp3 using Baidu AI API
本人是听书的爱好者。有很多小说,并找不到真人朗读的版本,而且有时候真人朗读反而会和你脑补的意境不同,影响听书的心情。反而是这种机器合成的声音,中性,无特别的个性和情感,适应性更广。本人用此工具生成了数千小时的音频,成功的让自己的眼睛得到了相应时间的休息。
使用前你需要首先申请百度AI的账号,目前百度语音合成的API是免费的。申请完毕后,在代码中填入你的账号信息。另外需要提供小说章节的正则表达式,以便按照章节来进行语音合成。只支持Python3,python2的时代过去了。
由于百度语音合成API每次请求的文字数为1024,合成的语音文件不到5分钟,因此需要对小说的文字进行分割,然后将多个mp3文件合并。目前的分割主要以标点符号为依据,避免中途截断。很多网络小说每一章的内容也只有2~3千字,合成的内容不到10分钟,因此程序实现了多章合并的功能。由chapters
参数控制每个mp3文件包含的章节数。同时一本长篇小说,要完成全部合成,需要较长时间,中途可能会发生意外中断,因此设计了start
和end
参数,控制开始和停止的章节编号。
支持多种编码。如果你的Python3环境安装了chardet(pip3/pip install chardet
)这个包,则可以实现文件编码自动检测,否则可能需要手工指定,大部分中文小说使用的是gb2312/gbk编码(默认),也有部分是utf8,使用时要注意指定。
建议使用播客的客户端来播放生成的mp3,这样能记住播放的位置。iOS推荐Overcast,开通会员可以使用upload功能。安卓强烈推荐Simple ABP。由于这两个APP都不宜获得,其它好用的播放客户端欢迎推荐。
参数介绍
--book
待合成的小说文本文件名
--id
你的百度API Key
--secret
你的百度Secret Key
--start
合成从小说的哪一章开始,默认为1)
--end
合成到小说的哪一章停止,默认到末尾
--chapters
每个mp3文件包含几章,默认为5
--output
输出的mp3保存目录,默认为当前目录下的'mp3'子目录
--speed
合成语音的语速,默认为5,我个人一般用8
--volume
合成语音的音量,默认为5
--person
合成音色,可选值为度小宇=1,度小美=0,度逍遥=3,度丫丫=4 度博文=106,度小童=110,度小萌=111,度米朵=103,度小娇=5 默认0
--encoding
输入文件的编码,默认为gbk
--mp3prefix
输出的mp3文件的前缀,默认为tts
--pattern
章节名称的正则(用来切分章节),默认为'^第.章\s+.'
使用示例
python3 tts.py --book "dmwf.txt" --id 你的API_KEY --secret 你的Secret_Key
感谢百度云能够免费提供语音合成API。