ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MOSS-Transcribe-Diarize 命令行批量处理:mtd-subtitle 导出 SRT/ASS/JSON 完整指南

MOSS-Transcribe-Diarize 命令行批量处理:mtd-subtitle 导出 SRT/ASS/JSON 完整指南 MOSS-Transcribe-Diarize 命令行批量处理mtd-subtitle 导出 SRT/ASS/JSON 完整指南【免费下载链接】MOSS-Transcribe-DiarizeA 0.9B model for long-form transcription in 50 languages with speaker diarization, timestamps, and acoustic event awareness项目地址: https://gitcode.com/gh_mirrors/mo/MOSS-Transcribe-Diarize会议录音、播客、访谈视频……面对几小时的多说话人音频手动整理字幕几乎是噩梦。MOSS-Transcribe-Diarize是开源的 0.9B 端到端音频理解模型支持 50 语言能一次性完成长音频转写、说话人分离S01、S02…、时间戳标注和声学事件感知其配套命令行工具mtd-subtitle则把这一能力封装成一条命令输入一个音视频文件自动产出SRT / ASS / JSON字幕文件还能用 FFmpeg 把字幕直接烧录进 MP4。本文就是它的批量处理完整指南看完即可上手。3 步装好 mtd-subtitle 命令整个项目通过 pip 安装安装后即可使用mtd-subtitle和mtd-subtitle-web两个命令入口定义见 pyproject.tomlgit clone https://gitcode.com/gh_mirrors/mo/MOSS-Transcribe-Diarize.git cd MOSS-Transcribe-Diarize uv venv --python 3.12 .venv source .venv/bin/activate uv pip install -e .[torch-runtime] --torch-backendauto 有 NVIDIA GPU 的同学建议再装uv pip install flash-attn长音频推理速度明显更快。命令行入口位于 moss_transcribe_diarize/app/cli.py。mtd-subtitle 工作流程一条命令完成转写模型的输入是原始音频输出是带时间戳和说话人标签的紧凑转写流如[0.48][S01]大家好[1.66]架构图如下mtd-subtitle 的完整工作流只有 4 步逻辑见 cli.py转写加载模型把音频转成带[Sxx]说话人标签和时间戳的文本流解析解析转写流为结构化字幕片段时间、说话人、文本导出同时写出raw_transcript.txt、segments.json、subtitle.srt、subtitle.ass四个文件烧录可选加--render时调用 FFmpeg 生成带硬字幕的output.mp4命令结束后终端会打印一份 JSON 摘要输出目录、片段数量、各文件路径、token 数和耗时方便直接接入脚本。一键批量处理命令与参数详解最小可用命令mtd-subtitle /path/to/input.mp4 \ --model OpenMOSS-Team/MOSS-Transcribe-Diarize \ --out-dir runs/example \ --render常用参数一览参数作用默认值第一个位置参数输入音频或视频路径mp4 / wav / m4a 等必填--out-dir输出目录不存在会自动创建自动按时间戳生成runs/cli_…--model模型路径或 Hub 模型 ID本地pretrained/目录--backend推理后端hf本地或vllm远程服务hf--device/--dtype计算设备与精度auto自动选择 GPUauto/bf16--max-new-tokens最大生成 token 数长音频务必调大2048--decodinggreedy稳定或sample配合--temperaturegreedy--prompt自定义提示词可在默认转写提示后追加热词提示xxx提升专名准确率默认转写分离提示--render追加用 FFmpeg 烧录 ASS 字幕生成output.mp4关闭批量处理很简单——CLI 一次处理一个文件用 shell 循环即可跑完整个目录for f in audio/*.wav; do mtd-subtitle $f --model OpenMOSS-Team/MOSS-Transcribe-Diarize \ --out-dir runs/$(basename ${f%.*}) --max-new-tokens 16384 done经验值1 小时长音频建议--max-new-tokens设为 16384~65536否则解码器可能在转写完之前就停止。SRT / ASS / JSON 三种字幕格式详解 segments.json —— 结构化数据源JSON 导出由 subtitle/export.py 生成每个片段包含id、start、end、speaker、text五个字段适合后续程序化处理、翻译或按说话人切分音频。 subtitle.srt —— 通用外挂字幕SRT 是兼容性最好的字幕格式几乎所有播放器都支持。mtd-subtitle 默认在每行前加上说话人前缀如S01: 大家好片段模型定义见 subtitle/models.py。 subtitle.ass —— 带说话人配色的高级字幕ASS 导出的亮点按说话人自动配色为 S01、S02… 各生成独立样式颜色从调色板循环取用自动探测视频分辨率用 ffprobe 读取输入视频宽高写入PlayResX/PlayResY字号按高度自适应纯音频输入则回退 1920×1080重叠台词自动分行道时间轴重叠的台词会上下错开显示不会互相覆盖逻辑见 subtitle/layout.py烧录到视频时FFmpeg 命令由 app/ffmpeg.py 中的burn_ass_subtitles构造。进阶接入 vLLM 后端处理更大批量如果本地显存有限或想用推理服务集中跑大批量文件可以把模型部署为 vLLM 服务后让 CLI 走远程后端mtd-subtitle input.mp4 \ --backend vllm \ --vllm-base-url http://127.0.0.1:8000/v1 \ --max-new-tokens 65536远程实现位于 app/vllm_runner.py它会自动把任意格式的输入转成 WAV 字节流通过 OpenAI 兼容的/v1/audio/transcriptions接口上传本地无需加载模型。配合 vLLM 的高并发能力这是吞吐最大的批量方案。常见问题与性能技巧避坑清单--render报错提示需要 FFmpeg系统 PATH 中必须同时存在ffmpeg和ffprobe先安装 FFmpeg 再重试转写在视频一半处戛然而止--max-new-tokens太小调大后重跑专有名词总写错用--prompt在默认提示后追加热词提示产品名, 人名GPU 长音频显存不够安装flash-attnCLI 会自动按 FlashAttention-2 → SDPA 的优先级选择注意力后端见 app/model_runner.py想要可视化界面改用mtd-subtitle-web --model OpenMOSS-Team/MOSS-Transcribe-Diarize --port 7860打开浏览器即可上传、审阅并下载 JSON/SRT/ASS入口见 app/web_cli.py总结需求推荐做法单个文件快速出字幕mtd-subtitle 文件 --out-dir runs/x一个目录批量跑shell for 循环 独立--out-dir大批量、省显存--backend vllm接入 vLLM 服务直接出成品视频追加--renderMOSS-Transcribe-Diarize 用转写分离时间戳一次成型的设计省掉了传统 ASRVAD说话人分离多模型拼接的烦恼而 mtd-subtitle 把整条流水线压缩成一行命令配合 JSON 摘要输出天然适合写进自动化脚本。想要微调适配自己的音频域可继续参考 FINETUNING.md。【免费下载链接】MOSS-Transcribe-DiarizeA 0.9B model for long-form transcription in 50 languages with speaker diarization, timestamps, and acoustic event awareness项目地址: https://gitcode.com/gh_mirrors/mo/MOSS-Transcribe-Diarize创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表