生成长篇小说的朗读语音小说

使用chattts的兄弟都知道,它只支持30s的朗读,所以如果要使用篇的话,就需要想一些别的办法,我现在使用的办法是:

  1. 将长篇小说按章节进行分拆

    使用用正则表达式从文件中取出每个章节

  2. 将每个章节按自然语言的语句来分折每一个语句 主要是由通过nlp,将章节进行分段处理生个语句,将每个语句中加入相应的语气词,保障每个语句是在30s以内。

  3. 将每个语句生成一个文件,将每个章节的语音进行合并成一个mp3文件

5. 通过视频生成工具将文件转成mp4

scss 复制代码
Path(source_directory + Path(self.get_file_name()).stem).mkdir(parents=True, exist_ok=True)

output_file_wav = source_directory + Path(self.get_file_name()).stem + '/' + Path(self.get_nlp_file()).stem + '.wav'

cmd = ["ffmpeg","-safe", "0","-f", "concat","-i", self.save_dir + "input.txt","-c", "copy", "-y",f"{output_file_wav}"]

log.info(" ".join(cmd))

subprocess.run(cmd, check=True)

# 删除

Path(self.save_dir + "input.txt").unlink()

for wav in wav_list:

Path(wav).unlink()

# 将文件转换成mp3

output_file_mp3 = source_directory + Path(self.get_file_name()).stem + '/' + Path(self.get_nlp_file()).stem + '.mp3'

cmd_to_mp3 = [

"ffmpeg",

"-i", f"{output_file_wav}",

f"{output_file_mp3}"

]

log.info(" ".join(cmd_to_mp3))

subprocess.run(cmd_to_mp3, check=True)

# 删除wav文件

Path(output_file_wav).unlink()
相关推荐
花间相见1 小时前
【计算基础|Redis02】【上手】五大数据类型命令逐条实操
数据库·redis·后端
GISer_Jing1 小时前
AI Agent秋招面试万字通关指南|架构、ReAct、上下文工程、RAG、评测、生产运维全解
后端·ai·langchain
Moment2 小时前
AI 编程时代,聊聊我的 Mac mini 双屏桌面
前端·后端
学长毕设3 小时前
基于SpringBoot的游乐园管理系统-附源码
java·spring boot·后端
橙序员小站3 小时前
Windows 安装包反复报错?一次排查补上了 5 个 CI 检查点
后端
陈随易3 小时前
Cloudflare 出钱,Vite 团队挑人,44 个维护者分 30 万美元
前端·后端·程序员
SimonKing3 小时前
震惊:怎么回事,opencode一轮对话耗尽免费额度
java·后端·程序员
张彦峰ZYF4 小时前
功能齐了不等于能上线:智能工单系统的AI回归测试、安全防护、成本可观测与CI/CD生产部署
后端·企业智能工单系统·评测线·安全线·成本线·部署线
Rain的Java大神之路4 小时前
LeetCode 37 解数独面试攻略:回溯 + 位掩码 + MRV,从暴力到毫秒级求解
java·后端·leetcode
量化分析码农4 小时前
【Python量化波动率实战 05】你的组合真的分散了吗:滚动相关与分散化收益
后端