Your audio. Under the knife.
Edit audio by editing text. Free, open source, and local on Windows.
Product page · Build for Windows · Buy me a coffee
ScriptSurgeon turns spoken audio into an editable transcript. Remove a word and its matching audio leaves the timeline. Restore it and the sound comes back. Tighten long pauses, review retakes, add a missing line, and export a clean WAV without sending the project to a cloud service.
It is built for people who want the speed of a document editor without giving up control of the actual recording.
The current source release makes local editing more deliberate and easier to navigate:
- Review cleanup suggestions before applying them, retain persistent Keep choices, and restore changes safely.
- Set pacing and exact gap targets, name speakers, and choose among retake candidates.
- Add local markers and chapters, then export chapter lists and delivery text.
- Use dark mode and select a full, compact, or minimized timeline view.
Read the v2026.08.11 release notes.
| 1. Record | 2. Transcribe | 3. Cut | 4. Restore | 5. Export |
|---|---|---|---|---|
| Import media or begin with your microphone. | The bundled speech model runs on your machine. | Edit transcript words and the audio follows. | Bring back words, pauses, retakes, or inserted audio. | Preview the assembled edit and save WAV. |
Select transcript words or a whole passage, then ripple-cut the matching audio. Correct transcript text without changing sound. Click words to seek, or use the waveform when you need precise timing.
The automatic cleanup tools stay separate so each decision remains understandable:
- Remove fillers previews filler words only.
- Shorten gaps changes long pauses only.
- Remove retakes reviews repeated phrases only.
Nothing changes until you confirm the preview.
Removed words remain visible and restorable. Retake groups can be brought back. Inserted passages can be removed, restored, edited, or re-recorded. Multi-step undo covers the editing session.
Right-click transcript words, pause markers, retake groups, or inserted passages for focused actions. Shift+F10 opens the same menus from the keyboard.
Start a new project from your microphone, or record a missing passage inside an existing edit. Place the insert at the selected word or current playhead, update its transcript, and re-record it later without losing the edit point.
| On your device | No accounts | No API keys | You are in control |
|---|---|---|---|
| Projects, transcription, previews, and exports run locally. | No sign-up or login is required. | Normal use needs no paid service or secret key. | Your project files remain on your computer. |
The desktop shell protects its local API with a new random session token, accepts only trusted loopback hosts, and keeps diagnostic logs on the machine. See SECURITY.md for the security model and responsible disclosure.
Important
ScriptSurgeon is currently distributed as source. This public release includes reproducible source and build instructions; a public binary release will follow after redistribution review for the bundled FFmpeg runtime and speech model is complete.
The packaged desktop app uses Edge WebView2. Once built, it runs without a separate Python or Node.js installation.
git clone https://github.com/ArtMoreno/ScriptSurgeon.git
cd ScriptSurgeon
./scripts/build.ps1
./scripts/install.ps1The first build reuses an existing Systran/faster-whisper-base snapshot when available. Otherwise, it downloads the public model before packaging. No Hugging Face token or API key is required. Use -ModelSource <directory> to choose a specific local snapshot.
Each packaged build includes a SHA-256 payload manifest. Upgrades validate and stage the application, roll back on failure, and leave project data outside the deployable payload.
For an offline rebuild using an existing packaging environment and frontend output:
./scripts/build.ps1 -SkipDependencies -SkipFrontendDevelopment requires Python 3.11 or 3.12, Node.js 18 or newer, and FFmpeg.
./start.batFor macOS or Linux development:
./start.shThen open http://127.0.0.1:8000.
The development model defaults to base. Set MODEL_SIZE to tiny, small, medium, or large-v3 before launch to use another public model.
| Path | Purpose |
|---|---|
frontend/ |
React, TypeScript, Zustand, and WaveSurfer transcript editor |
backend/ |
FastAPI project storage, transcription, rendering, and export |
desktop.py |
Native Windows WebView2 shell and local process lifecycle |
scripts/ |
Packaging, icon generation, payload verification, and installation |
docs/ |
Dependency-free GitHub Pages product site |
./.venv/Scripts/python.exe -m unittest discover -s backend/tests -v
npm test --prefix frontend
npm run typecheck --prefix frontend
npm run build --prefix frontendThe static product page can be served directly from docs/ with any local web server.
Contributions are welcome. Read CONTRIBUTING.md, then open an issue for a bug or product idea. Keep fixtures, screenshots, logs, and diagnostics free of private recordings, real project names, credentials, tokens, and identifying local paths.
If ScriptSurgeon saves you time, buy me a coffee and help fund the next careful cut.
ScriptSurgeon is available under the MIT License.


