基于Hunyuan-7B-Instruct微调的智能播客对话生成系统,支持主题生成和文档RAG检索,可生成高质量的中文播客对话内容并合成音频。
https://www.bilibili.com/video/BV1V9kXBLEw6/
- 双模式生成:支持纯主题生成和基于文档的RAG增强生成
- 结构化输出:3段式播客结构,主持人与嘉宾深度对话
- 文档理解:支持PDF、PPTX、DOCX、MD、TXT等多种格式
- TTS合成:集成腾讯云TTS,一键生成播客音频
- 高质量输出:平均2200+字的深度内容
# 创建conda环境
conda create -n broadcast python=3.10 -y
conda activate broadcast
# 安装依赖
pip install -r requirements.txt
# RAG功能额外依赖(可选)
pip install faiss-cpu sentence-transformers pymupdf python-pptx python-docx jiebamodels/Hunyuan-7B-Instruct/ # 基础模型
train/output/hunyuan_lora/ # LoRA权重
适用于纯主题生成,不需要参考文档。
# 基本用法
python generate_podcast.py "你的播客主题"
# 示例
python generate_podcast.py "人工智能在医疗诊断中的应用"
python generate_podcast.py "区块链技术的未来发展"
python generate_podcast.py "元宇宙的商业前景"输出文件:out/podcast_<主题>.json
特点:
- 快速生成,无需额外文档
- 基于模型知识创作内容
- 适合通用主题讨论
支持文档检索,基于提供的资料生成更准确的播客内容。
python podcast_gen_rag.py --topic "人工智能的未来"python podcast_gen_rag.py --files paper.pdf slides.pptx notes.mdpython podcast_gen_rag.py \
--topic "AI在医疗领域的应用" \
--files research.pdf data.docx slides.pptxpython podcast_gen_rag.py \
--topic "大模型技术发展" \
--files llm_paper.pdf \
--audiopython podcast_gen_rag.py \
--topic "量子计算" \
--files quantum.pdf \
--out out/quantum_podcast.json \
--audio参数说明:
--topic:播客主题(可选)--files:输入文档,支持多个文件--audio:自动生成TTS音频--out:指定输出路径--index-dir:FAISS索引缓存目录--rebuild:强制重建文档索引--skip-rag:跳过文档检索,仅用主题
输出文件:
- JSON:
out/podcast_<主题或标题>.json - 音频:
tts/audio/<播客标题>.mp3
特点:
- 基于文档内容生成,更准确
- 自动提取文档要点
- 支持多文档融合
- 避免信息杜撰
# 方法1:环境变量
export TENCENTCLOUD_SECRET_ID="你的SecretId"
export TENCENTCLOUD_SECRET_KEY="你的SecretKey"
# 方法2:配置文件 tts/config.json
{
"SECRET_ID": "你的SecretId",
"SECRET_KEY": "你的SecretKey"
}# 从已有JSON生成音频
python tts/tts_synthesis.py out/你的播客.json音色配置:
- 主持人(女):专业梓欣 (602005)
- 嘉宾(男):知心大林 (603005)
- 语速:标准1.0x
- 采样率:24kHz
{
"podcastTitle": "播客节目名",
"episodeTitle": "本期主题",
"host": "主持人姓名",
"guests": ["嘉宾姓名"],
"topic_summary": "内容概述",
"segments": [
{
"segmentIndex": 1,
"segmentTitle": "第一幕:标题",
"summary": "段落概述",
"transcript": [
{"speaker": "host", "line": "对话内容"},
{"speaker": "guest", "line": "对话内容"}
]
}
]
}# 生成训练数据(需要API密钥)
export YOUR_API_KEY="your-api-key"
python gen_claude.py --limit 202
# 转换为训练格式
python prepare_training_data.pypython train_claude_lora.py 2>&1 | tee training.log训练配置:
- 模型:Hunyuan-7B-Instruct
- 方法:LoRA (rank=16, alpha=32)
- 轮数:6 epochs
- 时长:~35分钟 (3090Ti)
- 显存:~23GB
- Final loss: 1.17
- Eval loss: 1.278
- 可训练参数:41.9M (0.56%)
hunyuan-broadcast/
├── generate_podcast.py # 基础播客生成
├── podcast_gen_rag.py # RAG增强版生成
├── prepare_training_data.py # 数据预处理
├── train_claude_lora.py # LoRA训练脚本
├── gen_claude.py # 训练数据生成
├── tts/
│ └── tts_synthesis.py # TTS音频合成
├── train/output/
│ └── hunyuan_lora/ # LoRA权重文件
├── data/ # 训练数据
├── out/ # 生成的JSON文件
└── rag_index/ # FAISS索引缓存
- 检查max_new_tokens参数,建议设置为4000
- 确保prompt中明确要求2200+字
- 尝试调整chunk_size(默认700字)
- 增加retrieve_k参数获取更多相关片段
- 使用--rebuild强制重建索引
- 检查腾讯云密钥配置
- 确认有足够的TTS资源包配额
- 验证音色ID是否正确(603xxx系列)
- 使用量化版本模型
- 减少batch size
- 使用CPU offloading
生成主题:"人工智能的未来发展"
- 字数:3752字
- 时长:6分钟音频
- 结构:3段完整对话
- 质量:包含具体数据、案例和深度讨论