karaoke-gen 0.75.2__tar.gz → 0.76.26__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 (296) hide show
  1. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/PKG-INFO +181 -5
  2. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/README.md +176 -3
  3. karaoke_gen-0.76.26/karaoke_gen/audio_fetcher.py +1832 -0
  4. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/audio_processor.py +4 -0
  5. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/instrumental_review/static/index.html +216 -30
  6. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/karaoke_finalise/karaoke_finalise.py +25 -1
  7. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/karaoke_gen.py +209 -39
  8. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/lyrics_processor.py +130 -31
  9. karaoke_gen-0.76.26/karaoke_gen/utils/__init__.py +44 -0
  10. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/utils/cli_args.py +15 -6
  11. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/utils/gen_cli.py +40 -5
  12. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/utils/remote_cli.py +301 -20
  13. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/core/config.py +7 -0
  14. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/core/controller.py +118 -2
  15. {karaoke_gen-0.75.2/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets → karaoke_gen-0.76.26/lyrics_transcriber_temp/lyrics_transcriber/frontend}/index.html +6 -2
  16. karaoke_gen-0.76.26/lyrics_transcriber_temp/lyrics_transcriber/frontend/package-lock.json +4553 -0
  17. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/package.json +4 -1
  18. karaoke_gen-0.76.26/lyrics_transcriber_temp/lyrics_transcriber/frontend/playwright.config.ts +69 -0
  19. karaoke_gen-0.76.26/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/nomad-karaoke-logo.svg +5 -0
  20. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/App.tsx +94 -63
  21. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/api.ts +25 -10
  22. karaoke_gen-0.76.26/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AIFeedbackModal.tsx +111 -0
  23. karaoke_gen-0.76.26/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AppHeader.tsx +65 -0
  24. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectedWordWithActions.tsx +5 -5
  25. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/DurationTimelineView.tsx +9 -9
  26. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditModal.tsx +1 -1
  27. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditWordList.tsx +1 -1
  28. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/Header.tsx +49 -60
  29. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/TimelineCanvas.tsx +22 -21
  30. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReferenceView.tsx +1 -1
  31. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TranscriptionView.tsx +1 -1
  32. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/WordDivider.tsx +3 -3
  33. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/Word.tsx +2 -2
  34. karaoke_gen-0.76.26/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/constants.ts +30 -0
  35. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/main.tsx +1 -7
  36. karaoke_gen-0.76.26/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/theme.ts +379 -0
  37. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.ts +5 -0
  38. karaoke_gen-0.75.2/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/assets/index-COYImAcx.js → karaoke_gen-0.76.26/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/assets/index-BECn1o8Q.js +38 -22
  39. karaoke_gen-0.75.2/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/assets/index-COYImAcx.js.map → karaoke_gen-0.76.26/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/assets/index-BECn1o8Q.js.map +1 -1
  40. {karaoke_gen-0.75.2/lyrics_transcriber_temp/lyrics_transcriber/frontend → karaoke_gen-0.76.26/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets}/index.html +1 -1
  41. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/yarn.lock +1005 -1046
  42. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/countdown_processor.py +39 -0
  43. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/generator.py +50 -3
  44. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/review/server.py +1 -1
  45. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/audioshake.py +96 -7
  46. karaoke_gen-0.76.26/lyrics_transcriber_temp/lyrics_transcriber/transcribers/local_whisper.py +260 -0
  47. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/types.py +14 -12
  48. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/pyproject.toml +12 -2
  49. karaoke_gen-0.75.2/karaoke_gen/audio_fetcher.py +0 -881
  50. karaoke_gen-0.75.2/karaoke_gen/utils/__init__.py +0 -18
  51. karaoke_gen-0.75.2/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AIFeedbackModal.tsx +0 -77
  52. karaoke_gen-0.75.2/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/constants.ts +0 -20
  53. karaoke_gen-0.75.2/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/theme.ts +0 -177
  54. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/LICENSE +0 -0
  55. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/__init__.py +0 -0
  56. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/config.py +0 -0
  57. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/file_handler.py +0 -0
  58. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/instrumental_review/__init__.py +0 -0
  59. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/instrumental_review/analyzer.py +0 -0
  60. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/instrumental_review/editor.py +0 -0
  61. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/instrumental_review/models.py +0 -0
  62. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/instrumental_review/server.py +0 -0
  63. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/instrumental_review/waveform.py +0 -0
  64. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/karaoke_finalise/__init__.py +0 -0
  65. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/metadata.py +0 -0
  66. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/pipeline/__init__.py +0 -0
  67. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/pipeline/base.py +0 -0
  68. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/pipeline/context.py +0 -0
  69. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/pipeline/executors/__init__.py +0 -0
  70. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/pipeline/executors/local.py +0 -0
  71. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/pipeline/executors/remote.py +0 -0
  72. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/pipeline/stages/__init__.py +0 -0
  73. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/pipeline/stages/finalize.py +0 -0
  74. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/pipeline/stages/render.py +0 -0
  75. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/pipeline/stages/screens.py +0 -0
  76. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/pipeline/stages/separation.py +0 -0
  77. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/pipeline/stages/transcription.py +0 -0
  78. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/resources/AvenirNext-Bold.ttf +0 -0
  79. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/resources/Montserrat-Bold.ttf +0 -0
  80. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/resources/Oswald-Bold.ttf +0 -0
  81. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/resources/Oswald-SemiBold.ttf +0 -0
  82. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/resources/Zurich_Cn_BT_Bold.ttf +0 -0
  83. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/style_loader.py +0 -0
  84. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/utils/bulk_cli.py +0 -0
  85. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/video_background_processor.py +0 -0
  86. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/karaoke_gen/video_generator.py +0 -0
  87. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/__init__.py +0 -0
  88. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/cli/__init__.py +0 -0
  89. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/cli/cli_main.py +0 -0
  90. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/core/__init__.py +0 -0
  91. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/__init__.py +0 -0
  92. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/__init__.py +0 -0
  93. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/adapter.py +0 -0
  94. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/agent.py +0 -0
  95. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/aggregator.py +0 -0
  96. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/collector.py +0 -0
  97. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/retention.py +0 -0
  98. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/store.py +0 -0
  99. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/__init__.py +0 -0
  100. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/ambiguous.py +0 -0
  101. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/background_vocals.py +0 -0
  102. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/base.py +0 -0
  103. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/complex_multi_error.py +0 -0
  104. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/extra_words.py +0 -0
  105. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/no_error.py +0 -0
  106. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/punctuation.py +0 -0
  107. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/registry.py +0 -0
  108. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/repeated_section.py +0 -0
  109. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/sound_alike.py +0 -0
  110. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/__init__.py +0 -0
  111. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/ai_correction.py +0 -0
  112. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/correction_session.py +0 -0
  113. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/enums.py +0 -0
  114. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/human_feedback.py +0 -0
  115. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/learning_data.py +0 -0
  116. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/observability_metrics.py +0 -0
  117. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/schemas.py +0 -0
  118. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/utils.py +0 -0
  119. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/__init__.py +0 -0
  120. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/langfuse_integration.py +0 -0
  121. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/metrics.py +0 -0
  122. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/performance.py +0 -0
  123. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/prompts/__init__.py +0 -0
  124. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/prompts/classifier.py +0 -0
  125. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/__init__.py +0 -0
  126. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/base.py +0 -0
  127. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/circuit_breaker.py +0 -0
  128. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/config.py +0 -0
  129. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/constants.py +0 -0
  130. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/health.py +0 -0
  131. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/langchain_bridge.py +0 -0
  132. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/model_factory.py +0 -0
  133. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/response_cache.py +0 -0
  134. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/response_parser.py +0 -0
  135. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/retry_executor.py +0 -0
  136. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/router.py +0 -0
  137. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/__init__.py +0 -0
  138. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/consensus_workflow.py +0 -0
  139. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/correction_graph.py +0 -0
  140. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/feedback_workflow.py +0 -0
  141. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/anchor_sequence.py +0 -0
  142. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/corrector.py +0 -0
  143. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/__init__.py +0 -0
  144. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/schemas.py +0 -0
  145. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/store.py +0 -0
  146. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/__init__.py +0 -0
  147. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/base.py +0 -0
  148. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/extend_anchor.py +0 -0
  149. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/levenshtein.py +0 -0
  150. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/llm.py +0 -0
  151. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/llm_providers.py +0 -0
  152. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/no_space_punct_match.py +0 -0
  153. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/relaxed_word_count_match.py +0 -0
  154. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/repeat.py +0 -0
  155. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/sound_alike.py +0 -0
  156. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/syllables_match.py +0 -0
  157. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/word_count_match.py +0 -0
  158. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/word_operations.py +0 -0
  159. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/operations.py +0 -0
  160. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/phrase_analyzer.py +0 -0
  161. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/correction/text_utils.py +0 -0
  162. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/.gitignore +0 -0
  163. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/.yarn/releases/yarn-4.7.0.cjs +0 -0
  164. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/.yarnrc.yml +0 -0
  165. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/README.md +0 -0
  166. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/REPLACE_ALL_FUNCTIONALITY.md +0 -0
  167. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/__init__.py +0 -0
  168. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/eslint.config.js +0 -0
  169. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/android-chrome-192x192.png +0 -0
  170. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/android-chrome-512x512.png +0 -0
  171. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/apple-touch-icon.png +0 -0
  172. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon-16x16.png +0 -0
  173. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon-32x32.png +0 -0
  174. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon.ico +0 -0
  175. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/nomad-karaoke-logo.png +0 -0
  176. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AddLyricsModal.tsx +0 -0
  177. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AgenticCorrectionMetrics.tsx +0 -0
  178. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AudioPlayer.tsx +0 -0
  179. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionAnnotationModal.tsx +0 -0
  180. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionDetailCard.tsx +0 -0
  181. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionMetrics.tsx +0 -0
  182. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditActionBar.tsx +0 -0
  183. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditTimelineSection.tsx +0 -0
  184. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/FileUpload.tsx +0 -0
  185. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/FindReplaceModal.tsx +0 -0
  186. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx +0 -0
  187. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/SyncControls.tsx +0 -0
  188. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/UpcomingWordsBar.tsx +0 -0
  189. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/index.tsx +0 -0
  190. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/MetricsDashboard.tsx +0 -0
  191. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModeSelectionModal.tsx +0 -0
  192. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModeSelector.tsx +0 -0
  193. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModelSelector.tsx +0 -0
  194. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/PreviewVideoSection.tsx +0 -0
  195. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReplaceAllLyricsModal.tsx +0 -0
  196. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReviewChangesModal.tsx +0 -0
  197. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/SegmentDetailsModal.tsx +0 -0
  198. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TimelineEditor.tsx +0 -0
  199. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TimingOffsetModal.tsx +0 -0
  200. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/HighlightedText.tsx +0 -0
  201. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/SourceSelector.tsx +0 -0
  202. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/hooks/useWordClick.ts +0 -0
  203. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/styles.ts +0 -0
  204. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/types.js +0 -0
  205. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/types.ts +0 -0
  206. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/keyboardHandlers.ts +0 -0
  207. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/localStorage.ts +0 -0
  208. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/referenceLineCalculator.ts +0 -0
  209. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/segmentOperations.ts +0 -0
  210. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/timingUtils.ts +0 -0
  211. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/wordUtils.ts +0 -0
  212. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/hooks/useManualSync.ts +0 -0
  213. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types/global.d.ts +0 -0
  214. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types.js +0 -0
  215. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types.ts +0 -0
  216. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/validation.ts +0 -0
  217. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/vite-env.d.ts +0 -0
  218. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.app.json +0 -0
  219. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.json +0 -0
  220. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.node.json +0 -0
  221. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.tsbuildinfo +0 -0
  222. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/update_version.js +0 -0
  223. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.d.ts +0 -0
  224. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.js +0 -0
  225. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/android-chrome-192x192.png +0 -0
  226. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/android-chrome-512x512.png +0 -0
  227. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/apple-touch-icon.png +0 -0
  228. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon-16x16.png +0 -0
  229. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon-32x32.png +0 -0
  230. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon.ico +0 -0
  231. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/nomad-karaoke-logo.png +0 -0
  232. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/__init__.py +0 -0
  233. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/base_lyrics_provider.py +0 -0
  234. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/file_provider.py +0 -0
  235. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/genius.py +0 -0
  236. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/lrclib.py +0 -0
  237. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/musixmatch.py +0 -0
  238. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/spotify.py +0 -0
  239. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/user_input_provider.py +0 -0
  240. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/__init__.py +0 -0
  241. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/__init__.py +0 -0
  242. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/ass.py +0 -0
  243. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/ass_specs.txt +0 -0
  244. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/config.py +0 -0
  245. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/constants.py +0 -0
  246. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/event.py +0 -0
  247. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/formatters.py +0 -0
  248. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/lyrics_line.py +0 -0
  249. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/lyrics_screen.py +0 -0
  250. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/section_detector.py +0 -0
  251. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/section_screen.py +0 -0
  252. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/style.py +0 -0
  253. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdg.py +0 -0
  254. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/__init__.py +0 -0
  255. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/cdg.py +0 -0
  256. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/composer.py +0 -0
  257. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/config.py +0 -0
  258. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/images/instrumental.png +0 -0
  259. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/images/intro.png +0 -0
  260. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/pack.py +0 -0
  261. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/render.py +0 -0
  262. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/centertexttoplogobottomtext.png +0 -0
  263. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/circlein.png +0 -0
  264. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/circleout.png +0 -0
  265. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/fizzle.png +0 -0
  266. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/largecentertexttoplogo.png +0 -0
  267. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/rectangle.png +0 -0
  268. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/spiral.png +0 -0
  269. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/topleftmusicalnotes.png +0 -0
  270. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipein.png +0 -0
  271. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipeleft.png +0 -0
  272. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipeout.png +0 -0
  273. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wiperight.png +0 -0
  274. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/utils.py +0 -0
  275. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/AvenirNext-Bold.ttf +0 -0
  276. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/DMSans-VariableFont_opsz,wght.ttf +0 -0
  277. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/DMSerifDisplay-Regular.ttf +0 -0
  278. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/Oswald-SemiBold.ttf +0 -0
  279. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/Zurich_Cn_BT_Bold.ttf +0 -0
  280. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/arial.ttf +0 -0
  281. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/georgia.ttf +0 -0
  282. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/verdana.ttf +0 -0
  283. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/lrc_to_cdg.py +0 -0
  284. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/lyrics_file.py +0 -0
  285. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/plain_text.py +0 -0
  286. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/segment_resizer.py +0 -0
  287. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/subtitles.py +0 -0
  288. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/output/video.py +0 -0
  289. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/review/__init__.py +0 -0
  290. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/storage/__init__.py +0 -0
  291. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/storage/dropbox.py +0 -0
  292. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/__init__.py +0 -0
  293. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/base_transcriber.py +0 -0
  294. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/whisper.py +0 -0
  295. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/lyrics_transcriber_temp/lyrics_transcriber/utils/__init__.py +0 -0
  296. {karaoke_gen-0.75.2 → karaoke_gen-0.76.26}/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.75.2
3
+ Version: 0.76.26
4
4
  Summary: Generate karaoke videos with synchronized lyrics. Handles the entire process from downloading audio and lyrics to creating the final video with title screens.
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -13,6 +13,7 @@ Classifier: Programming Language :: Python :: 3.10
13
13
  Classifier: Programming Language :: Python :: 3.11
14
14
  Classifier: Programming Language :: Python :: 3.12
15
15
  Classifier: Programming Language :: Python :: 3.13
16
+ Provides-Extra: local-whisper
16
17
  Requires-Dist: argparse (>=1.4.0)
17
18
  Requires-Dist: attrs (>=24.2.0)
18
19
  Requires-Dist: audio-separator[cpu] (>=0.34.0)
@@ -22,7 +23,7 @@ Requires-Dist: dropbox (>=12)
22
23
  Requires-Dist: fastapi (>=0.104.0)
23
24
  Requires-Dist: fetch-lyrics-from-genius (>=0.1)
24
25
  Requires-Dist: ffmpeg-python (>=0.2.0,<0.3.0)
25
- Requires-Dist: flacfetch (>=0.3)
26
+ Requires-Dist: flacfetch (>=0.9.0)
26
27
  Requires-Dist: fonttools (>=4.55)
27
28
  Requires-Dist: google-api-python-client
28
29
  Requires-Dist: google-auth
@@ -48,6 +49,7 @@ Requires-Dist: lyrics-converter (>=0.2.1)
48
49
  Requires-Dist: lyricsgenius (>=3)
49
50
  Requires-Dist: matplotlib (>=3)
50
51
  Requires-Dist: metaphone (>=0.6)
52
+ Requires-Dist: mutagen (>=1.47)
51
53
  Requires-Dist: nest-asyncio (>=1.5)
52
54
  Requires-Dist: nltk (>=3.9)
53
55
  Requires-Dist: numpy (>=2)
@@ -85,6 +87,7 @@ Requires-Dist: torch (>=2.7)
85
87
  Requires-Dist: tqdm (>=4.67)
86
88
  Requires-Dist: transformers (>=4.47)
87
89
  Requires-Dist: uvicorn[standard] (>=0.24.0)
90
+ Requires-Dist: whisper-timestamped (>=1.15.0) ; extra == "local-whisper"
88
91
  Requires-Dist: yt-dlp (>=2024.0.0)
89
92
  Project-URL: Documentation, https://github.com/nomadkaraoke/karaoke-gen/blob/main/README.md
90
93
  Project-URL: Homepage, https://github.com/nomadkaraoke/karaoke-gen
@@ -94,7 +97,7 @@ Description-Content-Type: text/markdown
94
97
  # Karaoke Generator 🎶 🎥 🚀
95
98
 
96
99
  ![PyPI - Version](https://img.shields.io/pypi/v/karaoke-gen)
97
- ![Python Version](https://img.shields.io/badge/python-3.10+-blue)
100
+ ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/karaoke-gen)
98
101
  ![Tests](https://github.com/nomadkaraoke/karaoke-gen/workflows/Test%20and%20Publish/badge.svg)
99
102
  ![Test Coverage](https://codecov.io/gh/nomadkaraoke/karaoke-gen/branch/main/graph/badge.svg)
100
103
 
@@ -147,10 +150,76 @@ pip install karaoke-gen
147
150
  This installs both `karaoke-gen` (local) and `karaoke-gen-remote` (cloud) CLIs.
148
151
 
149
152
  ### Requirements
150
- - Python 3.10+
153
+ - Python 3.10-3.13
151
154
  - FFmpeg
152
155
  - For local processing: CUDA-capable GPU or Apple Silicon CPU recommended
153
156
 
157
+ ### Transcription Provider Setup
158
+
159
+ **Transcription is required** for creating karaoke videos with synchronized lyrics. The system needs word-level timing data to display lyrics in sync with the music.
160
+
161
+ #### Option 1: AudioShake (Recommended)
162
+ Commercial service with high-quality transcription. Best for production use.
163
+
164
+ ```bash
165
+ export AUDIOSHAKE_API_TOKEN="your_audioshake_token"
166
+ ```
167
+
168
+ Get an API key at [https://www.audioshake.ai/](https://www.audioshake.ai/) - business only, at time of writing this.
169
+
170
+ #### Option 2: Local Whisper (No Cloud Required)
171
+ Run Whisper directly on your local machine using whisper-timestamped. Works on CPU, NVIDIA GPU (CUDA), or Apple Silicon.
172
+
173
+ ```bash
174
+ # Install with local Whisper support
175
+ pip install "karaoke-gen[local-whisper]"
176
+
177
+ # Optional: Configure model size (tiny, base, small, medium, large)
178
+ export WHISPER_MODEL_SIZE="medium"
179
+
180
+ # Optional: Force specific device (cpu, cuda, mps)
181
+ export WHISPER_DEVICE="cpu"
182
+ ```
183
+
184
+ **Model Size Guide:**
185
+ | Model | VRAM | Speed | Quality |
186
+ |-------|------|-------|---------|
187
+ | tiny | ~1GB | Fast | Lower |
188
+ | base | ~1GB | Fast | Basic |
189
+ | small | ~2GB | Medium | Good |
190
+ | medium | ~5GB | Slower | Better |
191
+ | large | ~10GB | Slowest | Best |
192
+
193
+ **CPU-Only Installation** (no GPU required):
194
+ ```bash
195
+ # Pre-install CPU-only PyTorch first
196
+ pip install torch torchaudio --index-url https://download.pytorch.org/whl/cpu
197
+ pip install "karaoke-gen[local-whisper]"
198
+ ```
199
+
200
+ Local Whisper runs automatically as a fallback when no cloud transcription services are configured.
201
+
202
+ #### Option 3: Whisper via RunPod
203
+ Cloud-based alternative using OpenAI's Whisper model on RunPod infrastructure.
204
+
205
+ ```bash
206
+ export RUNPOD_API_KEY="your_runpod_key"
207
+ export WHISPER_RUNPOD_ID="your_whisper_endpoint_id"
208
+ ```
209
+
210
+ Set up a Whisper endpoint at [https://www.runpod.io/](https://www.runpod.io/)
211
+
212
+ #### Without Transcription (Instrumental Only)
213
+ If you don't need synchronized lyrics, use the `--skip-lyrics` flag:
214
+
215
+ ```bash
216
+ karaoke-gen --skip-lyrics "Artist" "Title"
217
+ ```
218
+
219
+ This creates an instrumental-only karaoke video without lyrics overlay.
220
+
221
+ > **Note:** See `lyrics_transcriber_temp/README.md` for detailed transcription provider configuration options.
222
+
154
223
  ---
155
224
 
156
225
  ## 🖥️ Local CLI (`karaoke-gen`)
@@ -273,9 +342,11 @@ karaoke-gen-remote \
273
342
  |----------|-------------|---------|
274
343
  | `KARAOKE_GEN_URL` | Backend service URL | Required |
275
344
  | `KARAOKE_GEN_AUTH_TOKEN` | Admin auth token (for protected endpoints) | Optional |
276
- | `REVIEW_UI_URL` | Lyrics review UI URL | `https://lyrics.nomadkaraoke.com` |
345
+ | `REVIEW_UI_URL` | Lyrics review UI URL | `https://gen.nomadkaraoke.com/lyrics/` |
277
346
  | `POLL_INTERVAL` | Seconds between status polls | `5` |
278
347
 
348
+ **Note:** The `REVIEW_UI_URL` defaults to the hosted lyrics review UI. For local development, set it to `http://localhost:5173` if you're running the frontend dev server.
349
+
279
350
  ### Authentication
280
351
 
281
352
  The backend uses token-based authentication for admin operations (bulk delete, internal worker triggers). For basic job submission and monitoring, authentication is optional.
@@ -566,6 +637,111 @@ Check backend health status.
566
637
 
567
638
  ---
568
639
 
640
+ ## 🔧 Troubleshooting
641
+
642
+ ### "No suitable files found for processing"
643
+
644
+ This error occurs during the finalisation step when the `(With Vocals).mkv` file is missing. This file is created during lyrics transcription.
645
+
646
+ **Most common cause:** No transcription provider configured.
647
+
648
+ **Quick fix:**
649
+ 1. Check if transcription providers are configured:
650
+ ```bash
651
+ echo $AUDIOSHAKE_API_TOKEN
652
+ echo $RUNPOD_API_KEY
653
+ ```
654
+
655
+ 2. If both are empty, set up a provider (see [Transcription Provider Setup](#transcription-provider-setup))
656
+
657
+ 3. Or use `--skip-lyrics` for instrumental-only karaoke:
658
+ ```bash
659
+ karaoke-gen --skip-lyrics "Artist" "Title"
660
+ ```
661
+
662
+ **Other causes:**
663
+ - Invalid API credentials - verify your tokens are correct and active
664
+ - API service unavailable - check service status pages
665
+ - Network connectivity issues - ensure you can reach the API endpoints
666
+ - Transcription timeout - try again or use a different provider
667
+
668
+ ### Transcription Fails Silently
669
+
670
+ If karaoke-gen runs without errors but produces no synchronized lyrics:
671
+
672
+ 1. **Check logs** - Run with `--log_level debug` for detailed output:
673
+ ```bash
674
+ karaoke-gen --log_level debug "Artist" "Title"
675
+ ```
676
+
677
+ 2. **Verify environment variables** - Ensure API tokens are exported in your shell:
678
+ ```bash
679
+ # Check if set
680
+ printenv | grep -E "(AUDIOSHAKE|RUNPOD|WHISPER)"
681
+
682
+ # Set in current session
683
+ export AUDIOSHAKE_API_TOKEN="your_token"
684
+ ```
685
+
686
+ 3. **Test API connectivity** - Verify you can reach the transcription service
687
+
688
+ ### "No lyrics found from any source"
689
+
690
+ This warning means no reference lyrics were fetched from online sources (Genius, Spotify, Musixmatch). The transcription will still work, but auto-correction may be less accurate.
691
+
692
+ **To fix:**
693
+ - Set `GENIUS_API_TOKEN` for Genius lyrics
694
+ - Set `SPOTIFY_COOKIE_SP_DC` for Spotify lyrics
695
+ - Set `RAPIDAPI_KEY` for Musixmatch lyrics
696
+ - Or provide lyrics manually with `--lyrics_file /path/to/lyrics.txt`
697
+
698
+ ### Video Quality Issues
699
+
700
+ If the output video has quality problems:
701
+ - Ensure FFmpeg is properly installed: `ffmpeg -version`
702
+ - Check available codecs: `ffmpeg -codecs`
703
+ - For 4K output, ensure sufficient disk space (10GB+ per track)
704
+
705
+ ### Local Whisper Issues
706
+
707
+ #### GPU Out of Memory
708
+ If you get CUDA out of memory errors:
709
+ ```bash
710
+ # Use a smaller model
711
+ export WHISPER_MODEL_SIZE="small" # or "tiny"
712
+
713
+ # Or force CPU mode
714
+ export WHISPER_DEVICE="cpu"
715
+ ```
716
+
717
+ #### Slow Transcription on CPU
718
+ CPU transcription is significantly slower than GPU. For faster processing:
719
+ - Use a smaller model (`tiny` or `base`)
720
+ - Consider using cloud transcription (AudioShake or RunPod)
721
+ - On Apple Silicon, the `small` model offers good speed/quality balance
722
+
723
+ #### Model Download Issues
724
+ Whisper models are downloaded on first use (~1-3GB depending on size). If downloads fail:
725
+ - Check your internet connection
726
+ - Set a custom cache directory: `export WHISPER_CACHE_DIR="/path/with/space"`
727
+ - Models are cached in `~/.cache/whisper/` by default
728
+
729
+ #### whisper-timestamped Not Found
730
+ If you get "whisper-timestamped is not installed":
731
+ ```bash
732
+ pip install "karaoke-gen[local-whisper]"
733
+ # Or install directly:
734
+ pip install whisper-timestamped
735
+ ```
736
+
737
+ #### Disabling Local Whisper
738
+ If you want to disable local Whisper (e.g., to force cloud transcription):
739
+ ```bash
740
+ export ENABLE_LOCAL_WHISPER="false"
741
+ ```
742
+
743
+ ---
744
+
569
745
  ## 🧪 Development
570
746
 
571
747
  ### Running Tests
@@ -1,7 +1,7 @@
1
1
  # Karaoke Generator 🎶 🎥 🚀
2
2
 
3
3
  ![PyPI - Version](https://img.shields.io/pypi/v/karaoke-gen)
4
- ![Python Version](https://img.shields.io/badge/python-3.10+-blue)
4
+ ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/karaoke-gen)
5
5
  ![Tests](https://github.com/nomadkaraoke/karaoke-gen/workflows/Test%20and%20Publish/badge.svg)
6
6
  ![Test Coverage](https://codecov.io/gh/nomadkaraoke/karaoke-gen/branch/main/graph/badge.svg)
7
7
 
@@ -54,10 +54,76 @@ pip install karaoke-gen
54
54
  This installs both `karaoke-gen` (local) and `karaoke-gen-remote` (cloud) CLIs.
55
55
 
56
56
  ### Requirements
57
- - Python 3.10+
57
+ - Python 3.10-3.13
58
58
  - FFmpeg
59
59
  - For local processing: CUDA-capable GPU or Apple Silicon CPU recommended
60
60
 
61
+ ### Transcription Provider Setup
62
+
63
+ **Transcription is required** for creating karaoke videos with synchronized lyrics. The system needs word-level timing data to display lyrics in sync with the music.
64
+
65
+ #### Option 1: AudioShake (Recommended)
66
+ Commercial service with high-quality transcription. Best for production use.
67
+
68
+ ```bash
69
+ export AUDIOSHAKE_API_TOKEN="your_audioshake_token"
70
+ ```
71
+
72
+ Get an API key at [https://www.audioshake.ai/](https://www.audioshake.ai/) - business only, at time of writing this.
73
+
74
+ #### Option 2: Local Whisper (No Cloud Required)
75
+ Run Whisper directly on your local machine using whisper-timestamped. Works on CPU, NVIDIA GPU (CUDA), or Apple Silicon.
76
+
77
+ ```bash
78
+ # Install with local Whisper support
79
+ pip install "karaoke-gen[local-whisper]"
80
+
81
+ # Optional: Configure model size (tiny, base, small, medium, large)
82
+ export WHISPER_MODEL_SIZE="medium"
83
+
84
+ # Optional: Force specific device (cpu, cuda, mps)
85
+ export WHISPER_DEVICE="cpu"
86
+ ```
87
+
88
+ **Model Size Guide:**
89
+ | Model | VRAM | Speed | Quality |
90
+ |-------|------|-------|---------|
91
+ | tiny | ~1GB | Fast | Lower |
92
+ | base | ~1GB | Fast | Basic |
93
+ | small | ~2GB | Medium | Good |
94
+ | medium | ~5GB | Slower | Better |
95
+ | large | ~10GB | Slowest | Best |
96
+
97
+ **CPU-Only Installation** (no GPU required):
98
+ ```bash
99
+ # Pre-install CPU-only PyTorch first
100
+ pip install torch torchaudio --index-url https://download.pytorch.org/whl/cpu
101
+ pip install "karaoke-gen[local-whisper]"
102
+ ```
103
+
104
+ Local Whisper runs automatically as a fallback when no cloud transcription services are configured.
105
+
106
+ #### Option 3: Whisper via RunPod
107
+ Cloud-based alternative using OpenAI's Whisper model on RunPod infrastructure.
108
+
109
+ ```bash
110
+ export RUNPOD_API_KEY="your_runpod_key"
111
+ export WHISPER_RUNPOD_ID="your_whisper_endpoint_id"
112
+ ```
113
+
114
+ Set up a Whisper endpoint at [https://www.runpod.io/](https://www.runpod.io/)
115
+
116
+ #### Without Transcription (Instrumental Only)
117
+ If you don't need synchronized lyrics, use the `--skip-lyrics` flag:
118
+
119
+ ```bash
120
+ karaoke-gen --skip-lyrics "Artist" "Title"
121
+ ```
122
+
123
+ This creates an instrumental-only karaoke video without lyrics overlay.
124
+
125
+ > **Note:** See `lyrics_transcriber_temp/README.md` for detailed transcription provider configuration options.
126
+
61
127
  ---
62
128
 
63
129
  ## 🖥️ Local CLI (`karaoke-gen`)
@@ -180,9 +246,11 @@ karaoke-gen-remote \
180
246
  |----------|-------------|---------|
181
247
  | `KARAOKE_GEN_URL` | Backend service URL | Required |
182
248
  | `KARAOKE_GEN_AUTH_TOKEN` | Admin auth token (for protected endpoints) | Optional |
183
- | `REVIEW_UI_URL` | Lyrics review UI URL | `https://lyrics.nomadkaraoke.com` |
249
+ | `REVIEW_UI_URL` | Lyrics review UI URL | `https://gen.nomadkaraoke.com/lyrics/` |
184
250
  | `POLL_INTERVAL` | Seconds between status polls | `5` |
185
251
 
252
+ **Note:** The `REVIEW_UI_URL` defaults to the hosted lyrics review UI. For local development, set it to `http://localhost:5173` if you're running the frontend dev server.
253
+
186
254
  ### Authentication
187
255
 
188
256
  The backend uses token-based authentication for admin operations (bulk delete, internal worker triggers). For basic job submission and monitoring, authentication is optional.
@@ -473,6 +541,111 @@ Check backend health status.
473
541
 
474
542
  ---
475
543
 
544
+ ## 🔧 Troubleshooting
545
+
546
+ ### "No suitable files found for processing"
547
+
548
+ This error occurs during the finalisation step when the `(With Vocals).mkv` file is missing. This file is created during lyrics transcription.
549
+
550
+ **Most common cause:** No transcription provider configured.
551
+
552
+ **Quick fix:**
553
+ 1. Check if transcription providers are configured:
554
+ ```bash
555
+ echo $AUDIOSHAKE_API_TOKEN
556
+ echo $RUNPOD_API_KEY
557
+ ```
558
+
559
+ 2. If both are empty, set up a provider (see [Transcription Provider Setup](#transcription-provider-setup))
560
+
561
+ 3. Or use `--skip-lyrics` for instrumental-only karaoke:
562
+ ```bash
563
+ karaoke-gen --skip-lyrics "Artist" "Title"
564
+ ```
565
+
566
+ **Other causes:**
567
+ - Invalid API credentials - verify your tokens are correct and active
568
+ - API service unavailable - check service status pages
569
+ - Network connectivity issues - ensure you can reach the API endpoints
570
+ - Transcription timeout - try again or use a different provider
571
+
572
+ ### Transcription Fails Silently
573
+
574
+ If karaoke-gen runs without errors but produces no synchronized lyrics:
575
+
576
+ 1. **Check logs** - Run with `--log_level debug` for detailed output:
577
+ ```bash
578
+ karaoke-gen --log_level debug "Artist" "Title"
579
+ ```
580
+
581
+ 2. **Verify environment variables** - Ensure API tokens are exported in your shell:
582
+ ```bash
583
+ # Check if set
584
+ printenv | grep -E "(AUDIOSHAKE|RUNPOD|WHISPER)"
585
+
586
+ # Set in current session
587
+ export AUDIOSHAKE_API_TOKEN="your_token"
588
+ ```
589
+
590
+ 3. **Test API connectivity** - Verify you can reach the transcription service
591
+
592
+ ### "No lyrics found from any source"
593
+
594
+ This warning means no reference lyrics were fetched from online sources (Genius, Spotify, Musixmatch). The transcription will still work, but auto-correction may be less accurate.
595
+
596
+ **To fix:**
597
+ - Set `GENIUS_API_TOKEN` for Genius lyrics
598
+ - Set `SPOTIFY_COOKIE_SP_DC` for Spotify lyrics
599
+ - Set `RAPIDAPI_KEY` for Musixmatch lyrics
600
+ - Or provide lyrics manually with `--lyrics_file /path/to/lyrics.txt`
601
+
602
+ ### Video Quality Issues
603
+
604
+ If the output video has quality problems:
605
+ - Ensure FFmpeg is properly installed: `ffmpeg -version`
606
+ - Check available codecs: `ffmpeg -codecs`
607
+ - For 4K output, ensure sufficient disk space (10GB+ per track)
608
+
609
+ ### Local Whisper Issues
610
+
611
+ #### GPU Out of Memory
612
+ If you get CUDA out of memory errors:
613
+ ```bash
614
+ # Use a smaller model
615
+ export WHISPER_MODEL_SIZE="small" # or "tiny"
616
+
617
+ # Or force CPU mode
618
+ export WHISPER_DEVICE="cpu"
619
+ ```
620
+
621
+ #### Slow Transcription on CPU
622
+ CPU transcription is significantly slower than GPU. For faster processing:
623
+ - Use a smaller model (`tiny` or `base`)
624
+ - Consider using cloud transcription (AudioShake or RunPod)
625
+ - On Apple Silicon, the `small` model offers good speed/quality balance
626
+
627
+ #### Model Download Issues
628
+ Whisper models are downloaded on first use (~1-3GB depending on size). If downloads fail:
629
+ - Check your internet connection
630
+ - Set a custom cache directory: `export WHISPER_CACHE_DIR="/path/with/space"`
631
+ - Models are cached in `~/.cache/whisper/` by default
632
+
633
+ #### whisper-timestamped Not Found
634
+ If you get "whisper-timestamped is not installed":
635
+ ```bash
636
+ pip install "karaoke-gen[local-whisper]"
637
+ # Or install directly:
638
+ pip install whisper-timestamped
639
+ ```
640
+
641
+ #### Disabling Local Whisper
642
+ If you want to disable local Whisper (e.g., to force cloud transcription):
643
+ ```bash
644
+ export ENABLE_LOCAL_WHISPER="false"
645
+ ```
646
+
647
+ ---
648
+
476
649
  ## 🧪 Development
477
650
 
478
651
  ### Running Tests