AutoCut 使用与原理全解:用文本编辑器剪视频的开源字幕剪辑工具

发布时间:2026/10/2 1:53:43
AutoCut 使用与原理全解:用文本编辑器剪视频的开源字幕剪辑工具 人工智能语音音视频【免费下载链接】autocut用文本编辑器剪视频项目地址https://gitcode.com/GitHub_Trending/au/autocut点击查看免费下载AutoCut 是一款基于 Whisper 语音转录的开源视频剪辑工具其核心思路是让字幕替你完成剪切先自动为视频生成字幕再通过编辑 Markdown 文本选择要保留的句子最后按标记自动裁切并拼接视频片段。本文将完整讲解 AutoCut 的安装方式、转录/剪切/监听三种工作模式、命令行参数与常见问题并结合当前仓库源码深入剖析其底层实现帮助你直接上手这套文本驱动剪辑工作流。文档说明本文以仓库 README.md 为骨架展开所有命令参数、文件命名规则均以当前仓库代码main.py、transcribe.py、cut.py、daemon.py、utils.py为准。AutoCut 是什么以字幕为中心的剪辑流程AutoCut 对你的视频自动生成字幕然后你选择需要保留的句子AutoCut 将对你视频中对应的片段裁切并保存。你无需使用视频编辑软件只需要编辑文本文件即可完成剪切。整个工作流可以概括为三条命令# 1. 转录从视频生成字幕 autocut -t 11-28-18.mp4 # 2. 剪切根据标记好的字幕与 md 文件裁剪视频 autocut -c 11-28-18.mp4 11-28-18.srt 11-28-18.md # 3. 监听持续监控文件夹自动转录并剪切新视频 autocut -d 2022-11-04从源码结构看这五个核心模块各司其职main.py 负责声明命令行参数并分发动作transcribe.py 调用 Whisper 模型生成.srt与.mdcut.py 根据标记结果完成片段裁切与合并daemon.py 提供文件夹监听utils.py 提供音频加载、Markdown 解析等全局工具方法。后续章节会逐一展开。快速上手一个完整的录制剪辑示例文件夹级别的自动处理假如你录制的视频放在2022-11-04/这个文件夹里运行autocut -d 2022-11-04AutoCut 将持续对这个文件夹里的视频进行字幕抽取和剪切。例如你刚完成一个视频录制并保存为11-28-18.mp4AutoCut 将自动生成11-28-18.md。你在其中选择需要保留的句子后AutoCut 将剪切出11-28-18_cut.mp4并生成11-28-18_cut.md来预览结果。提示如果你使用 OBS 录屏可以在设置-高级-录像-文件名格式中将空格改成/即%CCYY-%MM-%DD/%hh-%mm-%ss。这样视频文件将自动放在日期命名的文件夹里与autocut -d的目录参数天然匹配。全部完成后AutoCut 会在文件夹内生成autocut.md你只需要在其中勾选需要拼接的视频AutoCut 将输出autocut_merged.mp4和对应的字幕文件——这就是多片段最终成片的环节。用 Markdown 编辑器勾选句子你可以使用任何 Markdown 编辑器来编辑生成的.md文件常用的是 VS Code 和 Typora。下图是通过 Typora 对11-28-18.md进行编辑的界面从源码看这个.md文件由 transcribe.py 中的_save_md生成其内部通过 utils.py 的MD类维护一个非常简单的 Markdown 任务列表每个字幕对应一行- [ ] [字幕序号,分钟:秒] 字幕内容勾选即改写成- [x]最后一行-- Mark if you are done editing.表示编辑完成。剪切器只读取被标记为x的行因此编辑文本本质上就是给任务打勾。安装指南Python 包安装推荐使用 pip 安装当前仓库版本已发布到 PyPIpip install autocut-sub安装后即可直接导入转录相关功能2024.03.10 更新from autocut import Transcribe, load_audio对应源码见init.py包对外导出Transcribe、load_audio、WhisperMode、WhisperModel、LANG其中Transcribe来自 package_transcribe.pyload_audio来自 utils.py。这意味着你不必依赖命令行也可以在自己的 Python 脚本中完成加载音频 → 转录 → 输出 srt的完整流程。依赖变体whisper / faster-whisper / openaiAutoCut 支持三种转录后端通过extras_require控制依赖范围见 setup.py# 仅使用本地 openai-whisper pip install . # 同时支持 faster-whisper本地推理加速 pip install .[faster] # 同时支持调用 OpenAI Whisper API pip install .[openai] # 全部后端 pip install .[all]三种后端在命令行中通过--whisper-mode切换# 使用 faster-whisper autocut -t xxx --whisper-modefaster # 使用 openai api需先设置 API Key export OPENAI_API_KEYsk-xxx autocut -t xxx --whisper-modeopenai --openai-rpm3在 type.py 中WhisperMode枚举定义了whisper、openai、faster三种模式whisper_model.py 中则分别由WhisperModel、OpenAIModel、FasterWhisperModel三个类实现均继承自AbstractWhisperModel抽象基类。注意openai与faster模式需要额外安装对应依赖否则运行时会在对应类的load方法中抛出 ImportError 提示见 whisper_model.py 与 whisper_model.py。本地源码安装测试git clone https://github.com/mli/autocut cd autocut pip install .上面将安装 pytorch。如果你需要 GPU 运行且默认安装的版本不匹配的话可以先自行安装 Pytorch。如果安装 Whisper 出现问题请参考其官方文档openai/whisper 的 setup 章节。安装 ffmpegAutoCut 依赖 ffmpeg 做音频提取与视频导出utils.py 的load_audio即通过ffmpeg-python将任意媒体转为 16kHz 单声道 PCM请按平台安装# on Ubuntu or Debian sudo apt update sudo apt install ffmpeg # on Arch Linux sudo pacman -S ffmpeg # on MacOS using Homebrew (https://brew.sh/) brew install ffmpeg # on Windows using Scoop (https://scoop.sh/) scoop install ffmpegDocker 安装首先将项目克隆到本地git clone https://github.com/mli/autocut.git安装 CPU 版本进入项目根目录构建 docker 映像对应仓库中的 Dockerfiledocker build -t autocut .运行下面的命令创建 docker 容器就可以直接使用了docker run -it --rm -v E:\autocut:/autocut/video autocut /bin/bash其中-v将主机存放视频的文件夹E:\autocut映射到容器的/autocut/video目录请将E:\autocut替换为你自己主机上存放视频的目录。安装 GPU 版本使用 GPU 加速需要主机有 Nvidia 显卡并安装好相应驱动然后在项目根目录构建映像对应 Dockerfile.cudadocker build -f ./Dockerfile.cuda -t autocut-gpu .使用 GPU 加速时运行 docker 容器需添加参数--gpus alldocker run --gpus all -it --rm -v E:\autocut:/autocut/video autocut-gpu命令行参数全景AutoCut 的全部命令行参数在 main.py 中通过argparse声明下面按类别整理参数默认值说明-t/--transcribe无将视频/音频转录为字幕布尔开关-c/--cut无根据字幕剪切视频布尔开关-d/--daemon无监听文件夹自动转录并剪切布尔开关-s无将.srt转换为紧凑格式便于编辑布尔开关-m/--to-md无将.srt转换为.md便于编辑布尔开关--langzh转录输出语言支持 zh/en 及数十种语言见下方列表--prompt喂给 Whisper 的初始提示词--whisper-modewhisper转录后端whisper/openai/faster--whisper-modelsmall模型大小tiny/base/small/medium/large/large-v2--openai-rpm3OpenAI API 每分钟请求数免费用户 3 RPM付费用户可选 50 RPM--bitrate10m导出视频的比特率如10m、1m、500k--vadauto是否使用 VAD 语音活动检测取值1/0/auto--force无即使文件已存在也强制覆盖写入布尔开关--encodingutf-8生成与读取文档的编码格式--device自动强制转录设备cpu/cuda默认有 GPU 则自动使用其中--lang的可选值以 type.py 的LANG字面量类型为准包括zh、en以及 Afrikaans、Arabic、Armenian、Japanese、Korean、Russian、Vietnamese、Welsh 等数十种语言完整列表可直接查看该文件。主函数的分发逻辑main.py依次判断transcribe→to_md→cut→daemon→s若未指定任何动作则提示 No action, use -c, -t or -d。转录从视频生成.srt与.md转录单个视频autocut -t 22-52-00.mp4该命令会在同一目录生成22-52-00.srt标准字幕与22-52-00.md可勾选的 Markdown 任务列表。选择更大的模型提升转录质量autocut -t 22-52-00.mp4 --whisper-model large默认模型是small。更好的模型是medium和large但推荐使用 GPU 获得更好的速度也可以使用更快的tiny和base但转录质量会下降。模型枚举在 type.py 的WhisperModel中定义。转录流程的源码级拆解从 transcribe.py 的run方法可以看到完整链路加载音频utils.load_audio(input, sr16000)将视频解压为 16kHz 采样率的单声道 float32 数组utils.py语音活动检测VAD_detect_voice_activity默认加载snakers4/silero-vad模型先去除过短片段阈值 1.0 秒再向头尾扩展 0.2 秒避免切得过紧最后合并间距小于 0.5 秒的相邻片段对应 utils.py 的expand_segments、remove_short_segments、merge_adjacent_segments三个工具函数分段转录_transcribe将每个语音片段单独送入 Whisper 模型生成字幕_save_srt用srt.compose写出标准.srt_save_md再基于 srt 生成 Markdown 任务列表。如果传入--vad 0则跳过 VAD将整段音频作为一个片段直接转录transcribe.py。关于 No Speech 标记在 whisper_model.py 的gen_srt中若相邻两段语音之间间隔超过 1.0 秒AutoCut 会插入一条 No Speech 字幕来占位。这些占位项在后续拼接视频的描述生成中会被过滤掉见 cut.py但在.md编辑阶段它们会明确提醒你这里有一段时间没有说话。剪切根据标记后的字幕裁切视频基本剪切命令autocut -c 22-52-00.mp4 22-52-00.srt 22-52-00.md剪切器cut.py的输入按扩展名自动归类.srt归字幕、.md归标记文件、其余归媒体文件因此三个参数顺序可任意排列。它会读取.md中所有被标记为x的字幕序号md.tasks()过滤 正则\[(\d)提取序号见 cut.py用这些序号过滤 srt 字幕并按时间排序将间隔小于 0.5 秒的相邻字幕合并为同一片段cut.py用 moviepy 对每个片段subclip后拼接导出输出文件名为22-52-00_cut.mp4文件名规则见 utils.py 的add_cut。导出时默认比特率为--bitrate 10m可根据需要调大调小视频统一以aac音频编码写出并自动做 44.1kHz 重采样与audio_normalize音量归一化cut.py。如果输入的是音频文件如.mp3则输出_cut.mp3并走纯音频拼接路径cut.py。不传.md直接在 srt 中删除句子如果不习惯 Markdown 格式文件你也可以直接在srt文件里删除不要的句子剪切时不传入md文件名即可autocut -c 22-52-00.mp4 22-52-00.srt此时 Cutter 会跳过 md 过滤逻辑直接把 srt 中剩下的所有字幕按时间顺序合并剪切cut.py。从 srt 生成 md 便于编辑如果仅有srt文件、编辑不方便可以使用如下命令生成md文件再编辑autocut -m test.srt test.mp4 autocut -m test.mp4 test.srt # 支持视频和字幕乱序传入 autocut -m test.srt # 也可以只传入字幕文件-m分支在 main.py 中处理当传入两个参数时会先判断第一个参数扩展名是否为.srt不是则自动交换顺序保证 srt 在前随后调用 utils.py 的trans_srt_to_md。需要注意的是这种方式会完全对照 srt 生成 md不会出现 No Speech 等提示文本若同时传入视频文件md 中会嵌入对应的video预览标签md.add_video。监听模式文件夹自动转录与剪切autocut -d是面向持续录制、持续剪辑场景的模式。从 daemon.py 的实现看它会循环扫描文件夹初始每 1 秒轮询一次随后逐渐增大间隔上限 60 秒避免空转浪费资源。每一轮_iterdaemon.py的逻辑是用 glob 列出文件夹内所有文件筛出媒体文件is_video/is_audio支持 mp4/mov/mkv/avi/flv/f4v/webm 与 ogg/wav/mp3/flac/m4a见 utils.py若某个媒体文件还没有对应的.srt和.md立即调用Transcribe.run转录若抛出RuntimeError很可能是视频仍在录制中、文件未写完则记警告并跳过若已有.md且被标记为编辑完成且还没有生成_cut产物则调用Cutter.run剪切最后维护autocut.md的合并清单daemon.pyMerger.write_md为每个已完成剪辑的视频生成一行任务自动抽取其前 50 字符描述、标注[Edited]状态一旦你在autocut.md中勾选并标记完成Merger.run就会把所有选中视频拼接为autocut_merged.mp4cut.py。实用小技巧转录质量与粗剪讲得流利的视频转录质量会更高这源于 Whisper 训练数据分布。对一个视频可以先粗选句子然后在剪出来的视频上再剪一次逐层精修。紧凑字幕格式最终视频生成的字幕通常还需要小幅编辑但srt中空行太多。可以用autocut -s 22-52-00.srt生成一个紧凑版本22-52-00_compact.srt方便编辑该格式不合法但编辑器如 VS Code 仍会语法高亮。编辑完成后再对紧凑文件执行autocut -s 22-52-00_compact.srt即可转回正常格式。底层实现在 utils.py 的compact_rst转紧凑格式时每行变为时间戳 -- 时间戳 文本文本还会经 OpenCC 转为简体中文转回时逐行解析重建标准 srt。编辑器选择Typora 和 VS Code 编辑 Markdown 都很方便二者都有标记一行或多行的快捷键。但 VS Code 的视频预览似乎有点问题建议预览视频片段时使用 Typora 或其他支持视频嵌入的编辑器。导出性能视频通过 ffmpeg 导出。在 Apple M1 芯片上它用不了 GPU导致导出速度不如专业视频软件。常见问题FAQ输出的是乱码AutoCut 默认输出编码是utf-8请确保你的编辑器也使用utf-8解码。你可以通过--encoding指定其他编码格式但需要注意生成字幕文件和使用字幕文件剪辑时的编码格式需要一致。例如使用gbkautocut -t test.mp4 --encodinggbk autocut -c test.mp4 test.srt test.md --encodinggbk注意如果使用非 utf-8 编码如gbk生成md文件并用 Typora 打开该文件可能被 Typora 自动转码为其他编码此时再以生成时指定的编码剪辑就可能出现编码不支持等报错。因此建议在使用 Typora 编辑后通过 VSCode 等工具将文件保存为你需要的编码格式再执行剪辑。从源码看编码参数贯穿读写两端transcribe.py 写 srt 与 md 时使用self.args.encodingcut.py 读 srt 与 md 时同样使用self.args.encoding两边不一致必然导致解码失败。如何使用 GPU 来转录当你有 Nvidia GPU 且安装了对应版本的 PyTorch 时转录默认在 GPU 上进行。可以通过以下命令确认环境是否支持 GPUpython -c import torch; print(torch.cuda.is_available())如果返回False可以在安装 AutoCut 前手动安装对应的 GPU 版本 PyTorch。使用 GPU 时报错显存不够Whisper 的大模型需要一定的 GPU 显存。如果显存不够可以改用小一点的模型如small如果仍想使用大模型可以通过--device强制使用 CPUautocut -t 11-28-18.mp4 --whisper-model large --device cpu--device的取值在 main.py 限定为cpu/cuda默认None时自动选择有 GPU 用 GPU否则用 CPU。顺带一提当强制 CPU 且存在多个语音片段时whisper_model.py 会启动一个 4 进程的进程池并行转录以提升速度。能不能使用 pip 安装可以。Whisper 本身也已发布到 PyPI可以直接用pip install openai-whisper安装AutoCut 本体则通过pip install autocut-sub安装见 setup.py 的nameautocut-sub与 console_scripts 入口点autocut autocut.main:main。如何参与贡献代码结构仓库的代码布局如下autocut │ .gitignore │ LICENSE │ README.md # 一般新增或修改需要让使用者知道就需要对应更新 README.md 内容 │ setup.py │ └─autocut # 核心代码位于 autocut 文件夹中新增功能的实现也一般在这里面进行修改或新增 │ cut.py │ daemon.py │ main.py │ transcribe.py │ utils.py └─ __init__.py各模块职责与 README.md 的开发一节一致utils.py全局共用的工具方法音频加载、Markdown 解析、srt/md 转换等transcribe.py调用模型生成srt和md的部分cut.py提供根据标记后md或srt进行视频剪切合并的功能daemon.py提供监听文件夹生成字幕和剪切视频的功能main.py声明命令行参数根据输入参数调用对应功能。开发环境搭建开始安装依赖之前建议先了解 Anaconda 或 venv 的虚拟环境使用推荐使用虚拟环境来搭建开发环境具体安装方式为在虚拟环境中按上文安装步骤进行。为什么推荐虚拟环境开发一方面是保证各种不同的开发环境之间互相不污染 更重要的是这个项目实际上是一个 Python Package安装之后 AutoCut 的代码会变成你的环境依赖。因此在你更新代码之后需要将新代码重新安装到环境中才能调用到新代码。开发注意事项代码风格遵循 PEP-8可使用自动格式化工具CI 使用 black 做 lint工具函数尽量放在utils.py中提交前请对与你修改直接相关的部分以及你修改会影响到的部分都进行测试。测试运行方式为pip install pytest后执行pytest testlint 为pip install black后执行black .。仓库的测试用例覆盖在 test/config.py 中定义媒体样本包括 mp4、mov、mkv、flv、mp3 等格式test/media转录与剪切的用例分别在 test/test_transcribe.py 和 test/test_cut.py 中。提交规范commit 信息用英文描述清楚做了哪些修改小写字母开头尽量保证一次 commit 涉及的修改较小、描述简短方便之后查找PR 的 title 简述修改内容contents 具体写下修改内容提交前运行测试与 lint。总结AutoCut 把剪视频这件事抽象成了编辑文本转录生成字幕与 Markdown 任务列表勾选即标记保留-c完成裁剪-d自动接力autocut.md完成多段拼接。配合 whisper / faster-whisper / OpenAI API 三种转录后端、--encoding编码控制、VAD 语音活动检测等细节设计它非常适合口播录制 → 文本粗剪 → 快速成片的内容生产流程。结合本仓库源码阅读 main.py、transcribe.py、cut.py、daemon.py 四个入口文件即可完整掌握其内部机制并按需二次开发。赞分享人工智能语音音视频【免费下载链接】autocut用文本编辑器剪视频项目地址https://gitcode.com/GitHub_Trending/au/autocut点击查看免费下载相关推荐用文本编辑器剪视频Autocut智能剪辑工具完整指南用文本编辑器剪视频Autocut智能剪辑工具完整指南 还在为繁琐的视频剪辑而烦恼吗想要快速制作精彩短视频却不知从何下手今天我要向大家推荐一个革命性的开源项人工智能语音音视频jina-embeddings-v2-base-en技术深度解析ALiBi如何实现8k序列长度支持jina embeddings v2 base en技术深度解析ALiBi如何实现8k序列长度支持 jina embeddings v2 base en作为一onnx.reference 参考实现 API 完全指南ReferenceEvaluator、OpRun 与自定义算子扩展onnx.reference 参考实现 API 完全指南ReferenceEvaluator、OpRun 与自定义算子扩展 本篇指南系统讲解 ONNX 开源仓人工智能语音音视频上一篇为什么你的USB无线网卡在Linux上无法使用rtl8812AU_8821AU兼容性清单下一篇Chia区块链开发环境终极指南7步打造个性化高效工作流创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考