|
1 | 1 | # LocalStream – Private Lecture Transcriber |
2 | 2 |
|
3 | | -This project’s GitHub repository is **[LocalStream-Transcriber](https://github.com/appsdothingsiguess/LocalStream-Transcriber)**. The same codebase is also known as **MP3 Grabber** (`mp3grabber` on npm) in older docs—one app, one repo. |
| 3 | +<p align="center"> |
| 4 | + <strong>Turn Canvas, Panopto, and YouTube-style lectures into searchable notes—on your own laptop.</strong><br/> |
| 5 | + <sub>Open source · 100% local · No cloud transcription</sub> |
| 6 | +</p> |
4 | 7 |
|
5 | | -## What is this? |
| 8 | +<p align="center"> |
| 9 | + <a href="https://github.com/appsdothingsiguess/LocalStream-Transcriber/releases/latest"><img src="https://img.shields.io/github/v/release/appsdothingsiguess/LocalStream-Transcriber?label=Download&logo=github" alt="Latest release"/></a> |
| 10 | + <a href="https://github.com/appsdothingsiguess/LocalStream-Transcriber"><img src="https://img.shields.io/badge/repo-LocalStream--Transcriber-24292f?logo=github" alt="Repository"/></a> |
| 11 | +</p> |
| 12 | + |
| 13 | +--- |
| 14 | + |
| 15 | +| | | |
| 16 | +|:---|:---| |
| 17 | +| **Repository** | **[LocalStream-Transcriber](https://github.com/appsdothingsiguess/LocalStream-Transcriber)** on GitHub | |
| 18 | +| **Also known as** | **MP3 Grabber** (`mp3grabber` in `package.json`) — same app, one repo | |
| 19 | + |
| 20 | +--- |
| 21 | + |
| 22 | +## Table of contents |
| 23 | + |
| 24 | +1. [Start here (students)](#start-here-students) |
| 25 | +2. [Quick start (Windows)](#quick-start-windows) |
| 26 | +3. [Downloads and releases](#downloads-and-releases) |
| 27 | +4. [Technical overview](#technical-overview) |
| 28 | +5. [Prerequisites](#prerequisites) |
| 29 | +6. [How it works](#how-it-works) |
| 30 | +7. [Troubleshooting](#troubleshooting) |
| 31 | + |
| 32 | +--- |
| 33 | + |
| 34 | +## Start here (students) |
| 35 | + |
| 36 | +### What is this? |
6 | 37 |
|
7 | 38 | LocalStream turns lecture audio and video into **searchable text on your computer**—so you can skim, search, and study without rewatching whole recordings. |
8 | 39 |
|
9 | | -## Why should I care as a student? |
| 40 | +### Why should I care? |
10 | 41 |
|
11 | 42 | If you are juggling deadlines, need captions or text to follow along, or you learn better from notes than from scrubbing through long replays, this helps you **turn lectures into notes you can actually search**. |
12 | 43 |
|
13 | | -## Does this work with Canvas, Panopto, or YouTube? |
| 44 | +### Canvas, Panopto, YouTube? |
14 | 45 |
|
15 | 46 | **Yes.** It is built for **Canvas**, **Panopto**, **Kaltura**, and **YouTube**-style lecture pages (plus similar sites). You can also transcribe **files you already saved** (MP3, MP4, etc.) from any source. |
16 | 47 |
|
17 | | -## Is my data staying on my laptop? |
| 48 | +### Is my data staying on my laptop? |
18 | 49 |
|
19 | 50 | **Yes.** Transcription runs **entirely on your machine**. Your lecture audio is **not** sent to a cloud service for processing. |
20 | 51 |
|
21 | 52 | ### At a glance |
22 | 53 |
|
23 | | -- Turn **Canvas / Panopto / Kaltura / YouTube** lectures into text. |
24 | | -- Works with **logged-in** school streams (Canvas, etc.). |
25 | | -- **100% local** – no audio sent to external servers. |
26 | | -- **Faster on a gaming-style NVIDIA GPU** if you have one; **works fine on CPU** too (usually slower). |
| 54 | +| | | |
| 55 | +|:---|:---| |
| 56 | +| **Platforms** | Canvas · Panopto · Kaltura · YouTube-style pages | |
| 57 | +| **School login** | Works with **logged-in** streams (e.g. Canvas) | |
| 58 | +| **Privacy** | **100% local** — no audio sent to external servers for transcription | |
| 59 | +| **Speed** | **GPU** faster if available; **CPU** works too (often slower) | |
27 | 60 |
|
28 | | -### Who this is for |
| 61 | +**Who it’s for:** college and grad students who want **private, searchable lecture notes** without being developers. |
29 | 62 |
|
30 | | -**Stressed college and grad students** who want **private, searchable lecture notes**—without being developers. |
| 63 | +**What you do:** put files in **`media/`** *or* use a small **Chrome add-on** plus a local helper for browser lectures; open **`http://localhost:8787`** for status; read transcripts in **`transcriptions/`**. |
31 | 64 |
|
32 | | -### What it does |
| 65 | +--- |
33 | 66 |
|
34 | | -You either **put media files** in a folder and run the app, or use a **small Chrome add-on** plus a local helper so pages you are already signed into can be turned into transcripts. You open a simple page in your browser at **`http://localhost:8787`** to watch progress. Finished text files land in the **`transcriptions/`** folder. |
| 67 | +## Quick start (Windows) |
35 | 68 |
|
36 | | ---- |
| 69 | +**You need once:** [Node.js (LTS)](https://nodejs.org/) and [Python 3.10–3.12](https://www.python.org/downloads/) — during Python setup on Windows, enable **“Add python.exe to PATH”**. |
37 | 70 |
|
38 | | -## Quick Start for Students (Windows) |
| 71 | +| Step | What to do | |
| 72 | +|:---:|:---| |
| 73 | +| 1 | **Get the app:** [Latest release ZIP](https://github.com/appsdothingsiguess/LocalStream-Transcriber/releases/latest) *or* **Code → Download ZIP** on the repo, then unzip (e.g. `Documents\LocalStream-Transcriber`). | |
| 74 | +| 2 | **Run it:** Double-click **`START.bat`**. *(Fallback: open Command Prompt in the folder and run `npm run setup`.)* First run may take a while — normal. | |
| 75 | +| 3 | **Pick a mode:** **Option 1** — put audio/video in **`media/`** and transcribe. **Option 2** — browser helper for Canvas / Panopto / YouTube (install extension next). | |
| 76 | +| 4 | **Chrome extension (option 2 only):** `chrome://extensions/` → **Developer mode** → **Load unpacked** → select the **`extension/`** folder. | |
| 77 | +| 5 | **Progress & files:** Open **`http://localhost:8787`**. Transcripts save under **`transcriptions/`** as `.txt` with lines like `[00:01.234]`. | |
39 | 78 |
|
40 | | -You need two free runtimes installed once: **Node.js** and **Python**. If you do not have them yet: |
| 79 | +> **No dedicated GPU?** CPU is fine; it may just take longer. |
| 80 | +> **Privacy:** All speech-to-text runs **on your laptop**. |
41 | 81 |
|
42 | | -- **Node.js** (LTS): [https://nodejs.org/](https://nodejs.org/) |
43 | | -- **Python** 3.10–3.12: [https://www.python.org/downloads/](https://www.python.org/downloads/) — on Windows, check **“Add python.exe to PATH”** during install. |
| 82 | +--- |
44 | 83 |
|
45 | | -Then: |
| 84 | +## Downloads and releases |
46 | 85 |
|
47 | | -1. **Get the project:** On GitHub, use **Code → Download ZIP**, then unzip the folder somewhere easy to find (for example `Documents\LocalStream-Transcriber`). |
48 | | -2. **Open the folder** in File Explorer. Double-click **`START.bat`**. |
49 | | - - If double-click does not work, open **Command Prompt** in that folder and type: `npm run setup` then press Enter. |
50 | | - - The first run may take a while while it sets up helpers (including speech tools). That is normal. |
51 | | -3. **Choose what you want:** |
52 | | - - **Option 1 – Transcribe files:** Put your audio or video files in the **`media/`** folder, then pick option **1** and follow the prompts. Good for files you already downloaded or recorded. |
53 | | - - **Option 2 – Browser + Canvas / Panopto / YouTube:** Pick option **2** to start the local helper. Then install the Chrome add-on (next step) and play your lecture in the browser while signed in. |
54 | | -4. **Load the Chrome add-on (only for option 2):** In Chrome, go to `chrome://extensions/`, turn on **Developer mode**, click **Load unpacked**, and select the project’s **`extension/`** folder (the whole folder). |
55 | | -5. **Watch progress:** In your browser, open **`http://localhost:8787`** to see status. **Finished transcripts** are saved under **`transcriptions/`** as `.txt` files with timestamps (like `[00:01.234]`) so you can match text to the recording. |
| 86 | +There is **no Windows installer** yet — releases are **“download ZIP + first-run setup”** using **`START.bat`** and **`npm run setup`** (package name **`mp3grabber@1.0.0`** in `package.json`). |
56 | 87 |
|
57 | | -**No GPU?** That is okay. The app can use your **CPU**; it may take longer, but you get the same kind of output. |
| 88 | +### What goes in a release ZIP |
58 | 89 |
|
59 | | -**Privacy:** All transcription stays **on your laptop**; nothing is uploaded to the cloud for speech-to-text. |
| 90 | +| Include | Why | |
| 91 | +|:---|:---| |
| 92 | +| **Full project** | `start.js`, `relay.js`, `transcribe.py`, `package.json`, `requirements.txt`, **`extension/`**, **`START.bat`**, `media/`, `transcriptions/` (can be empty) | |
| 93 | +| **Setup on the user’s PC** | Run **`npm install`** / **`npm run setup`** on *their* machine — **do not** bundle your own **`node_modules/`** (breaks across PCs) | |
| 94 | +| **Optional `INSTALL.txt`** | “Install Node + Python → unzip → double-click `START.bat` → option 1 or 2” | |
60 | 95 |
|
61 | | ---- |
| 96 | +Pre-bundling **`node_modules/`** or a full Python environment is possible for experts but is **fragile** on Windows; the **default** is **source ZIP + first-run setup**. |
62 | 97 |
|
63 | | -## Downloads & Releases |
| 98 | +### For users: install from a release |
64 | 99 |
|
65 | | -This section describes a **simple GitHub Releases** approach—no fancy installer, just a **download-and-run** flow on top of what already exists (`START.bat`, `npm run setup`, `package.json` as `mp3grabber@1.0.0`). |
| 100 | +1. Open **[Releases](https://github.com/appsdothingsiguess/LocalStream-Transcriber/releases)** → download the **latest** source/archive ZIP. |
| 101 | +2. Unzip anywhere (e.g. `Documents\LocalStream-Transcriber`). |
| 102 | +3. Install **Node.js** and **Python** if you have not already ([Quick start (Windows)](#quick-start-windows)). |
| 103 | +4. Double-click **`START.bat`** (or run `npm run setup` in that folder). |
| 104 | +5. Choose **option 1** (`media/`) or **option 2** (extension + `http://localhost:8787`); transcripts appear in **`transcriptions/`**. |
66 | 105 |
|
67 | | -### What a “Windows release ZIP” should contain |
| 106 | +### For maintainers: how to publish a release |
68 | 107 |
|
69 | | -- **Full project source** as in the repo: `start.js`, `relay.js`, `transcribe.py`, `package.json`, `requirements.txt`, **`extension/`**, **`START.bat`**, empty or placeholder **`media/`** and **`transcriptions/`**, etc. |
70 | | -- **Do not** ship a copied **`node_modules/`** folder from your machine (paths and binaries differ). The ZIP should instruct users to run setup so **`npm install`** runs on *their* PC. |
71 | | -- **Optional:** A short **`INSTALL.txt`** in the ZIP: install Node + Python from the links above, unzip, double-click `START.bat`, choose option 1 or 2. |
| 108 | +Use **either** the GitHub website **or** git tags — both end up on the same Releases page. |
72 | 109 |
|
73 | | -Shipping **pre-filled `node_modules`** or a frozen Python env is possible for advanced maintainers but is **brittle** across Windows versions; the realistic default is **“ZIP + first-run `npm run setup`”**. |
| 110 | +**Option A — GitHub (no git CLI required)** |
74 | 111 |
|
75 | | -### How a student uses a release (3–5 steps) |
| 112 | +1. Push your changes to **`main`** (or your default branch). |
| 113 | +2. On the repo, click **Releases** → **Create a new release**. |
| 114 | +3. Click **Choose a tag**, type a new tag name (e.g. **`v1.0.1`**), select **Create new tag on publish**, target **`main`**. |
| 115 | +4. **Release title:** e.g. `v1.0.1` or a short headline. |
| 116 | +5. **Describe** what changed (bullets are fine). |
| 117 | +6. Attachments: GitHub usually offers **Source code (zip/tar)** automatically when you publish — that is enough for students. Optionally add a second ZIP only if you have a **clean, reproducible** build script; otherwise avoid custom `node_modules` bundles. |
| 118 | +7. Click **Publish release**. |
76 | 119 |
|
77 | | -1. On GitHub, open **Releases**, download the **latest Windows/source ZIP**. |
78 | | -2. Unzip to a folder (for example `Documents\LocalStream-Transcriber`). |
79 | | -3. Install **Node.js** and **Python** if prompted or if setup fails (links in **Quick Start for Students** above). |
80 | | -4. Double-click **`START.bat`** (or run `npm run setup` in that folder). |
81 | | -5. Choose **option 1** (files in `media/`) or **option 2** (Chrome extension + `http://localhost:8787`), then find transcripts in **`transcriptions/`**. |
| 120 | +**Option B — Tag from git, then publish on GitHub** |
| 121 | + |
| 122 | +```bash |
| 123 | +# From your repo folder, after committing: |
| 124 | +git tag -a v1.0.1 -m "Release v1.0.1: short description" |
| 125 | +git push origin v1.0.1 |
| 126 | +``` |
82 | 127 |
|
83 | | -### Maintainer note |
| 128 | +Then open **Releases → Draft a new release**, pick tag **`v1.0.1`**, add notes, **Publish**. |
84 | 129 |
|
85 | | -Tag releases (e.g. `v1.0.0`) and attach the ZIP built from a **clean `git archive` or GitHub’s ZIP** of that tag so what students download matches the tagged commit. |
| 130 | +**Versioning tip:** Bump **`version`** in `package.json` when you cut a meaningful release so docs and support match (e.g. `1.0.1` alongside tag `v1.0.1`). |
86 | 131 |
|
87 | 132 | --- |
88 | 133 |
|
|
0 commit comments