karaoke-gen 0.76.28__tar.gz → 0.81.5__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.76.28 → karaoke_gen-0.81.5}/PKG-INFO +5 -1
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/config.py +7 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/langchain_bridge.py +22 -7
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/model_factory.py +25 -1
- karaoke_gen-0.81.5/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/router.py +40 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/pyproject.toml +6 -1
- karaoke_gen-0.76.28/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/router.py +0 -35
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/LICENSE +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/README.md +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/audio_fetcher.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/audio_processor.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/config.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/file_handler.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/instrumental_review/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/instrumental_review/analyzer.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/instrumental_review/editor.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/instrumental_review/models.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/instrumental_review/server.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/instrumental_review/static/index.html +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/instrumental_review/waveform.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/karaoke_finalise/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/karaoke_finalise/karaoke_finalise.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/karaoke_gen.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/lyrics_processor.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/metadata.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/base.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/context.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/executors/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/executors/local.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/executors/remote.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/stages/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/stages/finalize.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/stages/render.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/stages/screens.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/stages/separation.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/stages/transcription.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/resources/AvenirNext-Bold.ttf +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/resources/Montserrat-Bold.ttf +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/resources/Oswald-Bold.ttf +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/resources/Oswald-SemiBold.ttf +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/resources/Zurich_Cn_BT_Bold.ttf +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/style_loader.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/utils/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/utils/bulk_cli.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/utils/cli_args.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/utils/gen_cli.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/utils/remote_cli.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/video_background_processor.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/video_generator.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/cli/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/cli/cli_main.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/core/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/core/config.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/core/controller.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/adapter.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/agent.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/aggregator.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/collector.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/retention.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/store.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/ambiguous.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/background_vocals.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/base.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/complex_multi_error.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/extra_words.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/no_error.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/punctuation.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/registry.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/repeated_section.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/sound_alike.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/ai_correction.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/correction_session.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/enums.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/human_feedback.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/learning_data.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/observability_metrics.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/schemas.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/utils.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/langfuse_integration.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/metrics.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/performance.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/prompts/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/prompts/classifier.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/base.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/circuit_breaker.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/constants.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/health.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/response_cache.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/response_parser.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/retry_executor.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/consensus_workflow.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/correction_graph.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/feedback_workflow.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/anchor_sequence.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/corrector.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/schemas.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/store.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/base.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/extend_anchor.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/levenshtein.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/llm.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/llm_providers.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/no_space_punct_match.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/relaxed_word_count_match.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/repeat.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/sound_alike.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/syllables_match.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/word_count_match.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/word_operations.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/operations.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/phrase_analyzer.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/text_utils.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/.gitignore +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/.yarn/releases/yarn-4.7.0.cjs +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/.yarnrc.yml +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/README.md +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/REPLACE_ALL_FUNCTIONALITY.md +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/e2e/agentic-corrections.spec.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/e2e/fixtures/agentic-correction-data.json +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/eslint.config.js +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/index.html +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/package-lock.json +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/package.json +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/playwright.config.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/android-chrome-192x192.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/android-chrome-512x512.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/apple-touch-icon.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon-16x16.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon-32x32.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon.ico +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/nomad-karaoke-logo.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/nomad-karaoke-logo.svg +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/App.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/api.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AIFeedbackModal.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AddLyricsModal.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AgenticCorrectionMetrics.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AppHeader.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AudioPlayer.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectedWordWithActions.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionAnnotationModal.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionDetailCard.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionMetrics.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/DurationTimelineView.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditActionBar.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditModal.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditTimelineSection.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditWordList.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/FileUpload.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/FindReplaceModal.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/Header.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/SyncControls.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/TimelineCanvas.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/UpcomingWordsBar.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/index.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/MetricsDashboard.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModeSelectionModal.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModeSelector.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModelSelector.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/PreviewVideoSection.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReferenceView.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReplaceAllLyricsModal.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReviewChangesModal.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/SegmentDetailsModal.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TimelineEditor.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TimingOffsetModal.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TranscriptionView.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/WordDivider.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/HighlightedText.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/SourceSelector.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/Word.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/constants.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/hooks/useWordClick.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/styles.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/types.js +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/types.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/keyboardHandlers.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/localStorage.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/referenceLineCalculator.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/segmentOperations.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/timingUtils.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/wordUtils.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/hooks/useManualSync.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/main.tsx +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/theme.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types/global.d.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types.js +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/validation.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/vite-env.d.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.app.json +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.json +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.node.json +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.tsbuildinfo +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/update_version.js +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.d.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.js +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.ts +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/android-chrome-192x192.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/android-chrome-512x512.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/apple-touch-icon.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/assets/index-BECn1o8Q.js +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/assets/index-BECn1o8Q.js.map +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon-16x16.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon-32x32.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon.ico +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/index.html +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/nomad-karaoke-logo.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/yarn.lock +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/base_lyrics_provider.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/file_provider.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/genius.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/lrclib.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/musixmatch.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/spotify.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/user_input_provider.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/ass.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/ass_specs.txt +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/config.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/constants.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/event.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/formatters.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/lyrics_line.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/lyrics_screen.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/section_detector.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/section_screen.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/style.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdg.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/cdg.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/composer.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/config.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/images/instrumental.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/images/intro.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/pack.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/render.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/centertexttoplogobottomtext.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/circlein.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/circleout.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/fizzle.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/largecentertexttoplogo.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/rectangle.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/spiral.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/topleftmusicalnotes.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipein.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipeleft.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipeout.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wiperight.png +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/utils.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/countdown_processor.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/AvenirNext-Bold.ttf +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/DMSans-VariableFont_opsz,wght.ttf +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/DMSerifDisplay-Regular.ttf +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/Oswald-SemiBold.ttf +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/Zurich_Cn_BT_Bold.ttf +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/arial.ttf +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/georgia.ttf +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/verdana.ttf +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/generator.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/lrc_to_cdg.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/lyrics_file.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/plain_text.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/segment_resizer.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/subtitles.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/video.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/review/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/review/server.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/storage/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/storage/dropbox.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/audioshake.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/base_transcriber.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/local_whisper.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/whisper.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/types.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/utils/__init__.py +0 -0
- {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/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.81.5
|
|
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
|
|
@@ -20,6 +20,7 @@ Requires-Dist: audio-separator[cpu] (>=0.34.0)
|
|
|
20
20
|
Requires-Dist: beautifulsoup4 (>=4)
|
|
21
21
|
Requires-Dist: cattrs (>=24.1.2)
|
|
22
22
|
Requires-Dist: dropbox (>=12)
|
|
23
|
+
Requires-Dist: email-validator (>=2.0.0)
|
|
23
24
|
Requires-Dist: fastapi (>=0.104.0)
|
|
24
25
|
Requires-Dist: fetch-lyrics-from-genius (>=0.1)
|
|
25
26
|
Requires-Dist: ffmpeg-python (>=0.2.0,<0.3.0)
|
|
@@ -41,6 +42,7 @@ Requires-Dist: kbputils (>=0.0.16,<0.0.17)
|
|
|
41
42
|
Requires-Dist: langchain (>=0.3.0)
|
|
42
43
|
Requires-Dist: langchain-anthropic (>=0.2.0)
|
|
43
44
|
Requires-Dist: langchain-core (>=0.3.0)
|
|
45
|
+
Requires-Dist: langchain-google-vertexai (>=3.1.1)
|
|
44
46
|
Requires-Dist: langchain-ollama (>=0.2.0)
|
|
45
47
|
Requires-Dist: langchain-openai (>=0.2.0)
|
|
46
48
|
Requires-Dist: langfuse (>=3.0.0)
|
|
@@ -75,10 +77,12 @@ Requires-Dist: python-levenshtein (>=0.26)
|
|
|
75
77
|
Requires-Dist: python-multipart (>=0.0.20,<0.0.21)
|
|
76
78
|
Requires-Dist: python-slugify (>=8)
|
|
77
79
|
Requires-Dist: requests (>=2)
|
|
80
|
+
Requires-Dist: sendgrid (>=6.10.0)
|
|
78
81
|
Requires-Dist: shortuuid (>=1.0.13)
|
|
79
82
|
Requires-Dist: spacy (>=3.8.7)
|
|
80
83
|
Requires-Dist: spacy-syllables (>=3)
|
|
81
84
|
Requires-Dist: srsly (>=2.5.1)
|
|
85
|
+
Requires-Dist: stripe (>=7.0.0)
|
|
82
86
|
Requires-Dist: syllables (>=1)
|
|
83
87
|
Requires-Dist: syrics (>=0)
|
|
84
88
|
Requires-Dist: thefuzz (>=0.22)
|
|
@@ -18,6 +18,11 @@ class ProviderConfig:
|
|
|
18
18
|
privacy_mode: bool
|
|
19
19
|
cache_dir: str
|
|
20
20
|
|
|
21
|
+
# GCP/Vertex AI settings
|
|
22
|
+
# Note: Gemini 3 models require 'global' location (not regional like us-central1)
|
|
23
|
+
gcp_project_id: Optional[str] = None
|
|
24
|
+
gcp_location: str = "global"
|
|
25
|
+
|
|
21
26
|
request_timeout_seconds: float = 30.0
|
|
22
27
|
max_retries: int = 2
|
|
23
28
|
retry_backoff_base_seconds: float = 0.2
|
|
@@ -46,6 +51,8 @@ class ProviderConfig:
|
|
|
46
51
|
openrouter_api_key=os.getenv("OPENROUTER_API_KEY"),
|
|
47
52
|
privacy_mode=os.getenv("PRIVACY_MODE", "false").lower() in {"1", "true", "yes"},
|
|
48
53
|
cache_dir=cache_dir,
|
|
54
|
+
gcp_project_id=os.getenv("GOOGLE_CLOUD_PROJECT") or os.getenv("GCP_PROJECT_ID"),
|
|
55
|
+
gcp_location=os.getenv("GCP_LOCATION", "global"),
|
|
49
56
|
request_timeout_seconds=float(os.getenv("AGENTIC_TIMEOUT_SECONDS", "30.0")),
|
|
50
57
|
max_retries=int(os.getenv("AGENTIC_MAX_RETRIES", "2")),
|
|
51
58
|
retry_backoff_base_seconds=float(os.getenv("AGENTIC_BACKOFF_BASE_SECONDS", "0.2")),
|
|
@@ -187,26 +187,41 @@ class LangChainBridge(BaseAIProvider):
|
|
|
187
187
|
|
|
188
188
|
def _invoke_model(self, prompt: str) -> str:
|
|
189
189
|
"""Invoke the chat model with a prompt.
|
|
190
|
-
|
|
190
|
+
|
|
191
191
|
This is a simple wrapper that can be passed to the retry executor.
|
|
192
|
-
|
|
192
|
+
|
|
193
193
|
Args:
|
|
194
194
|
prompt: The prompt to send
|
|
195
|
-
|
|
195
|
+
|
|
196
196
|
Returns:
|
|
197
197
|
Response content as string
|
|
198
|
-
|
|
198
|
+
|
|
199
199
|
Raises:
|
|
200
200
|
Exception: Any error from the model invocation
|
|
201
201
|
"""
|
|
202
202
|
from langchain_core.messages import HumanMessage
|
|
203
|
-
|
|
203
|
+
|
|
204
204
|
# Prepare config with session_id in metadata (Langfuse format)
|
|
205
205
|
config = {}
|
|
206
206
|
if hasattr(self, '_session_id') and self._session_id:
|
|
207
207
|
config["metadata"] = {"langfuse_session_id": self._session_id}
|
|
208
208
|
logger.debug(f"🤖 [LangChain] Invoking with session_id: {self._session_id}")
|
|
209
|
-
|
|
209
|
+
|
|
210
210
|
response = self._chat_model.invoke([HumanMessage(content=prompt)], config=config)
|
|
211
|
-
|
|
211
|
+
content = response.content
|
|
212
|
+
|
|
213
|
+
# Handle multimodal response format from Gemini 3+ models
|
|
214
|
+
# Response can be a list of content parts: [{'type': 'text', 'text': '...'}]
|
|
215
|
+
if isinstance(content, list):
|
|
216
|
+
# Extract text from the first text content part
|
|
217
|
+
for part in content:
|
|
218
|
+
if isinstance(part, dict) and part.get('type') == 'text':
|
|
219
|
+
return part.get('text', '')
|
|
220
|
+
# Fallback: concatenate all text parts
|
|
221
|
+
return ''.join(
|
|
222
|
+
part.get('text', '') if isinstance(part, dict) else str(part)
|
|
223
|
+
for part in content
|
|
224
|
+
)
|
|
225
|
+
|
|
226
|
+
return content
|
|
212
227
|
|
|
@@ -155,6 +155,8 @@ class ModelFactory:
|
|
|
155
155
|
return self._create_openai_model(model_name, callbacks, config)
|
|
156
156
|
elif provider == "anthropic":
|
|
157
157
|
return self._create_anthropic_model(model_name, callbacks, config)
|
|
158
|
+
elif provider in ("vertexai", "google"):
|
|
159
|
+
return self._create_vertexai_model(model_name, callbacks, config)
|
|
158
160
|
else:
|
|
159
161
|
raise ValueError(f"Unsupported provider: {provider}")
|
|
160
162
|
except ImportError as e:
|
|
@@ -197,7 +199,7 @@ class ModelFactory:
|
|
|
197
199
|
) -> Any:
|
|
198
200
|
"""Create ChatAnthropic model."""
|
|
199
201
|
from langchain_anthropic import ChatAnthropic
|
|
200
|
-
|
|
202
|
+
|
|
201
203
|
model = ChatAnthropic(
|
|
202
204
|
model=model_name,
|
|
203
205
|
timeout=config.request_timeout_seconds,
|
|
@@ -207,3 +209,25 @@ class ModelFactory:
|
|
|
207
209
|
logger.debug(f"🤖 Created Anthropic model: {model_name}")
|
|
208
210
|
return model
|
|
209
211
|
|
|
212
|
+
def _create_vertexai_model(
|
|
213
|
+
self, model_name: str, callbacks: List[Any], config: ProviderConfig
|
|
214
|
+
) -> Any:
|
|
215
|
+
"""Create ChatVertexAI model for Google Gemini via Vertex AI.
|
|
216
|
+
|
|
217
|
+
Uses Application Default Credentials (ADC) for authentication.
|
|
218
|
+
In Cloud Run, this uses the service account automatically.
|
|
219
|
+
Locally, run: gcloud auth application-default login
|
|
220
|
+
"""
|
|
221
|
+
from langchain_google_vertexai import ChatVertexAI
|
|
222
|
+
|
|
223
|
+
model = ChatVertexAI(
|
|
224
|
+
model=model_name,
|
|
225
|
+
project=config.gcp_project_id,
|
|
226
|
+
location=config.gcp_location,
|
|
227
|
+
timeout=config.request_timeout_seconds,
|
|
228
|
+
max_retries=config.max_retries,
|
|
229
|
+
callbacks=callbacks,
|
|
230
|
+
)
|
|
231
|
+
logger.debug(f"🤖 Created Vertex AI model: {model_name} (project={config.gcp_project_id})")
|
|
232
|
+
return model
|
|
233
|
+
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
from typing import Dict, Any
|
|
5
|
+
|
|
6
|
+
from .providers.config import ProviderConfig
|
|
7
|
+
|
|
8
|
+
# Default model for cloud deployments - Gemini 3 Flash via Vertex AI
|
|
9
|
+
# Note: Gemini 3 models require 'global' location (not regional like us-central1)
|
|
10
|
+
DEFAULT_CLOUD_MODEL = "vertexai/gemini-3-flash-preview"
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ModelRouter:
|
|
14
|
+
"""Rules-based routing by gap type/length/uncertainty (scaffold)."""
|
|
15
|
+
|
|
16
|
+
def __init__(self, config: ProviderConfig | None = None):
|
|
17
|
+
self._config = config or ProviderConfig.from_env()
|
|
18
|
+
|
|
19
|
+
def choose_model(self, gap_type: str, uncertainty: float) -> str:
|
|
20
|
+
"""Choose appropriate model based on gap characteristics.
|
|
21
|
+
|
|
22
|
+
Returns model identifier in format "provider/model" for LangChain:
|
|
23
|
+
- "vertexai/gemini-3-flash-preview" for Gemini via Vertex AI (default)
|
|
24
|
+
- "ollama/llama3.2:latest" for local Ollama models
|
|
25
|
+
- "openai/gpt-4" for OpenAI models
|
|
26
|
+
- "anthropic/claude-3-sonnet-20240229" for Anthropic models
|
|
27
|
+
"""
|
|
28
|
+
# Check for explicit model override from environment
|
|
29
|
+
env_model = os.getenv("AGENTIC_AI_MODEL")
|
|
30
|
+
if env_model:
|
|
31
|
+
return env_model
|
|
32
|
+
|
|
33
|
+
# Privacy mode: use local Ollama
|
|
34
|
+
if self._config.privacy_mode:
|
|
35
|
+
return "ollama/llama3.2:latest"
|
|
36
|
+
|
|
37
|
+
# Default to Gemini 3 Flash for all cases (fast, cost-effective, latest capabilities)
|
|
38
|
+
return DEFAULT_CLOUD_MODEL
|
|
39
|
+
|
|
40
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "karaoke-gen"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.81.5"
|
|
4
4
|
description = "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
|
authors = ["Andrew Beveridge <andrew@beveridge.uk>"]
|
|
6
6
|
license = "MIT"
|
|
@@ -66,6 +66,7 @@ langchain-core = ">=0.3.0"
|
|
|
66
66
|
langchain-openai = ">=0.2.0"
|
|
67
67
|
langchain-anthropic = ">=0.2.0"
|
|
68
68
|
langchain-ollama = ">=0.2.0"
|
|
69
|
+
langchain-google-vertexai = ">=3.1.1"
|
|
69
70
|
langfuse = ">=3.0.0"
|
|
70
71
|
jiwer = ">=3.0.0"
|
|
71
72
|
kbputils = "^0.0.16"
|
|
@@ -93,6 +94,10 @@ google-cloud-tasks = ">=2.16.0" # Cloud Tasks for worker coordination (Phase 1
|
|
|
93
94
|
google-cloud-run = ">=0.10.0" # Cloud Run Jobs for long-running video encoding (Phase 2 scalability)
|
|
94
95
|
python-dotenv = ">=1.0.0"
|
|
95
96
|
pydub = ">=0.25.1"
|
|
97
|
+
# Payment and email services
|
|
98
|
+
stripe = ">=7.0.0"
|
|
99
|
+
sendgrid = ">=6.10.0"
|
|
100
|
+
email-validator = ">=2.0.0" # For Pydantic EmailStr validation
|
|
96
101
|
# OpenTelemetry for distributed tracing
|
|
97
102
|
opentelemetry-api = ">=1.20.0"
|
|
98
103
|
opentelemetry-sdk = ">=1.20.0"
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import os
|
|
4
|
-
from typing import Dict, Any
|
|
5
|
-
|
|
6
|
-
from .providers.config import ProviderConfig
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class ModelRouter:
|
|
10
|
-
"""Rules-based routing by gap type/length/uncertainty (scaffold)."""
|
|
11
|
-
|
|
12
|
-
def __init__(self, config: ProviderConfig | None = None):
|
|
13
|
-
self._config = config or ProviderConfig.from_env()
|
|
14
|
-
|
|
15
|
-
def choose_model(self, gap_type: str, uncertainty: float) -> str:
|
|
16
|
-
"""Choose appropriate model based on gap characteristics.
|
|
17
|
-
|
|
18
|
-
Returns model identifier in format "provider/model" for LangChain:
|
|
19
|
-
- "ollama/gpt-oss:latest" for local Ollama models
|
|
20
|
-
- "openai/gpt-4" for OpenAI models
|
|
21
|
-
- "anthropic/claude-3-sonnet-20240229" for Anthropic models
|
|
22
|
-
"""
|
|
23
|
-
# Simple baseline per technical guidance
|
|
24
|
-
if self._config.privacy_mode:
|
|
25
|
-
# Use the actual model from env, or default to a common Ollama model
|
|
26
|
-
return os.getenv("AGENTIC_AI_MODEL", "ollama/gpt-oss:latest")
|
|
27
|
-
|
|
28
|
-
# For high-uncertainty gaps, use Claude (best reasoning)
|
|
29
|
-
if uncertainty > 0.5:
|
|
30
|
-
return "anthropic/claude-3-sonnet-20240229"
|
|
31
|
-
|
|
32
|
-
# Default to GPT-4 for general cases
|
|
33
|
-
return "openai/gpt-4"
|
|
34
|
-
|
|
35
|
-
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/instrumental_review/static/index.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/core/config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|