@extends('admin.layout') @section('title', 'Lyrics Pipeline') @section('page_title', 'Lyrics Pipeline') @section('extra_styles') @include('admin.partials.settings-styles') @endsection @section('content')

Lyrics Pipeline

@if(session('success'))
{{ session('success') }}
@endif
@csrf {{-- ── Master switch ─────────────────────────────────────────── --}}
Master @if($settings['lyrics_enabled'] === 'true') Enabled @else Disabled @endif
Lyrics generation Master switch for the whole feature. When OFF, the Generate / Regenerate button in the player gear is hidden and the API endpoint refuses new jobs. Existing lyrics keep displaying — only NEW generation is blocked.
{{-- ── Pipeline steps ────────────────────────────────────────── --}}
Pipeline steps
Description-based correction Use the song description as the source of truth for lyric text. Whisper provides timing anchors; the description provides the exact words. When OFF, the player shows Whisper's raw transcription (may contain misheard words and miss verses).
Voice activity filter (VAD) Runs Silero VAD before Whisper to skip pure-instrumental sections. Without this, Whisper invents lyrics over intro / outro / breakdown music. When OFF, the entire audio is transcribed — useful as a fallback if VAD is dropping legitimate quiet vocals.
Vocal-region gap-filling For description lines Whisper missed, snap them to moments where vocals are active (detected by VAD) instead of distributing evenly across time. Keeps gap-filled lyrics on actual singing. When OFF, missing lines distribute uniformly between Whisper anchors (faster but can drift over instrumental beats).
Vocal isolation (Demucs) Two-stem source separation (vocals vs. instruments) before Whisper. Improves transcription on noisy mixes but adds ~30s GPU time and has caused a CUDA-handoff deadlock that hangs the pipeline at 50%. Currently auto-skipped when a description is present (timing-only mode). Enable to also use Demucs when no description is given.
LLM emoji decoration After lyrics are saved, run the active LLM provider to bake one or more emojis into each line. Without this, the player still decorates lines using a built-in keyword-to-emoji map (less varied). Provider is configured under AI / LLM Settings.
Cancel
@endsection