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

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

相关推荐
枯木◊靠推文躺平版1 小时前
AI短视频制作选剪映还是TapNow:全场景创作效率实测对比
人工智能·音视频
秦禹辰2 小时前
ClipSketch AI把视频改造成图文漫画:选关键帧、生成手绘分镜、融合IP形象并自动写小红书文案
人工智能·tcp/ip·音视频
2601_9654488713 小时前
AI视频制作:做系列节气民俗视频音色不统一,AI 音色克隆省事的方法
人工智能·机器学习·音视频
美狐美颜SDK开放平台13 小时前
视频美颜SDK试用DEMO阶段应该测试什么?直播APP接入实操指南
开发语言·人工智能·深度学习·音视频·美颜sdk·直播美颜sdk·第三方美颜sdk
EasyDSS14 小时前
讲座视频资源散存易丢失?视频直播点播EasyDSS校园/视频融媒体平台高效管理视频
音视频·媒体·easydss
2601_9656196917 小时前
AI视频制作:做历史战争视频,兵力部署的老地图难找,AI怎么自动配战争地图?
人工智能·音视频
2601_9654490820 小时前
AI视频制作:做系列考古视频音色不统一,AI 音色克隆的完整流程
人工智能·机器学习·音视频
2601_9654490820 小时前
AI视频制作:做系列历史地图视频想固定音色,AI 音色克隆的流程实测
人工智能·音视频
智塑未来1 天前
AI视频翻译配音工具怎么选?5款工具的链路覆盖对比
人工智能·音视频
做萤石二次开发的哈哈1 天前
商场分区广播怎么开发?商用音频主机四大技能与音频文件管理实践
音视频·蓝海aiot一站式工作台·公共广播·智慧广播·萤石云开放平台·商用音频主机·矩阵路由