从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 主控流水线

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

相关推荐
给算法爸爸上香11 小时前
yolo目标检测线程池高性能视频tensorrt推理(每秒1000+帧)
yolo·目标检测·音视频·线程池·tensorrt
大学生小郑11 小时前
sensor成像的原理
图像处理·音视频·视频
AI浩15 小时前
学习语言驱动的序列级别模态不变表示用于视频可见光-红外行人重识别
学习·音视频
老陈聊架构17 小时前
『AI视频创作』Remotion Skills 完全指南:用自然语言创作视频的革命
人工智能·音视频·skill·remotion
视频技术分享17 小时前
2026年实时音视频服务选型深度解析
音视频·实时音视频·视频
三十_A1 天前
前端技术分享:基于 Canvas 实现视频帧截取与下载方案
前端·音视频
地狱为王1 天前
Unity使用NovaSR将沉闷的16kHz音频升频成清晰的48kHz音频
unity·游戏引擎·音视频·novasr
Dreams°1231 天前
进阶实战:Wan2.2-T2V-A5B 实现可点击跳转的互动式教育视频
算法·microsoft·ai·音视频
Coovally AI模型快速验证1 天前
YOLO26技术详解:原生NMS-Free架构设计与实现原理
人工智能·计算机视觉·开源·音视频·无人机
郭涤生2 天前
高斯滤波从入门到精通
linux·音视频