rostrum について
rostrumは、講演者やイベントチーム向けに録画を確認して整えるローカルのコマンドラインツールです。撮り直し、繰り返し、無音などの候補を検出して編集動画をレンダリング・検証し、標準では事前確認を求めます。
主な機能
- 01撮り直し、繰り返し、無音区間の検出
- 02HTML画面で編集候補を確認・調整
- 03ffmpegによるフレーム精度のレンダリング
- 04音声、映像、デコード、同期の検証
- 05分割した講演やイベントフォルダーの処理
- 06MCPサーバー経由でのジョブ操作
活用シーン
- 01一度撮りの講演から撮り直し部分を除去
- 02複数ファイルの録画で編集箇所を確認・調整
- 03イベント全体の録画を整理
- 04エージェントに編集候補を用意させて人が確認
MCP 対応
`rostrum mcp`でstdio経由のMCPサーバーを起動します。エージェントはコマンドを利用でき、時間のかかる処理はポーリング可能なジョブとして扱われます。記載された手順ではレンダリング前の確認が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
11掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| paths | array | はい | |
| engine | any | いいえ | |
| project_dir | string | はい |
詳細
rostrum
1 本の動画からイベント全体まで、手作業でもエージェント経由でも、トークの録画をきれいに編集できます。 rostrum は言い直し、撮り直し、繰り返し、無音部分を見つけ、理由とともにすべてのカットを表示してから、ffmpeg でレンダリングし、結果をチェックします。すべての処理はお使いのマシン上で実行されます。

58 秒の合成デモトークです。ターミナルには、実際の出力を主な行に絞って表示しています。
トークを一度に録画すると、文やスライド、クリックをやり直すことになります。こうした箇所を手作業で編集するには何時間もかかり、つなぎ目を 1 つ間違えるだけで動画が台無しになります。rostrum は各カットの根拠とともに候補を提示します。候補を承認または調整すると、フレーム単位で正確につなぎ合わせ、すべてのつなぎ目で同期を検証します。
クイックスタート
uv tool install rostrum
rostrum init talk.mp4
pipx install rostrum でもインストールできます。
ffmpeg も必要です(winget install Gyan.FFmpeg、brew install ffmpeg、apt install ffmpeg)。
init を実行すると、最初の処理がすべて行われます。
- ファイルを調査し、デフォルト設定を含む
rostrum.jsonを書き出します。 - ローカルの音声認識エンジンで文字起こしします(初回実行時に、約 480 MB のモデルをダウンロードします)。
- カットを検出します:発話による合図(「redo」「stop」「restart」)、撮り直し、繰り返し、長い間、冒頭と末尾の無音部分、聞き取れない、または文字起こしされていないため、再生して確認する必要がある発話。
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 を実行するとセットアップがチェックされます。
期待できること
以下の数値は、CPU のみ(8 コア、small.en)で処理した、60 分のワンテイクのトークから得られたものです。
- 速度:
- 初回の処理:約 11 分。
- レンダリング:約 4 分。
- 完全な検証:約 1.5 分。
- 精度: 話者による最終編集版と比較すると、
autoとマークされたカットで削除時間の 69% をカバーし、削除した部分の 95% は適切に削除されていました。候補を追加するとカバー率は 90% に上がりました。残りの差はレビューで解消できます。そのため、レビューがデフォルトで有効になっています。
録画するときのコツ
- つまずいたら 「redo」(または「stop」「restart」)と言い、1 秒ほど間を置いてから、文の最初からやり直してください。
- スライドやクリックをやり直しても問題ありません。失敗した操作とやり直しは、ほかの撮り直しと同じように扱われます。
- 録画を続けてください。ファイルを分ける数が少ないほどレビューが簡単になりますが、複数のファイルにも対応しています。
1 つのトーク、複数のファイル、またはイベント全体
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 を設定します)、それらのファイルは 1 つのトークとして結合されます。それ以外のファイルは、それぞれ別のトークとして扱われます。
パートは 1 つのタイムラインとして解析されるため、あるファイルの終わりで始まり、次のファイルで再び発話された「やり直し」も検出されます。イベント全体で設定ブロック(エンジン、合図の語句、レンダリング設定、ラウドネス目標、命名規則)が共有されます。各トークでは、その設定を個別に上書きできます。
すべてを設定する
設定は各レイヤーの通常の JSON で記述され、後のレイヤーが優先されます。
- 組み込みのデフォルト値;
~/.rostrum/config.jsonのデフォルト値;- イベントまたはトークのファイルである
rostrum.json; - コマンドラインフラグ。
すべてのしきい値、単語リスト、エンジン、レンダリングオプションがキーになっており、公開されているスキーマによってエディターでの自動補完が利用できます。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 を超える無音。両側に keepSec ずつ残してトリミングします | auto |
| 冒頭・末尾 | 開始時と終了時の無音 | auto |
| 発話外の会話 | 「これ録音されてる?」のような傍話 | propose |
| 不明瞭な発話 | 不明瞭な発話、幻覚による発話、または文字起こしされていない発話 | propose |
| フィラー | 「um」、「uh」 | off |
デッキを用いたスライド対応チェックは、バージョン 0.2 での導入を予定しています。
音声エンジン
| エンジン | 用途 |
|---|---|
faster-whisper | デフォルトです。CPU または GPU 上でローカルに動作します。 |
command | whisper.cpp やベンダーの CLI など、単語 JSON、SRT、VTT を出力する任意のプログラムを使用します。 |
import | すでに用意されている文字起こしデータを使用します。 |
command エンジンと import エンジンは、追加設定なしで動作します。サードパーティー製のエンジンは、rostrum.engines エントリーポイントを通じて、rostrum.engines.SpeechEngine のサブクラスを指定して登録できます。rostrum は Engine(settings, tools, report) としてインスタンスを作成します。音声ワーカーの数は CPU とメモリに合わせて自動調整されます(speech.workers: "auto")。上書きするには数値を設定してください。
デフォルトは英語です。 small.en モデルと、発話キュー、フィラー、発話外の会話に関する単語リストが使用されます。別の言語を使うには、speech.model に small などの多言語モデルを指定し、speech.language を設定して、単語リストを置き換えてください。
エージェントから使用する
mcp 以外のすべてのコマンドは --json を受け取ります。rostrum mcp は stdio 経由で MCP サーバーを実行します。時間のかかる処理はジョブとして実行され、エージェントがポーリングします。
ワンステップでインストール(MCP サーバーとエージェントスキル):
| ホスト | インストール |
|---|---|
| Claude Code | /plugin marketplace add girishkvs/rostrum、続いて /plugin install rostrum@rostrum |
| Copilot CLI | copilot plugin install girishkvs/rostrum |
| Gemini CLI | gemini extensions install https://github.com/girishkvs/rostrum |
| Claude Desktop | 最新リリースから rostrum-<version>.mcpb を開きます |
| Cursor |
または、サーバーを手動で追加します。 uvx は PyPI パッケージを実行するため、ほかにインストールするものはありません。
| ホスト | サーバーの追加 |
|---|---|
| Copilot CLI | /mcp add を実行し、名前に rostrum、コマンドに uvx、引数に rostrum mcp を指定します |
| Claude Code | claude 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 には、エージェントが従うルールが記載されています。
- レンダリング前にカット箇所を表示すること。
- 判断に迷う箇所について確認すること。
- 指示があったら、レビュー画面から保存した内容をインポートすること(
import_decisions)。 - 指示があってからレンダリングすること(その後、エージェントは
confirmedを渡します)。
mcp-pacemaker を使うと、サーバーをホストし、セッション間も起動状態に保てます。~/.mcp-pacemaker/servers.json に次のエントリーを追加すると、pacemaker はファイルの保存時に再読み込みします。
{ "rostrum": { "command": "uvx", "args": ["rostrum", "mcp"] } }
verify が確認する内容
- 長さ: 出力の長さが、保持する時間と1フレーム以内の誤差で一致していること。
- 映像: フレームが一定の間隔で連続していること。
- 音声: パケットが途切れたり重複したりせず、連続していること。
- デコード: エラーなく完全なデコードが完了すること。
- 接合部: すべての接合部でタイムスタンプが連続していること。
- 音声/映像のずれ: 接合部でソースと比較して測定します。
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
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。