Auto-queue transcription on upload and clarify pending status.
Batch uploads were only storing files as pending without dispatching Whisper jobs; queue them immediately, add a bulk pending action, and show human-readable status labels.
This commit is contained in:
@@ -14,6 +14,8 @@ Built with Laravel 13, Blade, Tailwind CSS 4, and [Laravel AI](https://github.co
|
||||
- Stop or restart a run anytime
|
||||
- Copy finished transcripts from the recording detail page
|
||||
|
||||
|
||||
|
||||
## Requirements
|
||||
|
||||
- PHP 8.3+ (8.5 recommended)
|
||||
@@ -22,6 +24,8 @@ Built with Laravel 13, Blade, Tailwind CSS 4, and [Laravel AI](https://github.co
|
||||
- SQLite (default) or another supported database
|
||||
- [Docker](https://docs.docker.com/get-docker/) for the Whisper container
|
||||
|
||||
|
||||
|
||||
## Setup
|
||||
|
||||
```bash
|
||||
@@ -42,6 +46,8 @@ npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
|
||||
|
||||
## Local Whisper (Docker)
|
||||
|
||||
Transcription calls an OpenAI-compatible HTTP API. This project ships Compose for that:
|
||||
@@ -70,19 +76,23 @@ Stop:
|
||||
docker compose down
|
||||
```
|
||||
|
||||
|
||||
|
||||
## Configuration
|
||||
|
||||
Copy values from `.env.example`. The transcription-related settings are:
|
||||
|
||||
| Variable | Purpose |
|
||||
| --- | --- |
|
||||
| `LOCAL_WHISPER_URL` | Local faster-whisper base URL (default `http://127.0.0.1:8090/v1`) |
|
||||
| `LOCAL_WHISPER_API_KEY` | API key for local server (often unused) |
|
||||
| `LOCAL_WHISPER_MODEL` | Model name for local transcription |
|
||||
| `WHISPER_HOST_PORT` | Host port published by Compose (default `8090`) |
|
||||
| `TRANSCRIPTION_TIMEOUT` | Job/HTTP timeout in seconds (default `600`) |
|
||||
| `DB_QUEUE_RETRY_AFTER` | Database queue retry window; must exceed `TRANSCRIPTION_TIMEOUT` (default `660`) |
|
||||
| `QUEUE_CONNECTION` | Use `database` (default) so transcription runs in the background |
|
||||
|
||||
| Variable | Purpose |
|
||||
| ----------------------- | -------------------------------------------------------------------------------- |
|
||||
| `LOCAL_WHISPER_URL` | Local faster-whisper base URL (default `http://127.0.0.1:8090/v1`) |
|
||||
| `LOCAL_WHISPER_API_KEY` | API key for local server (often unused) |
|
||||
| `LOCAL_WHISPER_MODEL` | Model name for local transcription |
|
||||
| `WHISPER_HOST_PORT` | Host port published by Compose (default `8090`) |
|
||||
| `TRANSCRIPTION_TIMEOUT` | Job/HTTP timeout in seconds (default `600`) |
|
||||
| `DB_QUEUE_RETRY_AFTER` | Database queue retry window; must exceed `TRANSCRIPTION_TIMEOUT` (default `660`) |
|
||||
| `QUEUE_CONNECTION` | Use `database` (default) so transcription runs in the background |
|
||||
|
||||
|
||||
Finished transcripts are stored on the recording (`transcript` column) and are included in the recordings search box (title, artist, album, filename, and transcript).
|
||||
|
||||
@@ -112,10 +122,13 @@ Transcription jobs are queued — keep a queue worker running or jobs will stay
|
||||
|
||||
## Usage
|
||||
|
||||
1. **Upload** audio from Recordings → Upload (optional title override).
|
||||
2. Open the recording and start transcription.
|
||||
3. Watch live progress until the transcript appears (or stop and restart).
|
||||
1. **Upload** audio from Recordings → Upload (single file or batch dropzone).
|
||||
2. Transcription queues automatically — keep `php artisan queue:work` running.
|
||||
3. Watch live progress on the recording page (or stop and restart).
|
||||
4. Search the list by title, artist, or transcript text.
|
||||
5. If older uploads still show **Queued** with no progress, use **Queue pending transcriptions** on the recordings list.
|
||||
|
||||
|
||||
|
||||
## Tests
|
||||
|
||||
@@ -125,6 +138,8 @@ composer test
|
||||
php artisan test
|
||||
```
|
||||
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
MIT
|
||||
Reference in New Issue
Block a user