Skip to content

xuyungit/xtts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

xtts

为中文小说生成语音朗读mp3

Convert Chinese Text novels to mp3 using Baidu AI API

本人是听书的爱好者。有很多小说,并找不到真人朗读的版本,而且有时候真人朗读反而会和你脑补的意境不同,影响听书的心情。反而是这种机器合成的声音,中性,无特别的个性和情感,适应性更广。本人用此工具生成了数千小时的音频,成功的让自己的眼睛得到了相应时间的休息。

使用前你需要首先申请百度AI的账号,目前百度语音合成的API是免费的。申请完毕后,在代码中填入你的账号信息。另外需要提供小说章节的正则表达式,以便按照章节来进行语音合成。只支持Python3,python2的时代过去了。

由于百度语音合成API每次请求的文字数为1024,合成的语音文件不到5分钟,因此需要对小说的文字进行分割,然后将多个mp3文件合并。目前的分割主要以标点符号为依据,避免中途截断。很多网络小说每一章的内容也只有2~3千字,合成的内容不到10分钟,因此程序实现了多章合并的功能。由chapters参数控制每个mp3文件包含的章节数。同时一本长篇小说,要完成全部合成,需要较长时间,中途可能会发生意外中断,因此设计了startend参数,控制开始和停止的章节编号。

支持多种编码。如果你的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。

About

中文小说文本语音合成

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages