从Markdown讲义自动生成教学视频的完整解决方案

课程视频生成器

功能特性

  • 📝 智能拆分:按标题层级自动拆分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 主控流水线

如对本方案有兴趣,欢迎关注私信.

相关推荐
镭封12 小时前
短剧多人对白怎么配?一人完成多角色配音的办法
人工智能·音视频·语音识别·媒体
技灵AI14 小时前
Wan 3.0 API怎么做多参考商品视频?从图片、视频、音频分工到30秒交付
人工智能·prompt·aigc·音视频·wan 3.0
赛博仓鼠15 小时前
MiniMax H3 实测:8GB显存跑2K视频+原生音频,开源视频生成的新卷王
开源·aigc·音视频
byte轻骑兵16 小时前
【LE Audio】PBP精讲[4]: 公共广播通告的设计逻辑与数据交互流程
人工智能·音视频·le audio·低功耗蓝牙音频
hz5678916 小时前
手术室视频示教系统解决方案:让临床教学突破空间限制
安全·音视频·实时音视频·信息与通信·智能硬件
可乐鸡翅yeah_18 小时前
混合内容 Mixed‑Content 安全策略,HLS HTTPS 页面加载 HTTP 资源排错实战
运维·ffmpeg·音视频·媒体·m3u8
揽秀亭长20 小时前
音轨分离处理方案及效果测试分析
人工智能·音视频
美狐美颜SDK开放平台20 小时前
直播APP如何兼顾画质与低延迟?视频美颜SDK性能优化开发思路
人工智能·深度学习·音视频·美颜sdk·第三方美颜sdk
山顶夕景1 天前
【VLM】Qwen3.8-Omni-Flash长音视频理解Agentic模型
音视频·vlm·视频理解·agentic·全模态
tedcloud1231 天前
emilkowalski/skills:让 AI 写出来的网页更有“设计感”
服务器·人工智能·开源·音视频·ai编程