+36
-5
README.md
+36
-5
README.md
······Your server will be running at `http://localhost:3000` with hot module reloading. Just edit any `.ts`, `.html`, or `.css` file and watch it update in the browser.+Thistle requires a separate Whisper transcription server for audio processing. Set it up in the `whisper-server/` directory:+The Whisper server will run on `http://localhost:8000`. Make sure it's running before using transcription features.The tech stack is pretty minimal on purpose. Lit components (~8-10KB gzipped) for things that need reactivity, vanilla JS for simple stuff, and CSS variables for theming. The goal is to keep the total JS bundle as small as possible.
+86
whisper-server/README.md
+86
whisper-server/README.md
···+This is a FastAPI server that provides real-time audio transcription using the faster-whisper library.+The server will start on `http://localhost:8000` and load the Whisper model (this may take a few minutes on first run).+{"status": "starting", "total_duration": 15.36, "language": "en", "language_probability": 0.99}+{"status": "progress", "percentage": 25.59, "start": 0.0, "end": 3.93, "text": "This is a test of the transcription server."}+{"status": "progress", "percentage": 57.68, "start": 3.93, "end": 8.86, "text": "It should be streaming the results back in real time."}+This server is designed to work with the Thistle web application. Set the `WHISPER_SERVICE_URL` environment variable in Thistle to point to this server.
+223
whisper-server/main.py
+223
whisper-server/main.py
···+db.execute("UPDATE whisper_jobs SET status = 'processing', updated_at = ? WHERE id = ?", (int(time.time()), job_id))+db.execute("UPDATE whisper_jobs SET status = 'completed', progress = 100, updated_at = ? WHERE id = ?", (int(time.time()), job_id))+db.execute("UPDATE whisper_jobs SET status = 'failed', error_message = ?, updated_at = ? WHERE id = ?", (str(e), int(time.time()), job_id))+db.execute("INSERT INTO whisper_jobs (id, created_at, updated_at) VALUES (?, ?, ?)", (job_id, int(time.time()), int(time.time())))+row = db.execute("SELECT status, progress, transcript, error_message FROM whisper_jobs WHERE id = ?", (job_id,)).fetchone()
+4
whisper-server/requirements.txt
+4
whisper-server/requirements.txt
+14
whisper-server/run.sh
+14
whisper-server/run.sh
···
whisper-server/whisper.db
whisper-server/whisper.db
This is a binary file and will not be displayed.