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

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

相关推荐
Coovally AI模型快速验证5 小时前
超越Sora的开源思路:如何用预训练组件高效训练你的视频扩散模型?(附训练代码)
人工智能·算法·yolo·计算机视觉·音视频·无人机
weixin_436804075 小时前
音频在线预览工具 - 输入URL即刻播放远程音频
音视频
kaizq6 小时前
AI-MCP本地流媒音频服务器设计与CherryStudio部署应用
音视频·cherrystudio·fastmcp·streamablehttp·本地mcp流媒服务器
thinkMoreAndDoMore7 小时前
audioservice
音视频
TEL189246224777 小时前
IT6517BFN:单芯片DisplayPort转VGA转换器,集成MCU
音视频·实时音视频·视频编解码
TEL189246224779 小时前
IT6516BFN:单芯片DisplayPort转VGA转换器,集成MCU
音视频·实时音视频·视频编解码
Facechat9 小时前
视频混剪-WebCodecs导出视频
音视频
Facechat10 小时前
视频混剪-转场效果是怎么实现的
音视频
18538162800云罗12 小时前
2026 最新矩阵剪辑系统搭建教程(附完整可运行源码
线性代数·矩阵·音视频
Black蜡笔小新12 小时前
视频融合平台EasyCVR打造化工园区智能化监控管理系统应用方案
音视频