课程视频生成器
功能特性
- 📝 智能拆分:按标题层级自动拆分Markdown讲义
- 🔊 语音合成:支持百度AI和本地TTS两种语音引擎
- 🎬 视频生成:代码演示风格的讲义渲染
- 📺 自动字幕:根据音频时长自动生成SRT字幕
- 🎞️ 批量处理:一键生成完整课程视频
安装
快速安装
bash
# 运行安装脚本
bash install_deps.sh
手动安装
bash
# 1. 安装 ffmpeg
brew install ffmpeg # macOS
# 或
sudo apt-get install ffmpeg # Linux
# 2. 创建虚拟环境
python3 -m venv venv
source venv/bin/activate # macOS/Linux
# 或
venv\Scripts\activate # Windows
# 3. 安装Python依赖
pip install moviepy Pillow markdown pydub pyttsx3 baidu-aip
使用方法
基本用法
bash
python course_generator.py -i course.md -o output
完整参数
| 参数 | 说明 | 默认值 |
|---|---|---|
-i, --input |
输入的Markdown讲义文件(必填) | - |
-o, --output |
输出目录 | course_output |
-l, --level |
拆分的标题层级(1-6) | 1 |
--no-baidu |
使用本地TTS而非百度AI | - |
--voice |
百度TTS音色(103=男,104=女) | 103 |
--speed |
百度TTS语速(0-9) | 5 |
--no-merge |
不合并为完整课程视频 | - |
使用示例
bash
# 使用百度AI生成课程(需要API密钥)
python course_generator.py -i python_course.md -o output
# 使用本地TTS(离线,无需API密钥)
python course_generator.py -i course.md -o output --no-baidu
# 按二级标题拆分课程
python course_generator.py -i course.md -o output --level 2
# 使用女声、更快的语速
python course_generator.py -i course.md -o output --voice 104 --speed 7
工作流程
┌─────────────────┐
│ Markdown讲义 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 按标题拆分TXT │ ← mdsplit2txtwith.py
└────────┬────────┘
│
▼
┌─────────────────┐
│ 生成语音音频 │ ← text2audioandcon.py
└────────┬────────┘
│
▼
┌─────────────────┐
│ 渲染讲义画面 │ ← MarkdownRenderer
└────────┬────────┘
│
▼
┌─────────────────┐
│ 生成同步字幕 │ ← SRT生成器
└────────┬────────┘
│
▼
┌─────────────────┐
│ 音视频合成 │ ← VideoGenerator
└────────┬────────┘
│
▼
┌─────────────────┐
│ 拼接完整课程 │ ← 视频拼接
└─────────────────┘
输出结构
course_output/
├── 01_txt/ # 拆分后的文本文件
│ └── course/
│ ├── chapter1.txt
│ └── chapter2.txt
├── 02_audio/ # 生成的音频文件
│ ├── chapter1_完整音频.mp3
│ └── chapter2_完整音频.mp3
├── 03_video/ # 分章节视频
│ ├── chapter1.mp4
│ └── chapter2.mp4
└── 04_final/ # 完整课程
└── 完整课程.mp4
讲义格式建议
标题层级
markdown
# 第一章:Python基础
## 1.1 变量与数据类型
### 整数和浮点数
Python支持多种数据类型...
代码块
使用三个反引号标记代码,会自动应用代码演示风格:
markdown
```python
def hello():
print("Hello, World!")
```
列表
支持有序和无序列表:
markdown
- 第一点
- 第二点
- 第三点
配置百度AI(可选)
如需使用百度AI语音合成,请修改 text2audioandcon.py 中的配置:
python
APP_ID = '你的APP_ID'
API_KEY = '你的API_KEY'
SECRET_KEY = '你的SECRET_KEY'
获取密钥:https://cloud.baidu.com/product/speech/tts
常见问题
1. ffmpeg 相关错误
确保 ffmpeg 已正确安装并在 PATH 中:
bash
ffmpeg -version
2. 字体显示问题
macOS 会自动使用系统字体,Windows/Linux 可能需要安装相应字体。
3. 内存不足
处理大型课程时,可以调整 VideoConfig 中的视频分辨率。
4. 百度TTS配额限制
百度AI有免费配额限制,超额后可使用 --no-baidu 切换到本地TTS。
技术架构
核心模块
| 模块 | 功能 |
|---|---|
CourseConfig |
课程配置管理 |
MarkdownRenderer |
讲义渲染为图片 |
VideoGenerator |
音视频合成 |
CourseGenerator |
主控流水线 |
如对本方案有兴趣,欢迎关注私信.