mcpField
R
rostrum

rostrum

本地服务
github.com/girishkvs媒体与设计02 周前更新

关于 rostrum

rostrum 是面向演讲者和活动团队的本地命令行工具,用于审核并清理演讲录音。它检测可能的重录、重复、停顿等剪辑点,再渲染并验证成片;默认要求先审核剪辑点。

主要功能

  1. 01检测重录、重复、停顿和静音
  2. 02在 HTML 页面审核并调整剪辑点
  3. 03使用 ffmpeg 渲染逐帧精确的剪辑
  4. 04验证音视频、解码和同步
  5. 05处理分段演讲及活动文件夹
  6. 06通过 MCP 服务控制任务

适用场景

  1. 01删除单次录制演讲中的重录片段
  2. 02审核和编辑多文件录音的剪辑点
  3. 03清理整场活动的录音
  4. 04让 Agent 准备剪辑点供人工审核

MCP 相关

运行 `rostrum mcp` 可通过 stdio 启动 MCP 服务。Agent 可调用其命令,耗时步骤以可轮询任务处理;文档所述流程要求渲染前先审核剪辑点。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"girishkvs-rostrum": {
"command": "uvx",
"args": [
"rostrum"
]
}
}
}
启动命令uvx rostrum

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypirostrum0.1.0

工具

11

收录的工具列表 · 更新于 1 周前

参数类型必填说明
pathsarray是
engineany否
project_dirstring是

详细介绍

rostrum

无论是单个视频还是整场活动,都能手动或通过 Agent 清理演讲录音。 rostrum 可以找到重录、重拍、重复内容和静音片段,向你展示每处剪辑及其原因,然后使用 ffmpeg 渲染并检查结果。一切都在你的设备上运行。

rostrum 处理一段简短的演示演讲:init 找出剪辑点,审核页面调整其中一处,然后导入、渲染并验证

一段 58 秒的合成演示演讲。终端显示实际输出,并精简为主要内容。

一镜到底录制演讲,意味着要重说句子、重做幻灯片操作和点击操作。手动剪辑要花上好几个小时,一个糟糕的拼接就会毁掉一段视频。rostrum 会根据证据为每处剪辑提出建议,你可以批准或调整,然后它会进行帧精确拼接,并验证每处拼接的同步情况。

快速开始

uv tool install rostrum
rostrum init talk.mp4

pipx install rostrum 也可以。 你还需要 ffmpeg(winget install Gyan.FFmpeg、brew install ffmpeg、apt install ffmpeg)。

init 会完成整个初步处理:

  1. 探测文件,并使用默认设置写入 rostrum.json;
  2. 使用本地语音引擎转录(首次运行会下载模型,大小约为 480 MB);
  3. 查找剪辑点:口头提示词(“redo”“stop”“restart”)、重拍、重复内容、长时间停顿、开头和结尾的静音片段,以及难以辨认或未转录的语音,供你试听;
  4. 生成 review.html,你可以播放每处拼接、切换保留或剪除,并微调边界。

在你看到剪辑点之前,不会进行任何剪辑。

  • rostrum plan 会列出所有剪辑点和预计时长。
  • 审核剪辑点之前,render 会拒绝执行:你可以使用 rostrum decide 审核,也可以从页面保存文件后再导入。--yes 可跳过此检查。
  • 页面会保存 <talk>-decisions.json。导入此文件不会撤销较新的决定:对于每个剪辑点,较新的决定会优先。
  • 源文件不会被修改,输出文件也不会被覆盖。
rostrum plan                       # every cut, its reason, and the expected output length
rostrum decide <cut-id> keep       # or: cut, with --start/--end to move its edges
rostrum decide --import talk-decisions.json   # apply what you saved from review.html
rostrum render                     # frame-accurate render into <talk>.rostrum/renders/render-N/
rostrum verify --mode full         # checks the newest render: frames, audio, decode, A/V sync at every join
rostrum map 23:30 --from render-1  # a time in the edited video -> the source time

直接运行 rostrum 会显示项目状态,运行 rostrum doctor 会检查你的设置。

预期效果

以下数据来自一段 60 分钟的一镜到底演讲,仅使用 CPU 运行(8 核,small.en):

  • 速度:
    • 首次处理:约 11 分钟;
    • 渲染:约 4 分钟;
    • 完整验证:约 1.5 分钟。
  • **准确率:**与演讲者的最终剪辑相比,标记为 auto 的剪辑点覆盖了 69% 的删减时长,其中 95% 的删减确实应该删除。加入建议的剪辑点后,覆盖率提升至 90%。审核可以弥补其余差距,这也是默认启用审核的原因。

为此进行录制

  • 如果说错了,就说 “redo”(或“stop”“restart”),停一秒,然后从句子开头重新说。
  • 重新做幻灯片操作或点击操作也没问题:错误操作和重新操作看起来就像其他重拍一样。
  • 继续录制。单独文件越少,审核越容易;使用多个文件也可以。

单场演讲、多个文件或整场活动

rostrum init talk-part1.mp4 talk-part2.mp4   # one talk recorded in parts: one timeline, one output
rostrum init talks/                          # one talk per file; *-part1/*-part2 files are grouped

文件名以 -part1、-part2 等结尾的文件会合并为一场演讲(也可以使用 _ 或空格;设置 init.partPattern 可更改规则)。其他每个文件都会作为单独的一场演讲处理。

各个分段会作为同一条时间线进行分析,因此,即使在一个文件末尾开始重说、并在下一个文件中再次说出,也能识别出来。一场活动共用一组设置(引擎、提示词、渲染设置、响度目标、命名),任何一场演讲都可以覆盖其中任意设置。

配置所有内容

设置采用分层的纯 JSON 格式,后面的设置会覆盖前面的设置:

  1. 内置默认值;
  2. ~/.rostrum/config.json,你的默认设置;
  3. rostrum.json,活动或演讲文件;
  4. 命令行标志。

每个阈值、词表、引擎和渲染选项都是一个键,发布的架构可为编辑器提供自动补全。rostrum config 会显示每个键的生效值及其来源。请参阅 examples/rostrum.example.json。

{
  "$schema": "https://raw.githubusercontent.com/girishkvs/rostrum/main/src/rostrum/schema/rostrum.schema.json",
  "defaults": {
    "cues":   { "words": ["redo", "stop", "restart"] },
    "pauses": { "maxSec": 2.0, "keepSec": 0.5 },
    "render": { "crf": 18, "name": "{speaker}-{title}" }
  },
  "talks": [
    { "id": "keynote", "speaker": "Jane Doe", "title": "Keynote", "sources": ["part1.mp4", "part2.mp4"] }
  ]
}

每个检测器都有一个级别:

  • auto:显示时默认选中剪切。
  • propose:显示时默认选中保留。
  • off:不运行。
检测器查找内容默认值
口头提示词“redo”“stop”“restart”;剪切回重新开始的位置auto
重录短时间内再次说出同一句话;“换了一个词又说了一遍”只会作为建议匹配度高时为 auto,否则为 propose
重复“now, now”或重新开始的短语propose
停顿超过 maxSec 的静音,每侧保留 keepSecauto
开场和收尾开头和结尾的静音auto
话外音“is this recording?” 及类似的插话propose
不清晰内容含混不清、幻觉生成或未转录的语音propose
语气词“um”“uh”off

计划在 0.2 版本中加入基于演示文稿的幻灯片感知检查。

语音引擎

引擎用途
faster-whisper默认引擎。在本地运行,可使用 CPU 或 GPU。
command可使用任何能输出 words JSON、SRT 或 VTT 的程序,例如 whisper.cpp 或供应商的 CLI。
import导入已有的转录文本。

command 和 import 引擎无需额外设置即可运行。第三方引擎可以通过 rostrum.engines 入口点注册,并指定一个 rostrum.engines.SpeechEngine 子类;rostrum 会将其构建为 Engine(settings, tools, report)。语音工作进程会根据 CPU 和内存自动确定数量(speech.workers: "auto");也可以设置具体数值来覆盖。

**默认设置为英语:**使用 small.en 模型以及提示词、语气词和话外音词表。要使用其他语言,请将 speech.model 设为 small 等多语言模型,设置 speech.language,并替换词表。

在 Agent 中使用

除 mcp 外,每条命令都接受 --json。rostrum mcp 会通过 stdio 运行 MCP 服务;耗时较长的步骤会作为任务运行,供 Agent 轮询。

一键安装(MCP 服务和 Agent 技能):

Host安装方式
Claude Code/plugin marketplace add girishkvs/rostrum,然后运行 /plugin install rostrum@rostrum
Copilot CLIcopilot plugin install girishkvs/rostrum
Gemini CLIgemini extensions install https://github.com/girishkvs/rostrum
Claude Desktop打开 最新版本中的 rostrum-<version>.mcpb
Cursor将 rostrum 添加到 Cursor

也可以手动添加服务。 uvx 会运行 PyPI 软件包,因此无需安装其他内容:

Host添加服务
Copilot CLI运行 /mcp add,然后将名称设为 rostrum、命令设为 uvx、参数设为 rostrum mcp
Claude Codeclaude mcp add rostrum -- uvx rostrum mcp
VS Code依次选择 MCP: Add Server、Command (stdio),然后输入 uvx rostrum mcp
Codex CLI在 ~/.codex/config.toml 中添加 [mcp_servers.rostrum],并设置 command = "uvx" 和 args = ["rostrum", "mcp"]
Gemini CLI、Cursor在 ~/.gemini/settings.json 或 ~/.cursor/mcp.json 中添加 "mcpServers": { "rostrum": { "command": "uvx", "args": ["rostrum", "mcp"] } }

首次启动时会下载 rostrum 的依赖项,耗时可能超过主机等待服务启动的时间。请先运行一次 uvx rostrum doctor。

然后提出请求:“清理 talk.mp4,并展示所有你不确定的地方。” skills/rostrum/SKILL.md 会告知 Agent 以下规则:

  • 渲染前先展示剪辑内容;
  • 询问不确定之处;
  • 在你提出要求时,导入你从审核页面保存的内容(import_decisions);
  • 只有在你提出要求后才进行渲染(随后 Agent 会传入 confirmed)。

mcp-pacemaker 可以托管服务,并使其在不同会话间保持运行。将以下条目添加到 ~/.mcp-pacemaker/servers.json;保存文件后,pacemaker 会重新加载:

{ "rostrum": { "command": "uvx", "args": ["rostrum", "mcp"] } }

verify 的检查内容

  • **时长:**输出长度与保留时长的误差不超过一帧。
  • **视频:**帧连续,且步长恒定。
  • **音频:**数据包连续,没有间隙或重叠。
  • **解码:**完整解码成功,且无错误。
  • **剪辑接点:**每个接点的时间戳连续。
  • **音视频偏移:**在接点处与源文件进行比对;fast 模式下抽样检查,full 模式下检查每个接点。

要求

  • Python 3.11+ 和 ffmpeg/ffprobe 6.1 或更高版本(CI 使用 6.1 和 9.0)。如果它们不在 PATH 中,请设置 ROSTRUM_FFMPEG / ROSTRUM_FFPROBE,或在 rostrum.json 中设置 defaults.tools.ffmpeg / defaults.tools.ffprobe。
  • Windows、macOS 和 Linux。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。