Add transcription progress handling and local Whisper integration.

Implement a new method for calculating elapsed transcription time in the Recording model. Enhance the TranscriptionService to handle local Whisper requests, including asynchronous processing and progress reporting. Update the recordings index view to display transcription progress percentage. Add unit tests for the new transcription service functionality.
This commit is contained in:
ben
2026-08-13 12:12:10 +02:00
parent a1bddca2dd
commit 5cea5192c2
6 changed files with 239 additions and 10 deletions
@@ -117,7 +117,7 @@
Words
</flux:table.column>
<flux:table.column
class="w-36"
class="w-44"
sortable
:sorted="$sortBy === 'status'"
:direction="$sortDirection"
@@ -181,11 +181,18 @@
{{ $recording->word_count > 0 ? number_format($recording->word_count) : '—' }}
</span>
</flux:table.cell>
<flux:table.cell class="w-36 whitespace-nowrap">
<x-transcription-status-badge
:status="$recording->transcription_status"
:label="$recording->transcriptionStatusLabel()"
/>
<flux:table.cell class="w-44 whitespace-nowrap">
<span class="inline-flex items-center gap-1.5">
<x-transcription-status-badge
:status="$recording->transcription_status"
:label="$recording->transcriptionStatusLabel()"
/>
@if ($recording->transcription_status === 'processing' && $recording->transcription_percent !== null)
<span class="tabular-nums text-xs text-zinc-500 dark:text-zinc-400">
{{ $recording->transcription_percent }}%
</span>
@endif
</span>
</flux:table.cell>
<flux:table.cell>
{{ $recording->created_at?->format('Y-m-d H:i') }}