[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93962":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":16,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":17,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":21,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":10,"trendingCount":15,"starSnapshotCount":15,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},93962,"rescript","wassgha\u002Frescript","wassgha","🎬 Open source, transcript-based video\u002Faudio editor that lives in the browser.","https:\u002F\u002Fwassgha.github.io\u002Frescript\u002F",null,"TypeScript",335,39,139,0,57,171,87.51,false,"main",true,[23,24,25,26,27,28,29,30,31,32],"audio","media","media-editing","media-editor","transcribe","transcription","video","video-editing","video-editor","video-processing","2026-07-30 04:02:14","\u003Cp align=\"center\">\n  \u003Cimg src=\".\u002Fscreenshots\u002Flogo.png\" alt=\"Rescript logo\" width=\"96\" \u002F>\n\u003C\u002Fp>\n\n# Rescript\n\n**Edit video and audio like you edit text — fully offline, in your browser.**\n\n**✨ Try it now: [wassgha.github.io\u002Frescript](https:\u002F\u002Fwassgha.github.io\u002Frescript\u002F)**\n\n[![Follow @wassgha on X](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFollow%20@wassgha-000000?logo=x&logoColor=white)](https:\u002F\u002Fx.com\u002Fwassgha)\n\n[![Rescript Demo](.\u002Fscreenshots\u002Frescript.png)](https:\u002F\u002Fwassgha.github.io\u002Frescript\u002F)\n\nRescript is an open-source, transcript-based media editor. Drop in a video or\naudio file and it is transcribed locally with per-word timestamps and speaker\nlabels. Delete words in the transcript and the corresponding clip is cut from\nthe media. Export the final cut — without your file ever leaving your device.\n\n- 🔒 **Private by design** — no server, no auth, no uploads; all media processing happens on-device\n- 📝 **Word-level editing** — select words, press ⌫, the cut follows the text\n- 📥 **Import your own transcript** — skip Whisper and edit with an SRT, VTT, or JSON caption file\n- 🧹 **Filler removal** — one-click cut of \"um\", \"uh\", and similar fillers\n- 🗣️ **Speaker diarization** — the transcript is grouped by speaker\n- 🎬 **Timeline** — waveform, wordbar with draggable timing handles, Split,\n  cut regions, playhead; scroll to zoom, side-scroll to pan\n- ✂️ **Split & trim** — blade clips at the playhead; drag clip edges to refine\n  cuts beyond word boundaries\n- 🎯 **Word timing** — zoom in and drag a word's edges when ASR alignment is off\n- 🔴 **Cut edges** — drag either edge of a cut to trim independently of Whisper\n  timestamps; double-click to reset\n- ⚡ **Live preview** — playback skips your cuts in real time\n- 📦 **In-browser export** — frame-accurate MP4 (video) or M4A (audio) with ffmpeg.wasm\n- 🎧 **Audio files** — edit podcasts, voice notes, and interviews the same way as video\n\n## Stack\n\n| Piece | Tech |\n| --- | --- |\n| App | [Next.js](https:\u002F\u002Fnextjs.org) + React + TypeScript + Tailwind |\n| Transcription | [transformers.js](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransformers.js) running [`whisper-base_timestamped`](https:\u002F\u002Fhuggingface.co\u002Fonnx-community\u002Fwhisper-base_timestamped) or [`whisper-small_timestamped`](https:\u002F\u002Fhuggingface.co\u002Fonnx-community\u002Fwhisper-small_timestamped) (WebGPU with WASM fallback) in a Web Worker |\n| Speaker labels | [`pyannote-segmentation-3.0`](https:\u002F\u002Fhuggingface.co\u002Fonnx-community\u002Fpyannote-segmentation-3.0) (ONNX) |\n| Media processing | [ffmpeg.wasm](https:\u002F\u002Fffmpegwasm.netlify.app\u002F) (multi-threaded) for audio extraction and export |\n| State | zustand |\n\n## Development\n\n```bash\nnpm install     # also copies ffmpeg\u002Fonnxruntime WASM into public\u002Fvendor\nnpm run dev     # dev server\nnpm run build   # production build\nnpm run lint    # eslint\n```\n\nOpen [http:\u002F\u002Flocalhost:3000](http:\u002F\u002Flocalhost:3000) and drop in a video with an\naudio track.\n\n> **Note on \"offline\":** the AI models (Whisper Base ~200 MB, or Small ~600 MB,\n> plus a small speaker model) are downloaded from the Hugging Face Hub the\n> *first* time you transcribe, then cached in browser storage. After that,\n> everything — transcription, editing, export — works with the network fully\n> disconnected. Your media and transcript never leave the device; the only\n> third-party request the app makes is anonymous page analytics (Google\n> Analytics), which fails silently when offline.\n\n## How it works\n\n1. **Extract** — ffmpeg.wasm decodes the audio track to mono 16 kHz PCM.\n2. **Transcribe** — Whisper runs in a Web Worker with `return_timestamps: \"word\"`,\n   streaming text as it goes; pyannote assigns a speaker to every word.\n   Choose **Whisper Base**, **Whisper Small**, or **Import transcript**\n   (SRT \u002F VTT \u002F JSON) on the homepage.\n3. **Edit** — deleting words produces \"cut ranges\" of the original media. The\n   preview player skips them in real time and the timeline shows them in red.\n   **Remove fillers** cuts every detected \"um\" \u002F \"uh\" \u002F etc. in one click.\n4. **Export** — the kept ranges are trimmed and concatenated with an ffmpeg\n   filter graph and re-encoded (`libx264`\u002F`aac`), so cuts are word-accurate.\n\n## Browser support\n\nA Chromium-based browser is recommended. The app requires `SharedArrayBuffer`\n(served with COOP\u002FCOEP headers) and uses WebGPU for inference when available,\nfalling back to WASM otherwise.\n\n## License\n\nMIT\n\n---\n\nBuilt by [@wassgha](https:\u002F\u002Fx.com\u002Fwassgha) — follow along on X for updates.\n",2,"2026-07-29 02:30:03","CREATED_QUERY"]