Skip to content

zqq-nuli/auto-audio-book

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI 有声书自动化生成工具

成品效果 爱发电

大模型

  1. gemini
  2. CosyVoice2-0.5B

环境要求

  • Python 3.10+
  • 大模型 API Key
  • ffmpeg
  • mongodb (可选 GUI 需要)

准备阶段

  1. 创建虚拟环境
uv venv --python 3.10
.\.venv\Scripts\activate
  1. 安装依赖
uv add -r requirements.txt
  1. 配置 API Key

复制 .env.example 文件修改为 .env
添加 .env 文件中的 API Key

源码

文件名 功能
app/getBookList.py 获取小说章节分页
app/getZjList.py 获取章节列表
app/saveBooks.py 保存小说每章内容
app/saveBookJson.py AI 处理章节对话信息
app/createUser.py 创建角色模型选择表
app/createAudio.py 生成音频

工具

文件名 功能
text/key_test.py 批量测试 API Key 是否可用
gui/gui.py 音频文件排序工具
gui/gui2.py 喜马拉雅作品批量删除管理工具
book-gui/gui3.py 小说爬取管理工具(mongodb)

使用方法

先去网站挑好小说 参考站点
我是在这里爬的,似乎没啥防护,随便扒 具体怎么配置可用参考app/*下面的文件 if __name__ == "__main__": 中的写法

Gui 方面还没有做完,目前只做了
小说爬取-小说管理-Gemini API Key 管理-多线程生成对话信息
所以直接从源码执行的话可以一套流程走下来,如果从 Gui 执行的话就要分开来了,还需要自己增加一点数据库的读取和数据格式处理操作

配置角色表这一步,可以手动去配置一些角色,指定主角和旁白的声音
然后剩下的我是直接随机抽取对应性别的声音的,因为可用的音频模型太少了
一本 1000 章以上的小说甚至有几千个角色,很多杂毛角色
目前的规则是超过 50 句台词的角色除了你指定的外,随机用一个声音,然后小于这个的直接用旁白的声音
虽然硅基的这个模型没有并发限制,但是对IP还是有限制的,我一台电脑一晚上最多跑300章小说
开抢占服务器,多台并行的话每个开 20 线程
我这边测试过的是,开5台机器,每台机器20线程,5小时跑了将近2000章小说
其中可能会有漏章的,最后还需要筛查和补充

整个思路其实很简单

流程 作用 *
小说爬取 准备小说素材
生成对话信息表 区分角色 用于后面分配音频
配置角色声音模型 实现多角色音频
多线程音频生成 生成音频

About

AI 有声书自动化生成工具

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages