karaoke-gen 0.75.2__tar.gz → 0.76.25__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/PKG-INFO +181 -5
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/README.md +176 -3
- karaoke_gen-0.76.25/karaoke_gen/audio_fetcher.py +1832 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/audio_processor.py +4 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/instrumental_review/static/index.html +216 -30
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/karaoke_finalise/karaoke_finalise.py +25 -1
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/karaoke_gen.py +209 -39
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/lyrics_processor.py +130 -31
- karaoke_gen-0.76.25/karaoke_gen/utils/__init__.py +44 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/utils/cli_args.py +15 -6
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/utils/gen_cli.py +40 -5
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/utils/remote_cli.py +301 -20
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/core/config.py +7 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/core/controller.py +118 -2
- {karaoke_gen-0.75.2/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets → karaoke_gen-0.76.25/lyrics_transcriber_temp/lyrics_transcriber/frontend}/index.html +6 -2
- karaoke_gen-0.76.25/lyrics_transcriber_temp/lyrics_transcriber/frontend/package-lock.json +4553 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/package.json +4 -1
- karaoke_gen-0.76.25/lyrics_transcriber_temp/lyrics_transcriber/frontend/playwright.config.ts +69 -0
- karaoke_gen-0.76.25/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/nomad-karaoke-logo.svg +5 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/App.tsx +94 -63
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/api.ts +25 -10
- karaoke_gen-0.76.25/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AIFeedbackModal.tsx +111 -0
- karaoke_gen-0.76.25/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AppHeader.tsx +65 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectedWordWithActions.tsx +5 -5
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/DurationTimelineView.tsx +9 -9
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditModal.tsx +1 -1
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditWordList.tsx +1 -1
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/Header.tsx +49 -60
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/TimelineCanvas.tsx +22 -21
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReferenceView.tsx +1 -1
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TranscriptionView.tsx +1 -1
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/WordDivider.tsx +3 -3
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/Word.tsx +2 -2
- karaoke_gen-0.76.25/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/constants.ts +30 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/main.tsx +1 -7
- karaoke_gen-0.76.25/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/theme.ts +379 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.ts +5 -0
- karaoke_gen-0.75.2/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/assets/index-COYImAcx.js → karaoke_gen-0.76.25/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/assets/index-BECn1o8Q.js +38 -22
- karaoke_gen-0.75.2/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/assets/index-COYImAcx.js.map → karaoke_gen-0.76.25/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/assets/index-BECn1o8Q.js.map +1 -1
- {karaoke_gen-0.75.2/lyrics_transcriber_temp/lyrics_transcriber/frontend → karaoke_gen-0.76.25/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets}/index.html +1 -1
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/yarn.lock +1005 -1046
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/countdown_processor.py +39 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/generator.py +50 -3
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/review/server.py +1 -1
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/audioshake.py +96 -7
- karaoke_gen-0.76.25/lyrics_transcriber_temp/lyrics_transcriber/transcribers/local_whisper.py +260 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/types.py +14 -12
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/pyproject.toml +12 -2
- karaoke_gen-0.75.2/karaoke_gen/audio_fetcher.py +0 -881
- karaoke_gen-0.75.2/karaoke_gen/utils/__init__.py +0 -18
- karaoke_gen-0.75.2/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AIFeedbackModal.tsx +0 -77
- karaoke_gen-0.75.2/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/constants.ts +0 -20
- karaoke_gen-0.75.2/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/theme.ts +0 -177
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/LICENSE +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/config.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/file_handler.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/instrumental_review/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/instrumental_review/analyzer.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/instrumental_review/editor.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/instrumental_review/models.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/instrumental_review/server.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/instrumental_review/waveform.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/karaoke_finalise/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/metadata.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/pipeline/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/pipeline/base.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/pipeline/context.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/pipeline/executors/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/pipeline/executors/local.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/pipeline/executors/remote.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/pipeline/stages/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/pipeline/stages/finalize.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/pipeline/stages/render.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/pipeline/stages/screens.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/pipeline/stages/separation.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/pipeline/stages/transcription.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/resources/AvenirNext-Bold.ttf +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/resources/Montserrat-Bold.ttf +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/resources/Oswald-Bold.ttf +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/resources/Oswald-SemiBold.ttf +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/resources/Zurich_Cn_BT_Bold.ttf +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/style_loader.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/utils/bulk_cli.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/video_background_processor.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/karaoke_gen/video_generator.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/cli/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/cli/cli_main.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/core/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/adapter.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/agent.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/aggregator.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/collector.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/retention.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/store.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/ambiguous.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/background_vocals.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/base.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/complex_multi_error.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/extra_words.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/no_error.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/punctuation.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/registry.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/repeated_section.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/sound_alike.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/ai_correction.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/correction_session.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/enums.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/human_feedback.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/learning_data.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/observability_metrics.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/schemas.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/utils.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/langfuse_integration.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/metrics.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/performance.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/prompts/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/prompts/classifier.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/base.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/circuit_breaker.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/config.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/constants.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/health.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/langchain_bridge.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/model_factory.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/response_cache.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/response_parser.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/retry_executor.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/router.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/consensus_workflow.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/correction_graph.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/feedback_workflow.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/anchor_sequence.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/corrector.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/schemas.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/store.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/base.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/extend_anchor.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/levenshtein.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/llm.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/llm_providers.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/no_space_punct_match.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/relaxed_word_count_match.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/repeat.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/sound_alike.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/syllables_match.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/word_count_match.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/word_operations.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/operations.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/phrase_analyzer.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/correction/text_utils.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/.gitignore +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/.yarn/releases/yarn-4.7.0.cjs +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/.yarnrc.yml +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/README.md +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/REPLACE_ALL_FUNCTIONALITY.md +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/eslint.config.js +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/android-chrome-192x192.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/android-chrome-512x512.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/apple-touch-icon.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon-16x16.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon-32x32.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon.ico +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/nomad-karaoke-logo.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AddLyricsModal.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AgenticCorrectionMetrics.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AudioPlayer.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionAnnotationModal.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionDetailCard.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionMetrics.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditActionBar.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditTimelineSection.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/FileUpload.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/FindReplaceModal.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/SyncControls.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/UpcomingWordsBar.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/index.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/MetricsDashboard.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModeSelectionModal.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModeSelector.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModelSelector.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/PreviewVideoSection.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReplaceAllLyricsModal.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReviewChangesModal.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/SegmentDetailsModal.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TimelineEditor.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TimingOffsetModal.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/HighlightedText.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/SourceSelector.tsx +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/hooks/useWordClick.ts +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/styles.ts +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/types.js +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/types.ts +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/keyboardHandlers.ts +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/localStorage.ts +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/referenceLineCalculator.ts +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/segmentOperations.ts +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/timingUtils.ts +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/wordUtils.ts +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/hooks/useManualSync.ts +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types/global.d.ts +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types.js +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types.ts +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/validation.ts +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/vite-env.d.ts +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.app.json +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.json +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.node.json +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.tsbuildinfo +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/update_version.js +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.d.ts +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.js +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/android-chrome-192x192.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/android-chrome-512x512.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/apple-touch-icon.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon-16x16.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon-32x32.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon.ico +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/nomad-karaoke-logo.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/base_lyrics_provider.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/file_provider.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/genius.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/lrclib.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/musixmatch.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/spotify.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/user_input_provider.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/ass.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/ass_specs.txt +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/config.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/constants.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/event.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/formatters.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/lyrics_line.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/lyrics_screen.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/section_detector.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/section_screen.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/style.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdg.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/cdg.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/composer.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/config.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/images/instrumental.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/images/intro.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/pack.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/render.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/centertexttoplogobottomtext.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/circlein.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/circleout.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/fizzle.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/largecentertexttoplogo.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/rectangle.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/spiral.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/topleftmusicalnotes.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipein.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipeleft.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipeout.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wiperight.png +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/utils.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/AvenirNext-Bold.ttf +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/DMSans-VariableFont_opsz,wght.ttf +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/DMSerifDisplay-Regular.ttf +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/Oswald-SemiBold.ttf +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/Zurich_Cn_BT_Bold.ttf +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/arial.ttf +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/georgia.ttf +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/verdana.ttf +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/lrc_to_cdg.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/lyrics_file.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/plain_text.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/segment_resizer.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/subtitles.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/output/video.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/review/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/storage/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/storage/dropbox.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/base_transcriber.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/whisper.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/utils/__init__.py +0 -0
- {karaoke_gen-0.75.2 → karaoke_gen-0.76.25}/lyrics_transcriber_temp/lyrics_transcriber/utils/word_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: karaoke-gen
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.76.25
|
|
4
4
|
Summary: Generate karaoke videos with synchronized lyrics. Handles the entire process from downloading audio and lyrics to creating the final video with title screens.
|
|
5
5
|
License: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -13,6 +13,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.11
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Provides-Extra: local-whisper
|
|
16
17
|
Requires-Dist: argparse (>=1.4.0)
|
|
17
18
|
Requires-Dist: attrs (>=24.2.0)
|
|
18
19
|
Requires-Dist: audio-separator[cpu] (>=0.34.0)
|
|
@@ -22,7 +23,7 @@ Requires-Dist: dropbox (>=12)
|
|
|
22
23
|
Requires-Dist: fastapi (>=0.104.0)
|
|
23
24
|
Requires-Dist: fetch-lyrics-from-genius (>=0.1)
|
|
24
25
|
Requires-Dist: ffmpeg-python (>=0.2.0,<0.3.0)
|
|
25
|
-
Requires-Dist: flacfetch (>=0.
|
|
26
|
+
Requires-Dist: flacfetch (>=0.9.0)
|
|
26
27
|
Requires-Dist: fonttools (>=4.55)
|
|
27
28
|
Requires-Dist: google-api-python-client
|
|
28
29
|
Requires-Dist: google-auth
|
|
@@ -48,6 +49,7 @@ Requires-Dist: lyrics-converter (>=0.2.1)
|
|
|
48
49
|
Requires-Dist: lyricsgenius (>=3)
|
|
49
50
|
Requires-Dist: matplotlib (>=3)
|
|
50
51
|
Requires-Dist: metaphone (>=0.6)
|
|
52
|
+
Requires-Dist: mutagen (>=1.47)
|
|
51
53
|
Requires-Dist: nest-asyncio (>=1.5)
|
|
52
54
|
Requires-Dist: nltk (>=3.9)
|
|
53
55
|
Requires-Dist: numpy (>=2)
|
|
@@ -85,6 +87,7 @@ Requires-Dist: torch (>=2.7)
|
|
|
85
87
|
Requires-Dist: tqdm (>=4.67)
|
|
86
88
|
Requires-Dist: transformers (>=4.47)
|
|
87
89
|
Requires-Dist: uvicorn[standard] (>=0.24.0)
|
|
90
|
+
Requires-Dist: whisper-timestamped (>=1.15.0) ; extra == "local-whisper"
|
|
88
91
|
Requires-Dist: yt-dlp (>=2024.0.0)
|
|
89
92
|
Project-URL: Documentation, https://github.com/nomadkaraoke/karaoke-gen/blob/main/README.md
|
|
90
93
|
Project-URL: Homepage, https://github.com/nomadkaraoke/karaoke-gen
|
|
@@ -94,7 +97,7 @@ Description-Content-Type: text/markdown
|
|
|
94
97
|
# Karaoke Generator 🎶 🎥 🚀
|
|
95
98
|
|
|
96
99
|

|
|
97
|
-

|
|
98
101
|

|
|
99
102
|

|
|
100
103
|
|
|
@@ -147,10 +150,76 @@ pip install karaoke-gen
|
|
|
147
150
|
This installs both `karaoke-gen` (local) and `karaoke-gen-remote` (cloud) CLIs.
|
|
148
151
|
|
|
149
152
|
### Requirements
|
|
150
|
-
- Python 3.10
|
|
153
|
+
- Python 3.10-3.13
|
|
151
154
|
- FFmpeg
|
|
152
155
|
- For local processing: CUDA-capable GPU or Apple Silicon CPU recommended
|
|
153
156
|
|
|
157
|
+
### Transcription Provider Setup
|
|
158
|
+
|
|
159
|
+
**Transcription is required** for creating karaoke videos with synchronized lyrics. The system needs word-level timing data to display lyrics in sync with the music.
|
|
160
|
+
|
|
161
|
+
#### Option 1: AudioShake (Recommended)
|
|
162
|
+
Commercial service with high-quality transcription. Best for production use.
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
export AUDIOSHAKE_API_TOKEN="your_audioshake_token"
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Get an API key at [https://www.audioshake.ai/](https://www.audioshake.ai/) - business only, at time of writing this.
|
|
169
|
+
|
|
170
|
+
#### Option 2: Local Whisper (No Cloud Required)
|
|
171
|
+
Run Whisper directly on your local machine using whisper-timestamped. Works on CPU, NVIDIA GPU (CUDA), or Apple Silicon.
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
# Install with local Whisper support
|
|
175
|
+
pip install karaoke-gen[local-whisper]
|
|
176
|
+
|
|
177
|
+
# Optional: Configure model size (tiny, base, small, medium, large)
|
|
178
|
+
export WHISPER_MODEL_SIZE="medium"
|
|
179
|
+
|
|
180
|
+
# Optional: Force specific device (cpu, cuda, mps)
|
|
181
|
+
export WHISPER_DEVICE="cpu"
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Model Size Guide:**
|
|
185
|
+
| Model | VRAM | Speed | Quality |
|
|
186
|
+
|-------|------|-------|---------|
|
|
187
|
+
| tiny | ~1GB | Fast | Lower |
|
|
188
|
+
| base | ~1GB | Fast | Basic |
|
|
189
|
+
| small | ~2GB | Medium | Good |
|
|
190
|
+
| medium | ~5GB | Slower | Better |
|
|
191
|
+
| large | ~10GB | Slowest | Best |
|
|
192
|
+
|
|
193
|
+
**CPU-Only Installation** (no GPU required):
|
|
194
|
+
```bash
|
|
195
|
+
# Pre-install CPU-only PyTorch first
|
|
196
|
+
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cpu
|
|
197
|
+
pip install karaoke-gen[local-whisper]
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Local Whisper runs automatically as a fallback when no cloud transcription services are configured.
|
|
201
|
+
|
|
202
|
+
#### Option 3: Whisper via RunPod
|
|
203
|
+
Cloud-based alternative using OpenAI's Whisper model on RunPod infrastructure.
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
export RUNPOD_API_KEY="your_runpod_key"
|
|
207
|
+
export WHISPER_RUNPOD_ID="your_whisper_endpoint_id"
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Set up a Whisper endpoint at [https://www.runpod.io/](https://www.runpod.io/)
|
|
211
|
+
|
|
212
|
+
#### Without Transcription (Instrumental Only)
|
|
213
|
+
If you don't need synchronized lyrics, use the `--skip-lyrics` flag:
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
karaoke-gen --skip-lyrics "Artist" "Title"
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
This creates an instrumental-only karaoke video without lyrics overlay.
|
|
220
|
+
|
|
221
|
+
> **Note:** See `lyrics_transcriber_temp/README.md` for detailed transcription provider configuration options.
|
|
222
|
+
|
|
154
223
|
---
|
|
155
224
|
|
|
156
225
|
## 🖥️ Local CLI (`karaoke-gen`)
|
|
@@ -273,9 +342,11 @@ karaoke-gen-remote \
|
|
|
273
342
|
|----------|-------------|---------|
|
|
274
343
|
| `KARAOKE_GEN_URL` | Backend service URL | Required |
|
|
275
344
|
| `KARAOKE_GEN_AUTH_TOKEN` | Admin auth token (for protected endpoints) | Optional |
|
|
276
|
-
| `REVIEW_UI_URL` | Lyrics review UI URL | `https://
|
|
345
|
+
| `REVIEW_UI_URL` | Lyrics review UI URL | `https://gen.nomadkaraoke.com/lyrics/` |
|
|
277
346
|
| `POLL_INTERVAL` | Seconds between status polls | `5` |
|
|
278
347
|
|
|
348
|
+
**Note:** The `REVIEW_UI_URL` defaults to the hosted lyrics review UI. For local development, set it to `http://localhost:5173` if you're running the frontend dev server.
|
|
349
|
+
|
|
279
350
|
### Authentication
|
|
280
351
|
|
|
281
352
|
The backend uses token-based authentication for admin operations (bulk delete, internal worker triggers). For basic job submission and monitoring, authentication is optional.
|
|
@@ -566,6 +637,111 @@ Check backend health status.
|
|
|
566
637
|
|
|
567
638
|
---
|
|
568
639
|
|
|
640
|
+
## 🔧 Troubleshooting
|
|
641
|
+
|
|
642
|
+
### "No suitable files found for processing"
|
|
643
|
+
|
|
644
|
+
This error occurs during the finalisation step when the `(With Vocals).mkv` file is missing. This file is created during lyrics transcription.
|
|
645
|
+
|
|
646
|
+
**Most common cause:** No transcription provider configured.
|
|
647
|
+
|
|
648
|
+
**Quick fix:**
|
|
649
|
+
1. Check if transcription providers are configured:
|
|
650
|
+
```bash
|
|
651
|
+
echo $AUDIOSHAKE_API_TOKEN
|
|
652
|
+
echo $RUNPOD_API_KEY
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
2. If both are empty, set up a provider (see [Transcription Provider Setup](#transcription-provider-setup))
|
|
656
|
+
|
|
657
|
+
3. Or use `--skip-lyrics` for instrumental-only karaoke:
|
|
658
|
+
```bash
|
|
659
|
+
karaoke-gen --skip-lyrics "Artist" "Title"
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
**Other causes:**
|
|
663
|
+
- Invalid API credentials - verify your tokens are correct and active
|
|
664
|
+
- API service unavailable - check service status pages
|
|
665
|
+
- Network connectivity issues - ensure you can reach the API endpoints
|
|
666
|
+
- Transcription timeout - try again or use a different provider
|
|
667
|
+
|
|
668
|
+
### Transcription Fails Silently
|
|
669
|
+
|
|
670
|
+
If karaoke-gen runs without errors but produces no synchronized lyrics:
|
|
671
|
+
|
|
672
|
+
1. **Check logs** - Run with `--log_level debug` for detailed output:
|
|
673
|
+
```bash
|
|
674
|
+
karaoke-gen --log_level debug "Artist" "Title"
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
2. **Verify environment variables** - Ensure API tokens are exported in your shell:
|
|
678
|
+
```bash
|
|
679
|
+
# Check if set
|
|
680
|
+
printenv | grep -E "(AUDIOSHAKE|RUNPOD|WHISPER)"
|
|
681
|
+
|
|
682
|
+
# Set in current session
|
|
683
|
+
export AUDIOSHAKE_API_TOKEN="your_token"
|
|
684
|
+
```
|
|
685
|
+
|
|
686
|
+
3. **Test API connectivity** - Verify you can reach the transcription service
|
|
687
|
+
|
|
688
|
+
### "No lyrics found from any source"
|
|
689
|
+
|
|
690
|
+
This warning means no reference lyrics were fetched from online sources (Genius, Spotify, Musixmatch). The transcription will still work, but auto-correction may be less accurate.
|
|
691
|
+
|
|
692
|
+
**To fix:**
|
|
693
|
+
- Set `GENIUS_API_TOKEN` for Genius lyrics
|
|
694
|
+
- Set `SPOTIFY_COOKIE_SP_DC` for Spotify lyrics
|
|
695
|
+
- Set `RAPIDAPI_KEY` for Musixmatch lyrics
|
|
696
|
+
- Or provide lyrics manually with `--lyrics_file /path/to/lyrics.txt`
|
|
697
|
+
|
|
698
|
+
### Video Quality Issues
|
|
699
|
+
|
|
700
|
+
If the output video has quality problems:
|
|
701
|
+
- Ensure FFmpeg is properly installed: `ffmpeg -version`
|
|
702
|
+
- Check available codecs: `ffmpeg -codecs`
|
|
703
|
+
- For 4K output, ensure sufficient disk space (10GB+ per track)
|
|
704
|
+
|
|
705
|
+
### Local Whisper Issues
|
|
706
|
+
|
|
707
|
+
#### GPU Out of Memory
|
|
708
|
+
If you get CUDA out of memory errors:
|
|
709
|
+
```bash
|
|
710
|
+
# Use a smaller model
|
|
711
|
+
export WHISPER_MODEL_SIZE="small" # or "tiny"
|
|
712
|
+
|
|
713
|
+
# Or force CPU mode
|
|
714
|
+
export WHISPER_DEVICE="cpu"
|
|
715
|
+
```
|
|
716
|
+
|
|
717
|
+
#### Slow Transcription on CPU
|
|
718
|
+
CPU transcription is significantly slower than GPU. For faster processing:
|
|
719
|
+
- Use a smaller model (`tiny` or `base`)
|
|
720
|
+
- Consider using cloud transcription (AudioShake or RunPod)
|
|
721
|
+
- On Apple Silicon, the `small` model offers good speed/quality balance
|
|
722
|
+
|
|
723
|
+
#### Model Download Issues
|
|
724
|
+
Whisper models are downloaded on first use (~1-3GB depending on size). If downloads fail:
|
|
725
|
+
- Check your internet connection
|
|
726
|
+
- Set a custom cache directory: `export WHISPER_CACHE_DIR="/path/with/space"`
|
|
727
|
+
- Models are cached in `~/.cache/whisper/` by default
|
|
728
|
+
|
|
729
|
+
#### whisper-timestamped Not Found
|
|
730
|
+
If you get "whisper-timestamped is not installed":
|
|
731
|
+
```bash
|
|
732
|
+
pip install karaoke-gen[local-whisper]
|
|
733
|
+
# Or install directly:
|
|
734
|
+
pip install whisper-timestamped
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
#### Disabling Local Whisper
|
|
738
|
+
If you want to disable local Whisper (e.g., to force cloud transcription):
|
|
739
|
+
```bash
|
|
740
|
+
export ENABLE_LOCAL_WHISPER="false"
|
|
741
|
+
```
|
|
742
|
+
|
|
743
|
+
---
|
|
744
|
+
|
|
569
745
|
## 🧪 Development
|
|
570
746
|
|
|
571
747
|
### Running Tests
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Karaoke Generator 🎶 🎥 🚀
|
|
2
2
|
|
|
3
3
|

|
|
4
|
-

|
|
5
5
|

|
|
6
6
|

|
|
7
7
|
|
|
@@ -54,10 +54,76 @@ pip install karaoke-gen
|
|
|
54
54
|
This installs both `karaoke-gen` (local) and `karaoke-gen-remote` (cloud) CLIs.
|
|
55
55
|
|
|
56
56
|
### Requirements
|
|
57
|
-
- Python 3.10
|
|
57
|
+
- Python 3.10-3.13
|
|
58
58
|
- FFmpeg
|
|
59
59
|
- For local processing: CUDA-capable GPU or Apple Silicon CPU recommended
|
|
60
60
|
|
|
61
|
+
### Transcription Provider Setup
|
|
62
|
+
|
|
63
|
+
**Transcription is required** for creating karaoke videos with synchronized lyrics. The system needs word-level timing data to display lyrics in sync with the music.
|
|
64
|
+
|
|
65
|
+
#### Option 1: AudioShake (Recommended)
|
|
66
|
+
Commercial service with high-quality transcription. Best for production use.
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
export AUDIOSHAKE_API_TOKEN="your_audioshake_token"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Get an API key at [https://www.audioshake.ai/](https://www.audioshake.ai/) - business only, at time of writing this.
|
|
73
|
+
|
|
74
|
+
#### Option 2: Local Whisper (No Cloud Required)
|
|
75
|
+
Run Whisper directly on your local machine using whisper-timestamped. Works on CPU, NVIDIA GPU (CUDA), or Apple Silicon.
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Install with local Whisper support
|
|
79
|
+
pip install karaoke-gen[local-whisper]
|
|
80
|
+
|
|
81
|
+
# Optional: Configure model size (tiny, base, small, medium, large)
|
|
82
|
+
export WHISPER_MODEL_SIZE="medium"
|
|
83
|
+
|
|
84
|
+
# Optional: Force specific device (cpu, cuda, mps)
|
|
85
|
+
export WHISPER_DEVICE="cpu"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Model Size Guide:**
|
|
89
|
+
| Model | VRAM | Speed | Quality |
|
|
90
|
+
|-------|------|-------|---------|
|
|
91
|
+
| tiny | ~1GB | Fast | Lower |
|
|
92
|
+
| base | ~1GB | Fast | Basic |
|
|
93
|
+
| small | ~2GB | Medium | Good |
|
|
94
|
+
| medium | ~5GB | Slower | Better |
|
|
95
|
+
| large | ~10GB | Slowest | Best |
|
|
96
|
+
|
|
97
|
+
**CPU-Only Installation** (no GPU required):
|
|
98
|
+
```bash
|
|
99
|
+
# Pre-install CPU-only PyTorch first
|
|
100
|
+
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cpu
|
|
101
|
+
pip install karaoke-gen[local-whisper]
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Local Whisper runs automatically as a fallback when no cloud transcription services are configured.
|
|
105
|
+
|
|
106
|
+
#### Option 3: Whisper via RunPod
|
|
107
|
+
Cloud-based alternative using OpenAI's Whisper model on RunPod infrastructure.
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
export RUNPOD_API_KEY="your_runpod_key"
|
|
111
|
+
export WHISPER_RUNPOD_ID="your_whisper_endpoint_id"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Set up a Whisper endpoint at [https://www.runpod.io/](https://www.runpod.io/)
|
|
115
|
+
|
|
116
|
+
#### Without Transcription (Instrumental Only)
|
|
117
|
+
If you don't need synchronized lyrics, use the `--skip-lyrics` flag:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
karaoke-gen --skip-lyrics "Artist" "Title"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
This creates an instrumental-only karaoke video without lyrics overlay.
|
|
124
|
+
|
|
125
|
+
> **Note:** See `lyrics_transcriber_temp/README.md` for detailed transcription provider configuration options.
|
|
126
|
+
|
|
61
127
|
---
|
|
62
128
|
|
|
63
129
|
## 🖥️ Local CLI (`karaoke-gen`)
|
|
@@ -180,9 +246,11 @@ karaoke-gen-remote \
|
|
|
180
246
|
|----------|-------------|---------|
|
|
181
247
|
| `KARAOKE_GEN_URL` | Backend service URL | Required |
|
|
182
248
|
| `KARAOKE_GEN_AUTH_TOKEN` | Admin auth token (for protected endpoints) | Optional |
|
|
183
|
-
| `REVIEW_UI_URL` | Lyrics review UI URL | `https://
|
|
249
|
+
| `REVIEW_UI_URL` | Lyrics review UI URL | `https://gen.nomadkaraoke.com/lyrics/` |
|
|
184
250
|
| `POLL_INTERVAL` | Seconds between status polls | `5` |
|
|
185
251
|
|
|
252
|
+
**Note:** The `REVIEW_UI_URL` defaults to the hosted lyrics review UI. For local development, set it to `http://localhost:5173` if you're running the frontend dev server.
|
|
253
|
+
|
|
186
254
|
### Authentication
|
|
187
255
|
|
|
188
256
|
The backend uses token-based authentication for admin operations (bulk delete, internal worker triggers). For basic job submission and monitoring, authentication is optional.
|
|
@@ -473,6 +541,111 @@ Check backend health status.
|
|
|
473
541
|
|
|
474
542
|
---
|
|
475
543
|
|
|
544
|
+
## 🔧 Troubleshooting
|
|
545
|
+
|
|
546
|
+
### "No suitable files found for processing"
|
|
547
|
+
|
|
548
|
+
This error occurs during the finalisation step when the `(With Vocals).mkv` file is missing. This file is created during lyrics transcription.
|
|
549
|
+
|
|
550
|
+
**Most common cause:** No transcription provider configured.
|
|
551
|
+
|
|
552
|
+
**Quick fix:**
|
|
553
|
+
1. Check if transcription providers are configured:
|
|
554
|
+
```bash
|
|
555
|
+
echo $AUDIOSHAKE_API_TOKEN
|
|
556
|
+
echo $RUNPOD_API_KEY
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
2. If both are empty, set up a provider (see [Transcription Provider Setup](#transcription-provider-setup))
|
|
560
|
+
|
|
561
|
+
3. Or use `--skip-lyrics` for instrumental-only karaoke:
|
|
562
|
+
```bash
|
|
563
|
+
karaoke-gen --skip-lyrics "Artist" "Title"
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
**Other causes:**
|
|
567
|
+
- Invalid API credentials - verify your tokens are correct and active
|
|
568
|
+
- API service unavailable - check service status pages
|
|
569
|
+
- Network connectivity issues - ensure you can reach the API endpoints
|
|
570
|
+
- Transcription timeout - try again or use a different provider
|
|
571
|
+
|
|
572
|
+
### Transcription Fails Silently
|
|
573
|
+
|
|
574
|
+
If karaoke-gen runs without errors but produces no synchronized lyrics:
|
|
575
|
+
|
|
576
|
+
1. **Check logs** - Run with `--log_level debug` for detailed output:
|
|
577
|
+
```bash
|
|
578
|
+
karaoke-gen --log_level debug "Artist" "Title"
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
2. **Verify environment variables** - Ensure API tokens are exported in your shell:
|
|
582
|
+
```bash
|
|
583
|
+
# Check if set
|
|
584
|
+
printenv | grep -E "(AUDIOSHAKE|RUNPOD|WHISPER)"
|
|
585
|
+
|
|
586
|
+
# Set in current session
|
|
587
|
+
export AUDIOSHAKE_API_TOKEN="your_token"
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
3. **Test API connectivity** - Verify you can reach the transcription service
|
|
591
|
+
|
|
592
|
+
### "No lyrics found from any source"
|
|
593
|
+
|
|
594
|
+
This warning means no reference lyrics were fetched from online sources (Genius, Spotify, Musixmatch). The transcription will still work, but auto-correction may be less accurate.
|
|
595
|
+
|
|
596
|
+
**To fix:**
|
|
597
|
+
- Set `GENIUS_API_TOKEN` for Genius lyrics
|
|
598
|
+
- Set `SPOTIFY_COOKIE_SP_DC` for Spotify lyrics
|
|
599
|
+
- Set `RAPIDAPI_KEY` for Musixmatch lyrics
|
|
600
|
+
- Or provide lyrics manually with `--lyrics_file /path/to/lyrics.txt`
|
|
601
|
+
|
|
602
|
+
### Video Quality Issues
|
|
603
|
+
|
|
604
|
+
If the output video has quality problems:
|
|
605
|
+
- Ensure FFmpeg is properly installed: `ffmpeg -version`
|
|
606
|
+
- Check available codecs: `ffmpeg -codecs`
|
|
607
|
+
- For 4K output, ensure sufficient disk space (10GB+ per track)
|
|
608
|
+
|
|
609
|
+
### Local Whisper Issues
|
|
610
|
+
|
|
611
|
+
#### GPU Out of Memory
|
|
612
|
+
If you get CUDA out of memory errors:
|
|
613
|
+
```bash
|
|
614
|
+
# Use a smaller model
|
|
615
|
+
export WHISPER_MODEL_SIZE="small" # or "tiny"
|
|
616
|
+
|
|
617
|
+
# Or force CPU mode
|
|
618
|
+
export WHISPER_DEVICE="cpu"
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
#### Slow Transcription on CPU
|
|
622
|
+
CPU transcription is significantly slower than GPU. For faster processing:
|
|
623
|
+
- Use a smaller model (`tiny` or `base`)
|
|
624
|
+
- Consider using cloud transcription (AudioShake or RunPod)
|
|
625
|
+
- On Apple Silicon, the `small` model offers good speed/quality balance
|
|
626
|
+
|
|
627
|
+
#### Model Download Issues
|
|
628
|
+
Whisper models are downloaded on first use (~1-3GB depending on size). If downloads fail:
|
|
629
|
+
- Check your internet connection
|
|
630
|
+
- Set a custom cache directory: `export WHISPER_CACHE_DIR="/path/with/space"`
|
|
631
|
+
- Models are cached in `~/.cache/whisper/` by default
|
|
632
|
+
|
|
633
|
+
#### whisper-timestamped Not Found
|
|
634
|
+
If you get "whisper-timestamped is not installed":
|
|
635
|
+
```bash
|
|
636
|
+
pip install karaoke-gen[local-whisper]
|
|
637
|
+
# Or install directly:
|
|
638
|
+
pip install whisper-timestamped
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
#### Disabling Local Whisper
|
|
642
|
+
If you want to disable local Whisper (e.g., to force cloud transcription):
|
|
643
|
+
```bash
|
|
644
|
+
export ENABLE_LOCAL_WHISPER="false"
|
|
645
|
+
```
|
|
646
|
+
|
|
647
|
+
---
|
|
648
|
+
|
|
476
649
|
## 🧪 Development
|
|
477
650
|
|
|
478
651
|
### Running Tests
|