多张图片幻灯片加配音生成短视频 (专业的图文成片交付引擎)
Project description
snapshow —— 专业的图文成片交付引擎
愿景 (Vision)
snapshow 是一款专为追求极致效率与专业质感的创作者设计的图文成片交付引擎。
我们的核心理念是:创意归于上游,交付归于 snapshow。它并非 AI 内容生成器,而是旨在通过工程化手段,将预处理的图片与文案素材(源自 AI 工具或人工创作)高效、标准化地转化为工业级水准的短视频成片。
推荐工作流 (Recommended Workflow)
- 创意阶段 (Creative Phase / 外部工具):利用 AI 工具生成视觉素材并精修文案,或准备高品质的人工创作资产。
- 工程阶段 (Engineering Phase / snapshow TUI):使用 TUI 进行视觉节奏对齐与文案智能切分,确保画面与配音完美契合。
- 交付阶段 (Delivery Phase / FFmpeg):基于工业级 FFmpeg 引擎进行自动化合成,内置 8 倍语音重试机制保障,实现高成功率的最终交付。
核心功能
- Smart Subtitle Splitter 2.0:
- 标点驱动: 智能识别中英文标点进行自然断句。
- 干净输出: 自动清洗字幕中的冗余标点(保留数值小数点),使视频画面更清爽美观。
- 语义平衡: 基于
jieba分词和 50% 长度阈值平衡算法,确保分段字数均匀且不破坏词义。
- 高可靠配音引擎:
- 智能重试: 内置 8 次总尝试(1次初始请求 + 7次重试)机制。
- 指数退避: 采用带随机抖动(Jitter)的指数退避策略,有效应对 edge-tts API 的频率限制。
- 实时反馈: 重试进度和错误信息通过 TUI 通知系统实时反馈。
- 交互式 TUI: 全新的终端交互界面,支持可视化编辑文案、实时分段预览。支持亮色/深色主题切换。
- 路径感知: 支持在启动时指定工作目录,所有配置和输出均基于该路径。
- 高性能合成: 基于原生 FFmpeg 命令行,支持 GPU 硬件加速检测与自动回退。
- 自动配音: 集成
edge-tts,内置 10 种常用中文语音一键选择。
环境要求
- Python 3.10+
- FFmpeg(必须在系统 PATH 中,推荐安装完整版以支持硬件加速)
安装
# 克隆仓库
git clone <repository-url>
cd snapshow
# 创建虚拟环境并安装依赖
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
pip install -r requirements.txt
快速开始
1. 使用交互式界面 (推荐)
直接启动 TUI 界面进行创作:
# 在当前目录启动
python -m snapshow ui
# 或者指定一个项目目录启动
python -m snapshow ui ./my_project
- 核心快捷键:
Ctrl+S: 保存配置到project_tui.yaml。Ctrl+R: 预览生成的 YAML 配置。Ctrl+G: 一键生成视频(弹出实时日志弹窗)。Ctrl+O: 打开用户级配置设置默认值。Ctrl+T: 切换主题 (亮色/深色)。Ctrl+B: 切换侧边栏显隐。Ctrl+E: 聚焦文案编辑器。Ctrl+I: 聚焦图片列表。F1: 查看完整帮助。
2. 命令行模式
如果你已有配置文件:
# 预览时间线
python -m snapshow preview project.yaml
# 生成视频
python -m snapshow generate project.yaml
智能字幕示例
原始文案:
"这款软件真的太棒了!它不仅支持自动配音,还能智能切分字幕。即便文案很长,比如这句超过了十个字,它也能处理得很好。"
Smart Subtitle Splitter 2.0 转换结果 (每屏限10字):
这款软件真的太棒了它不仅支持自动配音还能智能切分字幕即便文案很长比如这句超过了十个字它也能处理得很好
注:输出字幕已自动去除标点,确保视频视觉美感。
配置说明
迁移说明 (Migration Note)
从 v0.2.0 开始,配置文件结构已扁平化。原本嵌套在 voice 节点下的配置现已直接移至 project 节点下。旧版配置文件在 TUI 中保存时将自动迁移。
项目配置 (project)
| 字段 | 说明 | 默认值 |
|---|---|---|
| title | 视频开头显示的标题文字 | (空) |
| account_name | 视频结尾显示的用户名 | (空) |
| account_id | 视频结尾显示的账号ID | (空) |
| width / height | 视频分辨率宽度/高度 | 1080 / 1920 |
| max_chars | 每屏最大字符数 | 10 |
| voice | 配音角色 (如 zh-CN-XiaoxiaoNeural) |
zh-CN-XiaoxiaoNeural |
| voice_rate | 语速 (如 +10%, -5%) |
+0% |
| voice_volume | 音量 | +0% |
| voice_pitch | 音调 | +0Hz |
| transition_duration | 转场时长(秒) | 0.5 |
| powered_by | 是否显示 "Powered by snapshow" 署名 | true |
| output_dir | 输出目录 | ./output |
常用命令
# 查看支持的语音角色
python -m snapshow voices
# 修改全局默认设置 (用户级配置)
python -m snapshow config set --account-name 我的名字 --resolution 1080x1920
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file snapshow-0.1.1.tar.gz.
File metadata
- Download URL: snapshow-0.1.1.tar.gz
- Upload date:
- Size: 42.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0976ff79f7b7d59749d36323c414e2b21d17f9e660eac3f4320056cce6317e0
|
|
| MD5 |
35d3e7ccdb688fbdcabe68005f6499c8
|
|
| BLAKE2b-256 |
f971ae0322610c758c47a210d51ba87a9e69380654b857af7ad40f56d9970dc5
|
Provenance
The following attestation bundles were made for snapshow-0.1.1.tar.gz:
Publisher:
publish.yml on mangege/snapshow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
snapshow-0.1.1.tar.gz -
Subject digest:
d0976ff79f7b7d59749d36323c414e2b21d17f9e660eac3f4320056cce6317e0 - Sigstore transparency entry: 1247262772
- Sigstore integration time:
-
Permalink:
mangege/snapshow@5a4028cc6842c1efae22e9aded3b98129da70840 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/mangege
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5a4028cc6842c1efae22e9aded3b98129da70840 -
Trigger Event:
push
-
Statement type:
File details
Details for the file snapshow-0.1.1-py3-none-any.whl.
File metadata
- Download URL: snapshow-0.1.1-py3-none-any.whl
- Upload date:
- Size: 37.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32526626761db7d156eb96f1d56fee4dcc6ef79521d1e07e6895369ddc5cce79
|
|
| MD5 |
c4651a6f52a53602518091cac51eebe9
|
|
| BLAKE2b-256 |
997ebdf2808b5e13b7a10d1ad205bfaa09635499b367bda916a1011362119936
|
Provenance
The following attestation bundles were made for snapshow-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on mangege/snapshow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
snapshow-0.1.1-py3-none-any.whl -
Subject digest:
32526626761db7d156eb96f1d56fee4dcc6ef79521d1e07e6895369ddc5cce79 - Sigstore transparency entry: 1247262842
- Sigstore integration time:
-
Permalink:
mangege/snapshow@5a4028cc6842c1efae22e9aded3b98129da70840 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/mangege
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5a4028cc6842c1efae22e9aded3b98129da70840 -
Trigger Event:
push
-
Statement type: