+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.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.
······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.