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.
Files changed (294) hide show
  1. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/PKG-INFO +5 -1
  2. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/config.py +7 -0
  3. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/langchain_bridge.py +22 -7
  4. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/model_factory.py +25 -1
  5. karaoke_gen-0.81.5/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/router.py +40 -0
  6. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/pyproject.toml +6 -1
  7. karaoke_gen-0.76.28/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/router.py +0 -35
  8. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/LICENSE +0 -0
  9. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/README.md +0 -0
  10. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/__init__.py +0 -0
  11. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/audio_fetcher.py +0 -0
  12. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/audio_processor.py +0 -0
  13. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/config.py +0 -0
  14. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/file_handler.py +0 -0
  15. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/instrumental_review/__init__.py +0 -0
  16. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/instrumental_review/analyzer.py +0 -0
  17. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/instrumental_review/editor.py +0 -0
  18. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/instrumental_review/models.py +0 -0
  19. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/instrumental_review/server.py +0 -0
  20. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/instrumental_review/static/index.html +0 -0
  21. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/instrumental_review/waveform.py +0 -0
  22. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/karaoke_finalise/__init__.py +0 -0
  23. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/karaoke_finalise/karaoke_finalise.py +0 -0
  24. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/karaoke_gen.py +0 -0
  25. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/lyrics_processor.py +0 -0
  26. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/metadata.py +0 -0
  27. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/__init__.py +0 -0
  28. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/base.py +0 -0
  29. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/context.py +0 -0
  30. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/executors/__init__.py +0 -0
  31. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/executors/local.py +0 -0
  32. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/executors/remote.py +0 -0
  33. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/stages/__init__.py +0 -0
  34. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/stages/finalize.py +0 -0
  35. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/stages/render.py +0 -0
  36. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/stages/screens.py +0 -0
  37. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/stages/separation.py +0 -0
  38. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/pipeline/stages/transcription.py +0 -0
  39. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/resources/AvenirNext-Bold.ttf +0 -0
  40. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/resources/Montserrat-Bold.ttf +0 -0
  41. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/resources/Oswald-Bold.ttf +0 -0
  42. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/resources/Oswald-SemiBold.ttf +0 -0
  43. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/resources/Zurich_Cn_BT_Bold.ttf +0 -0
  44. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/style_loader.py +0 -0
  45. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/utils/__init__.py +0 -0
  46. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/utils/bulk_cli.py +0 -0
  47. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/utils/cli_args.py +0 -0
  48. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/utils/gen_cli.py +0 -0
  49. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/utils/remote_cli.py +0 -0
  50. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/video_background_processor.py +0 -0
  51. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/karaoke_gen/video_generator.py +0 -0
  52. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/__init__.py +0 -0
  53. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/cli/__init__.py +0 -0
  54. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/cli/cli_main.py +0 -0
  55. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/core/__init__.py +0 -0
  56. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/core/config.py +0 -0
  57. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/core/controller.py +0 -0
  58. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/__init__.py +0 -0
  59. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/__init__.py +0 -0
  60. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/adapter.py +0 -0
  61. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/agent.py +0 -0
  62. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/aggregator.py +0 -0
  63. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/collector.py +0 -0
  64. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/retention.py +0 -0
  65. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/store.py +0 -0
  66. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/__init__.py +0 -0
  67. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/ambiguous.py +0 -0
  68. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/background_vocals.py +0 -0
  69. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/base.py +0 -0
  70. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/complex_multi_error.py +0 -0
  71. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/extra_words.py +0 -0
  72. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/no_error.py +0 -0
  73. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/punctuation.py +0 -0
  74. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/registry.py +0 -0
  75. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/repeated_section.py +0 -0
  76. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/sound_alike.py +0 -0
  77. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/__init__.py +0 -0
  78. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/ai_correction.py +0 -0
  79. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/correction_session.py +0 -0
  80. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/enums.py +0 -0
  81. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/human_feedback.py +0 -0
  82. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/learning_data.py +0 -0
  83. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/observability_metrics.py +0 -0
  84. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/schemas.py +0 -0
  85. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/utils.py +0 -0
  86. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/__init__.py +0 -0
  87. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/langfuse_integration.py +0 -0
  88. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/metrics.py +0 -0
  89. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/performance.py +0 -0
  90. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/prompts/__init__.py +0 -0
  91. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/prompts/classifier.py +0 -0
  92. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/__init__.py +0 -0
  93. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/base.py +0 -0
  94. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/circuit_breaker.py +0 -0
  95. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/constants.py +0 -0
  96. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/health.py +0 -0
  97. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/response_cache.py +0 -0
  98. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/response_parser.py +0 -0
  99. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/retry_executor.py +0 -0
  100. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/__init__.py +0 -0
  101. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/consensus_workflow.py +0 -0
  102. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/correction_graph.py +0 -0
  103. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/feedback_workflow.py +0 -0
  104. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/anchor_sequence.py +0 -0
  105. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/corrector.py +0 -0
  106. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/__init__.py +0 -0
  107. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/schemas.py +0 -0
  108. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/store.py +0 -0
  109. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/__init__.py +0 -0
  110. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/base.py +0 -0
  111. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/extend_anchor.py +0 -0
  112. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/levenshtein.py +0 -0
  113. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/llm.py +0 -0
  114. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/llm_providers.py +0 -0
  115. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/no_space_punct_match.py +0 -0
  116. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/relaxed_word_count_match.py +0 -0
  117. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/repeat.py +0 -0
  118. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/sound_alike.py +0 -0
  119. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/syllables_match.py +0 -0
  120. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/word_count_match.py +0 -0
  121. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/word_operations.py +0 -0
  122. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/operations.py +0 -0
  123. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/phrase_analyzer.py +0 -0
  124. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/correction/text_utils.py +0 -0
  125. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/.gitignore +0 -0
  126. {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
  127. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/.yarnrc.yml +0 -0
  128. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/README.md +0 -0
  129. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/REPLACE_ALL_FUNCTIONALITY.md +0 -0
  130. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/__init__.py +0 -0
  131. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/e2e/agentic-corrections.spec.ts +0 -0
  132. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/e2e/fixtures/agentic-correction-data.json +0 -0
  133. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/eslint.config.js +0 -0
  134. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/index.html +0 -0
  135. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/package-lock.json +0 -0
  136. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/package.json +0 -0
  137. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/playwright.config.ts +0 -0
  138. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/android-chrome-192x192.png +0 -0
  139. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/android-chrome-512x512.png +0 -0
  140. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/apple-touch-icon.png +0 -0
  141. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon-16x16.png +0 -0
  142. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon-32x32.png +0 -0
  143. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon.ico +0 -0
  144. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/nomad-karaoke-logo.png +0 -0
  145. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/nomad-karaoke-logo.svg +0 -0
  146. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/App.tsx +0 -0
  147. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/api.ts +0 -0
  148. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AIFeedbackModal.tsx +0 -0
  149. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AddLyricsModal.tsx +0 -0
  150. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AgenticCorrectionMetrics.tsx +0 -0
  151. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AppHeader.tsx +0 -0
  152. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AudioPlayer.tsx +0 -0
  153. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectedWordWithActions.tsx +0 -0
  154. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionAnnotationModal.tsx +0 -0
  155. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionDetailCard.tsx +0 -0
  156. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionMetrics.tsx +0 -0
  157. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/DurationTimelineView.tsx +0 -0
  158. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditActionBar.tsx +0 -0
  159. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditModal.tsx +0 -0
  160. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditTimelineSection.tsx +0 -0
  161. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditWordList.tsx +0 -0
  162. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/FileUpload.tsx +0 -0
  163. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/FindReplaceModal.tsx +0 -0
  164. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/Header.tsx +0 -0
  165. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx +0 -0
  166. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/SyncControls.tsx +0 -0
  167. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/TimelineCanvas.tsx +0 -0
  168. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/UpcomingWordsBar.tsx +0 -0
  169. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/index.tsx +0 -0
  170. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/MetricsDashboard.tsx +0 -0
  171. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModeSelectionModal.tsx +0 -0
  172. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModeSelector.tsx +0 -0
  173. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModelSelector.tsx +0 -0
  174. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/PreviewVideoSection.tsx +0 -0
  175. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReferenceView.tsx +0 -0
  176. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReplaceAllLyricsModal.tsx +0 -0
  177. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReviewChangesModal.tsx +0 -0
  178. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/SegmentDetailsModal.tsx +0 -0
  179. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TimelineEditor.tsx +0 -0
  180. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TimingOffsetModal.tsx +0 -0
  181. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TranscriptionView.tsx +0 -0
  182. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/WordDivider.tsx +0 -0
  183. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/HighlightedText.tsx +0 -0
  184. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/SourceSelector.tsx +0 -0
  185. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/Word.tsx +0 -0
  186. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/constants.ts +0 -0
  187. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/hooks/useWordClick.ts +0 -0
  188. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/styles.ts +0 -0
  189. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/types.js +0 -0
  190. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/types.ts +0 -0
  191. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/keyboardHandlers.ts +0 -0
  192. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/localStorage.ts +0 -0
  193. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/referenceLineCalculator.ts +0 -0
  194. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/segmentOperations.ts +0 -0
  195. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/timingUtils.ts +0 -0
  196. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/wordUtils.ts +0 -0
  197. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/hooks/useManualSync.ts +0 -0
  198. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/main.tsx +0 -0
  199. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/theme.ts +0 -0
  200. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types/global.d.ts +0 -0
  201. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types.js +0 -0
  202. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types.ts +0 -0
  203. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/validation.ts +0 -0
  204. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/vite-env.d.ts +0 -0
  205. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.app.json +0 -0
  206. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.json +0 -0
  207. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.node.json +0 -0
  208. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.tsbuildinfo +0 -0
  209. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/update_version.js +0 -0
  210. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.d.ts +0 -0
  211. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.js +0 -0
  212. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.ts +0 -0
  213. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/android-chrome-192x192.png +0 -0
  214. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/android-chrome-512x512.png +0 -0
  215. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/apple-touch-icon.png +0 -0
  216. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/assets/index-BECn1o8Q.js +0 -0
  217. {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
  218. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon-16x16.png +0 -0
  219. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon-32x32.png +0 -0
  220. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon.ico +0 -0
  221. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/index.html +0 -0
  222. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/nomad-karaoke-logo.png +0 -0
  223. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/frontend/yarn.lock +0 -0
  224. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/__init__.py +0 -0
  225. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/base_lyrics_provider.py +0 -0
  226. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/file_provider.py +0 -0
  227. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/genius.py +0 -0
  228. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/lrclib.py +0 -0
  229. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/musixmatch.py +0 -0
  230. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/spotify.py +0 -0
  231. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/user_input_provider.py +0 -0
  232. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/__init__.py +0 -0
  233. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/__init__.py +0 -0
  234. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/ass.py +0 -0
  235. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/ass_specs.txt +0 -0
  236. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/config.py +0 -0
  237. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/constants.py +0 -0
  238. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/event.py +0 -0
  239. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/formatters.py +0 -0
  240. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/lyrics_line.py +0 -0
  241. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/lyrics_screen.py +0 -0
  242. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/section_detector.py +0 -0
  243. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/section_screen.py +0 -0
  244. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/style.py +0 -0
  245. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdg.py +0 -0
  246. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/__init__.py +0 -0
  247. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/cdg.py +0 -0
  248. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/composer.py +0 -0
  249. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/config.py +0 -0
  250. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/images/instrumental.png +0 -0
  251. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/images/intro.png +0 -0
  252. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/pack.py +0 -0
  253. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/render.py +0 -0
  254. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/centertexttoplogobottomtext.png +0 -0
  255. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/circlein.png +0 -0
  256. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/circleout.png +0 -0
  257. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/fizzle.png +0 -0
  258. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/largecentertexttoplogo.png +0 -0
  259. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/rectangle.png +0 -0
  260. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/spiral.png +0 -0
  261. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/topleftmusicalnotes.png +0 -0
  262. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipein.png +0 -0
  263. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipeleft.png +0 -0
  264. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipeout.png +0 -0
  265. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wiperight.png +0 -0
  266. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/utils.py +0 -0
  267. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/countdown_processor.py +0 -0
  268. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/AvenirNext-Bold.ttf +0 -0
  269. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/DMSans-VariableFont_opsz,wght.ttf +0 -0
  270. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/DMSerifDisplay-Regular.ttf +0 -0
  271. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/Oswald-SemiBold.ttf +0 -0
  272. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/Zurich_Cn_BT_Bold.ttf +0 -0
  273. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/arial.ttf +0 -0
  274. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/georgia.ttf +0 -0
  275. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/verdana.ttf +0 -0
  276. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/generator.py +0 -0
  277. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/lrc_to_cdg.py +0 -0
  278. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/lyrics_file.py +0 -0
  279. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/plain_text.py +0 -0
  280. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/segment_resizer.py +0 -0
  281. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/subtitles.py +0 -0
  282. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/output/video.py +0 -0
  283. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/review/__init__.py +0 -0
  284. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/review/server.py +0 -0
  285. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/storage/__init__.py +0 -0
  286. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/storage/dropbox.py +0 -0
  287. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/__init__.py +0 -0
  288. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/audioshake.py +0 -0
  289. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/base_transcriber.py +0 -0
  290. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/local_whisper.py +0 -0
  291. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/whisper.py +0 -0
  292. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/types.py +0 -0
  293. {karaoke_gen-0.76.28 → karaoke_gen-0.81.5}/lyrics_transcriber_temp/lyrics_transcriber/utils/__init__.py +0 -0
  294. {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.76.28
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
- return response.content
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.76.28"
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