wassgha/rescript
🎬 Open source, transcript-based video/audio editor that lives in the browser.
Rescriptは、文字起こしベースのメディアエディタです。 動画や音声ファイルを読み込むと、デバイス上で文字起こしが行われ、単語ごとのタイムスタンプと話者ラベルが生成されます。あとはテキストを編集するだけです。文字起こし内の単語を削除すると、対応するメディア部分がカットされます。最終結果をエクスポートすれば完了です。ファイルがマシンから外部へ送信されることはありません。
どのような問題を解決しますか?
従来の動画編集はタイムラインベースで、トラック上でクリップをドラッグする必要がありました。Rescriptはその常識を覆します。単語を編集すれば、カットは自動的に行われます。また、すべてがローカルで動作するため、クラウド文字起こしサービスにおけるプライバシーの懸念もありません。
主な機能 (READMEより)
- プライバシー設計 — 認証やアップロードは不要。すべてのメディア処理はデバイス上で完結します。
- 単語レベルの編集 — 単語を選択してDeleteキーを押すと、テキストに合わせてカットされます。
- 独自の文字起こしをインポート — 文字起こしプロセスをスキップし、SRT、VTT、JSON字幕ファイルを使って編集できます。
- エクスポートハブ — 動画 (MP4/WebM, 720p–4K)、音声 (M4A/MP3/WAV)、文字起こし/字幕 (TXT/MD/DOCX/PDF/SRT/VTT/JSON)、またはNLE/DAWタイムライン形式 (Resolve/Premiere/FCP/AAF/Reaper/Samplitude EDL) に対応。
- フィラー除去 — 「えー」「あの」などをワンクリックでカット。
- 無音除去 — 0.3秒以上の休止をワンクリックでカット。
- 話者分離 — 話者ごとにグループ化された文字起こし。
- タイムライン — 波形表示、ドラッグ可能なタイミングハンドル付きワードバー、分割、カット領域、再生ヘッド。スクロールでズーム、サイドスクロールでパンが可能。
- 分割とトリミング — 再生ヘッドでクリップをカット。クリップの端をドラッグして、単語の境界を超えた微調整が可能。
- 単語のタイミング — 音声認識のズレがある場合、ズームインして単語の端をドラッグして調整。
- カットの端 — カットの端をドラッグして、ASRタイムスタンプとは独立してトリミング可能。ダブルクリックでリセット。
- ライブプレビュー — 再生時にカット箇所をリアルタイムでスキップ。
- ブラウザ/デスクトップエクスポート — ffmpeg.wasmによるフレーム精度の再エンコード。
- NLE/DAWタイムラインエクスポート — DaVinci Resolve / Premiere XML, Final Cut FCPXML, Pro Tools/Logic AAF, Reaper
.rpp, Samplitude.edl。 - 音声ファイル — ポッドキャスト、ボイスメモ、インタビューなども動画と同様に編集可能。
- デスクトップアプリ — Electron経由でmacOS、Windows、Linuxに対応 (Macでは署名・公証済み)。
仕組み (4ステップ)
- 抽出 — ffmpeg.wasmが音声をモノラル16kHz PCMにデコードします。
- 文字起こし — WhisperがWeb Worker内で動作し、単語ごとのタイムスタンプ付きでテキストをストリーミングします。pyannoteが各単語に話者を割り当てます。Whisper Base、Whisper Smallを選択するか、独自の文字起こしをインポートできます。
- 編集 — 単語を削除すると、元のメディアの「カット範囲」が生成されます。プレビュープレイヤーはリアルタイムでそれらをスキップし、タイムラインでは赤色で表示されます。フィラーや無音をワンクリックで削除します。
- エクスポート — 残った範囲がトリミングされ、ffmpegフィルターグラフで連結・再エンコード (
libx264/aac) されるため、単語単位で正確なカットが可能です。
技術スタック
| コンポーネント | 技術 |
|---|---|
| アプリ | Next.js + React + TypeScript + Tailwind |
| デスクトップ | Electron + electron-builder (GitHub Releasesから自動更新) |
| 文字起こし | transformers.jsで whisper-base_timestamped または whisper-small_timestamped を実行 (WebGPU、WASMフォールバック) (Web Worker内) |
| 話者ラベル | pyannote-segmentation-3.0 (ONNX) |
| メディア処理 | ffmpeg.wasm (マルチスレッド) による音声抽出とエクスポート |
| 状態管理 | zustand |
動作環境
- ブラウザ: Chromiumベースのブラウザを推奨。
SharedArrayBuffer(COOP/COEPヘッダーが必要) を使用し、利用可能な場合は推論にWebGPUを使用、不可の場合はWASMにフォールバックします。 - デスクトップアプリ: Electron経由でmacOS、Windows、Linuxに対応。Chromiumをバンドルし、同様の分離ヘッダーを設定します。
プライバシーとテレメトリ
- すべてのメディア処理はデバイス上で完結します(アップロードなし)。
- デフォルトでは、Rescriptは匿名化された利用統計とクラッシュレポートを送信します(クラッシュレポートはスタックトレース、アプリバージョン、プラットフォーム情報と共にSentryへ送信されます)。設定 → プライバシー → 「アプリの改善に協力する」からオフにできます。オフにすると、そのインストール環境では即座に永続的に停止されます。
ライセンス
Copyright (c) 2026 Wassim Gharbi and Rescript contributors.
- PolyForm Noncommercial License 1.0.0 — Rescriptは非営利目的でのみ使用、改変、共有が可能です。著作権表示を保持する必要があります。商用利用(有料での再販を含む)は許可されていません。商用ライセンスについては作者にお問い合わせください。
- 以前のリリース はMITライセンスで公開されており、それらのバージョンについてはMITライセンスが適用されます。
クイックリンク
- ブラウザで試す: app.getrescript.com
- ダウンロード: macOS (Apple Silicon / Intel), Windows, Linux (AppImage / .deb) — GitHub Releasesから自動更新。
- 開発セットアップ:
npm install && npm run dev(web) またはnpm run electron:dev(デスクトップ)。 - コミュニティ: Discord · X / Twitter
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト