karaoke-gen 0.75.16__py3-none-any.whl → 0.76.20__py3-none-any.whl

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 (47) hide show
  1. karaoke_gen/audio_fetcher.py +984 -33
  2. karaoke_gen/audio_processor.py +4 -0
  3. karaoke_gen/instrumental_review/static/index.html +37 -14
  4. karaoke_gen/karaoke_finalise/karaoke_finalise.py +25 -1
  5. karaoke_gen/karaoke_gen.py +208 -39
  6. karaoke_gen/lyrics_processor.py +111 -31
  7. karaoke_gen/utils/__init__.py +26 -0
  8. karaoke_gen/utils/cli_args.py +15 -6
  9. karaoke_gen/utils/gen_cli.py +30 -5
  10. karaoke_gen/utils/remote_cli.py +301 -20
  11. {karaoke_gen-0.75.16.dist-info → karaoke_gen-0.76.20.dist-info}/METADATA +107 -5
  12. {karaoke_gen-0.75.16.dist-info → karaoke_gen-0.76.20.dist-info}/RECORD +47 -43
  13. lyrics_transcriber/core/controller.py +76 -2
  14. lyrics_transcriber/frontend/index.html +5 -1
  15. lyrics_transcriber/frontend/package-lock.json +4553 -0
  16. lyrics_transcriber/frontend/package.json +4 -1
  17. lyrics_transcriber/frontend/playwright.config.ts +69 -0
  18. lyrics_transcriber/frontend/public/nomad-karaoke-logo.svg +5 -0
  19. lyrics_transcriber/frontend/src/App.tsx +94 -63
  20. lyrics_transcriber/frontend/src/api.ts +25 -10
  21. lyrics_transcriber/frontend/src/components/AIFeedbackModal.tsx +55 -21
  22. lyrics_transcriber/frontend/src/components/AppHeader.tsx +65 -0
  23. lyrics_transcriber/frontend/src/components/CorrectedWordWithActions.tsx +5 -5
  24. lyrics_transcriber/frontend/src/components/DurationTimelineView.tsx +9 -9
  25. lyrics_transcriber/frontend/src/components/EditModal.tsx +1 -1
  26. lyrics_transcriber/frontend/src/components/EditWordList.tsx +1 -1
  27. lyrics_transcriber/frontend/src/components/Header.tsx +34 -48
  28. lyrics_transcriber/frontend/src/components/LyricsSynchronizer/TimelineCanvas.tsx +22 -21
  29. lyrics_transcriber/frontend/src/components/ReferenceView.tsx +1 -1
  30. lyrics_transcriber/frontend/src/components/TranscriptionView.tsx +1 -1
  31. lyrics_transcriber/frontend/src/components/WordDivider.tsx +3 -3
  32. lyrics_transcriber/frontend/src/components/shared/components/Word.tsx +2 -2
  33. lyrics_transcriber/frontend/src/components/shared/constants.ts +15 -5
  34. lyrics_transcriber/frontend/src/main.tsx +1 -7
  35. lyrics_transcriber/frontend/src/theme.ts +337 -135
  36. lyrics_transcriber/frontend/vite.config.ts +5 -0
  37. lyrics_transcriber/frontend/web_assets/assets/{index-COYImAcx.js → index-BECn1o8Q.js} +38 -22
  38. lyrics_transcriber/frontend/web_assets/assets/{index-COYImAcx.js.map → index-BECn1o8Q.js.map} +1 -1
  39. lyrics_transcriber/frontend/web_assets/index.html +1 -1
  40. lyrics_transcriber/frontend/yarn.lock +1005 -1046
  41. lyrics_transcriber/output/countdown_processor.py +39 -0
  42. lyrics_transcriber/review/server.py +1 -1
  43. lyrics_transcriber/transcribers/audioshake.py +96 -7
  44. lyrics_transcriber/types.py +14 -12
  45. {karaoke_gen-0.75.16.dist-info → karaoke_gen-0.76.20.dist-info}/WHEEL +0 -0
  46. {karaoke_gen-0.75.16.dist-info → karaoke_gen-0.76.20.dist-info}/entry_points.txt +0 -0
  47. {karaoke_gen-0.75.16.dist-info → karaoke_gen-0.76.20.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  karaoke_gen/__init__.py,sha256=wHpDbURJxmJAMNZ0uQjISv5MIT7KD9RWYi15xlYgEhU,1351
2
- karaoke_gen/audio_fetcher.py,sha256=9ByJRTExJRjZ6tx2n3bUQf4N35WIZv8woH4VJHIGWtk,33599
3
- karaoke_gen/audio_processor.py,sha256=0Ud2JVQ4cBSQwlKfJXIr2KkZr-8xF7gB4eVqP_elxQ8,39711
2
+ karaoke_gen/audio_fetcher.py,sha256=EuMSO_wG0z0ldfQQ_xGC8kdoUCDB1Rr2_IuWIZ218lA,71380
3
+ karaoke_gen/audio_processor.py,sha256=YCMsxh-OSzC6h1Oqht8gh48j4KaRDuRIMUUsNNQxJeY,39913
4
4
  karaoke_gen/config.py,sha256=LBZKpvwSgta8YoVX2GFFW-4CP22AyRtqsBn-KCeh8eg,2499
5
5
  karaoke_gen/file_handler.py,sha256=jnPc4kFtG-PX-IVPHYWa7maXd4lNmbkKd1HogDNzgN8,16674
6
6
  karaoke_gen/instrumental_review/__init__.py,sha256=91K9wPWfQnOqbINuhxtErPnXyY0gijdiF-69n-p3334,1382
@@ -8,12 +8,12 @@ karaoke_gen/instrumental_review/analyzer.py,sha256=Heg8TbrwM4g5IV7bavmO6EfVD4M0U
8
8
  karaoke_gen/instrumental_review/editor.py,sha256=_DGTjKMk5WhoGtLGtTvHzU522LJyQQ_DSY1r8fULuiA,11568
9
9
  karaoke_gen/instrumental_review/models.py,sha256=cUSb_JheJK0cGdKx9f59-9sRvRrhrgdTdKBzQN3lHto,5226
10
10
  karaoke_gen/instrumental_review/server.py,sha256=Ick90X77t2EeMRwtx2U08sSybadQyWH7G0tDG-4JqP4,19377
11
- karaoke_gen/instrumental_review/static/index.html,sha256=ZLxIohX0skbvvNa-pkhIPksHRDMyM6EPI_MFFATC_Bs,58223
11
+ karaoke_gen/instrumental_review/static/index.html,sha256=EjMFxCQJOUSrsgwIXAW3R4bN6hYxDLmL4MHzoXxI4f0,59362
12
12
  karaoke_gen/instrumental_review/waveform.py,sha256=Q6LBPZrJAD6mzZ7TmRf3Tf4gwYhUYTHumJKytLs3hSg,12940
13
13
  karaoke_gen/karaoke_finalise/__init__.py,sha256=HqZ7TIhgt_tYZ-nb_NNCaejWAcF_aK-7wJY5TaW_keM,46
14
- karaoke_gen/karaoke_finalise/karaoke_finalise.py,sha256=jZtnvP_SMdE9e5TpotTu9WPTPEfnZVRTyO9heylzMXs,92080
15
- karaoke_gen/karaoke_gen.py,sha256=GB-TKoM99S4k_JIDbsiqOqOhZC5QJv1BqTgzQlF0oNw,56513
16
- karaoke_gen/lyrics_processor.py,sha256=9SIYGgQLF_KQi_tKxQmO80p_S63-L7FIlu7L46Q5nQQ,18726
14
+ karaoke_gen/karaoke_finalise/karaoke_finalise.py,sha256=Wn1KcdRyINT63UxKUPT9uB-bsrFVih0Im_cjXtequS0,93534
15
+ karaoke_gen/karaoke_gen.py,sha256=-kmv26iqF36OXHoKAdFCXqaLPhrqk-aH958v-cPbTWM,65694
16
+ karaoke_gen/lyrics_processor.py,sha256=IzwscxBtDe2l7NhmWY8PdglYeMfIXhh2AWHQMY-ro1M,22829
17
17
  karaoke_gen/metadata.py,sha256=SZW6TuUpkGGU98gRdjPfrR8F4vWXjnfCSGry2XD5_A4,6689
18
18
  karaoke_gen/pipeline/__init__.py,sha256=-MZnba4qobr1qGDamG9CieLl2pWCZMEB5_Yur62RKeM,2106
19
19
  karaoke_gen/pipeline/base.py,sha256=yg4LIm7Mc9ER0zCmZcUv4huEkotSSXK_0OAFio-TSNI,6235
@@ -33,11 +33,11 @@ karaoke_gen/resources/Oswald-Bold.ttf,sha256=S_2mLpNkBsDTe8FQRzrj1Qr-wloGETMJgoA
33
33
  karaoke_gen/resources/Oswald-SemiBold.ttf,sha256=G-vSJeeyEVft7D4s7FZQtGfXAViWPjzGCImV2a4u9d8,87608
34
34
  karaoke_gen/resources/Zurich_Cn_BT_Bold.ttf,sha256=WNG5LOQ-uGUF_WWT5aQHzVbyWvQqGO5sZ4E-nRmvPuI,37780
35
35
  karaoke_gen/style_loader.py,sha256=13010BVxwVgamRn8K8Z9fNgLBdPs9LFmWMRMLyBdits,17908
36
- karaoke_gen/utils/__init__.py,sha256=FpOHyeBRB06f3zMoLBUJHTDZACrabg-DoyBTxNKYyNY,722
36
+ karaoke_gen/utils/__init__.py,sha256=zAb4sG4GMkBlkD2G1EDu-GsMbjcjFT127lFBwh0xVPI,1875
37
37
  karaoke_gen/utils/bulk_cli.py,sha256=s2SXTnnQf7TM8Fk8yz9Cfd3Xl08uHBnve_rTkf4wE5g,19337
38
- karaoke_gen/utils/cli_args.py,sha256=TusVLY74vtOmBVjkltmASTGkHybgVlB2_8J1zHdslC8,18049
39
- karaoke_gen/utils/gen_cli.py,sha256=9_4oFgaRXjISCTov0X319a97NqF4IFhQn_r_ThBKv3o,42509
40
- karaoke_gen/utils/remote_cli.py,sha256=QH27bIFIrOMaySeBpk6cF9IGQqdhKnN2BllJk8WoeUg,132290
38
+ karaoke_gen/utils/cli_args.py,sha256=4m2EOaxg-bYzXmlSOkpQUoVSi2Q9Xr3VtBZA7z3quBk,18515
39
+ karaoke_gen/utils/gen_cli.py,sha256=5ydiudcIOmNvA-YHe7x6QZepoQGg1dtW4bOkNOBhXhY,44142
40
+ karaoke_gen/utils/remote_cli.py,sha256=sWlbu29fQwoqNtIYUeC9nipux36sFJAUe-aMbGCGv_c,145647
41
41
  karaoke_gen/video_background_processor.py,sha256=p3sryMxmkori4Uy2MYgmlk5_QQ7Uh9IoVJLAdkdLIUI,15124
42
42
  karaoke_gen/video_generator.py,sha256=B7BQBrjkyvk3L3sctnPXnvr1rzkw0NYx5UCAl0ZiVx0,18464
43
43
  lyrics_transcriber/__init__.py,sha256=g9ZbJg9U1qo7XzrC25J3bTKcNzzwUJWDVdi_7-hjcM4,412
@@ -45,7 +45,7 @@ lyrics_transcriber/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
45
45
  lyrics_transcriber/cli/cli_main.py,sha256=F72ENLTj934bXjHAUbRm0toCK73qnuJhwEm9agBVKHQ,11596
46
46
  lyrics_transcriber/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
47
  lyrics_transcriber/core/config.py,sha256=AM6RZKll8tzdZtMLgvHRQb1SxiXVPek0q4vmSWVUvEo,1368
48
- lyrics_transcriber/core/controller.py,sha256=jPoJ-r1jZ94Xp8ARN9lpSjsMAqPXuGHhwnQy_FmkBvI,25216
48
+ lyrics_transcriber/core/controller.py,sha256=laeUakqT-0CoIyoBWYvv7kWxX-_wefWRwg2xrz84gRg,29432
49
49
  lyrics_transcriber/correction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
50
  lyrics_transcriber/correction/agentic/__init__.py,sha256=p7PHiebuvRs8RDlPDs-9gLZKzXG5KfWg3fFCdDhY6pE,222
51
51
  lyrics_transcriber/correction/agentic/adapter.py,sha256=Z0JBTAA7xlSdctCHqO9nBMl78C4XmqsLKKtS6BvNZNI,2912
@@ -124,8 +124,10 @@ lyrics_transcriber/frontend/README.md,sha256=-D6CAfKTT7Y0V3EjlZ2fMy7fyctFQ4x2TJ9
124
124
  lyrics_transcriber/frontend/REPLACE_ALL_FUNCTIONALITY.md,sha256=iRZbicW5satHel9gbG-uLyZ7oq3xdp87KQlJEL1ZhK8,8384
125
125
  lyrics_transcriber/frontend/__init__.py,sha256=nW8acRSWTjXoRwGqcTU4w-__X7tMAE0iXL0uihBN3CU,836
126
126
  lyrics_transcriber/frontend/eslint.config.js,sha256=3ADH23ANA4NNBKFy6nCVk65e8bx1DrVd_FIaYNnhuqA,734
127
- lyrics_transcriber/frontend/index.html,sha256=u1m7042a1kLWZVIElYQ9y-lzfIAdYJGtQE-i4Zjc3xY,806
128
- lyrics_transcriber/frontend/package.json,sha256=AlMkVDBqguyQxZNrNdpqkMCbnz1dl5Uu2YTIjrnAYkg,1182
127
+ lyrics_transcriber/frontend/index.html,sha256=hcVQvxU1yITMrMS4vVLwn4YwvnlXsfl4XY9UNtXvWAw,1135
128
+ lyrics_transcriber/frontend/package-lock.json,sha256=gQekpsz4CAKMJ8Fi331Q3Pv5yqhZlQ-nbGoDNnF35WE,159262
129
+ lyrics_transcriber/frontend/package.json,sha256=ttlZ0EqPSz0HIkjyCt_3szk1CsFrLR-uNtyhdxsc30w,1278
130
+ lyrics_transcriber/frontend/playwright.config.ts,sha256=7AtyWuAP193WVbFDqzqKMYZwE1dZ7TZ_QKzNfP8hIB0,1520
129
131
  lyrics_transcriber/frontend/public/android-chrome-192x192.png,sha256=lg-6aPF5mGLiuG7LyftZk_0RI41srmpA8wj-NkaaQms,17632
130
132
  lyrics_transcriber/frontend/public/android-chrome-512x512.png,sha256=x-zuKT3NYsTqAWzhKRTZeD4-0uYoUjqMPZpKTChqNJ8,123447
131
133
  lyrics_transcriber/frontend/public/apple-touch-icon.png,sha256=6y5vGra54w5oc8VP6sn2JjoQtN9hWTKn0YPhmdlmfU0,16188
@@ -133,27 +135,29 @@ lyrics_transcriber/frontend/public/favicon-16x16.png,sha256=2wy_7ZmVS4d7umByJVHQ
133
135
  lyrics_transcriber/frontend/public/favicon-32x32.png,sha256=6TyrRMIw6G8dpG4_QWVTY8DMxo0bIGzc_9aOJrkiJKM,1297
134
136
  lyrics_transcriber/frontend/public/favicon.ico,sha256=ZK7QvdBuZp0QxPkluCW4IKxfleFmFLp1KkG_d5xmx7E,15406
135
137
  lyrics_transcriber/frontend/public/nomad-karaoke-logo.png,sha256=jTTBFXV6hGJGolZYQ-dIjgQQbMsehk5XGtsllhLrdzg,212641
136
- lyrics_transcriber/frontend/src/App.tsx,sha256=f1-dp-MU8vap18eAXacwVDO5P4eE2iG9zSvjau-7NJs,6533
137
- lyrics_transcriber/frontend/src/api.ts,sha256=qYpH_KRkco1pYU4oJ8XgV4Y6xrTOPGngxwxB0NwlKro,8163
138
- lyrics_transcriber/frontend/src/components/AIFeedbackModal.tsx,sha256=N-M8LNKE3nCjrSkWTf8ObWSdBqD0Cv3Xiz_wVv9OtFo,3133
138
+ lyrics_transcriber/frontend/public/nomad-karaoke-logo.svg,sha256=0LOH346_a-1JeYquMWd1v2A3XMN8zLDBeujfWAOeNYk,9185
139
+ lyrics_transcriber/frontend/src/App.tsx,sha256=STVmqN3xtXambV_5X4M0MNuwYjARHBQfn1cuCqxNGkw,7979
140
+ lyrics_transcriber/frontend/src/api.ts,sha256=GcjbOrlU7EdUpZ7MUPFqE1rtH-ckdw8wHtgyQxWateY,8648
141
+ lyrics_transcriber/frontend/src/components/AIFeedbackModal.tsx,sha256=kDmfdTgPzqNVPMbh6ztkVod5iXE7QAfgkMMyseO07ww,5602
139
142
  lyrics_transcriber/frontend/src/components/AddLyricsModal.tsx,sha256=ubJwQewryjUrXwpBkITQNu4POhoUtDbNA93cqa-yJKY,3416
140
143
  lyrics_transcriber/frontend/src/components/AgenticCorrectionMetrics.tsx,sha256=Yg6FG0LtrneRfAYeBu3crt_RdN-_o7FojtYhDMDKi0o,8595
144
+ lyrics_transcriber/frontend/src/components/AppHeader.tsx,sha256=5KUVADDv9cAs2WNX9M31utQIYHKMi81unzrCW3j1fl0,2396
141
145
  lyrics_transcriber/frontend/src/components/AudioPlayer.tsx,sha256=XOCz0VtGiAIBs1qnCwrAixwfgHbTSGpjEb1jQg8wqzc,5441
142
- lyrics_transcriber/frontend/src/components/CorrectedWordWithActions.tsx,sha256=4FK9vqjTMxnwlqxZ2E349H1S-X6SqLAYfj5U5AyuGtI,4764
146
+ lyrics_transcriber/frontend/src/components/CorrectedWordWithActions.tsx,sha256=lcOQhSQBuTBv-adGB4uOb66qR-uX4OuN5P0CfFMxmHo,4941
143
147
  lyrics_transcriber/frontend/src/components/CorrectionAnnotationModal.tsx,sha256=XtF5XNLL2ztm714tXql7rKi2BX4k_bsizpZ_ZCvpu8s,13368
144
148
  lyrics_transcriber/frontend/src/components/CorrectionDetailCard.tsx,sha256=Hp-i1iSB3pzrpPH2wIREtEHHaReimBaYi8vcSUUArlg,9512
145
149
  lyrics_transcriber/frontend/src/components/CorrectionMetrics.tsx,sha256=CoTZS9Z3pf4lfPrzpQ2hZvLqFvt-IarSGBSCxFxD-y4,6274
146
- lyrics_transcriber/frontend/src/components/DurationTimelineView.tsx,sha256=eylYwAKHTK_5n54njn9bfMkXTGvrqsXlu9tETqAlMtA,9815
150
+ lyrics_transcriber/frontend/src/components/DurationTimelineView.tsx,sha256=d950EHJ52ODkygUkdlO4QNta5Ru8h7DRZIqR8IjOlvQ,10121
147
151
  lyrics_transcriber/frontend/src/components/EditActionBar.tsx,sha256=nLRVA3m3bQFqLtqlYasn7WeZNXvPvpG0sXuIv5QXvDc,2174
148
- lyrics_transcriber/frontend/src/components/EditModal.tsx,sha256=sv-NCKMvso3UF1_fJKbzt_wAcDLAyLqRq_D24uQRrRw,24649
152
+ lyrics_transcriber/frontend/src/components/EditModal.tsx,sha256=4smUvxF-45k-SAGXwkoBJmV37-nWWkE7HsR9w1OS6x8,24687
149
153
  lyrics_transcriber/frontend/src/components/EditTimelineSection.tsx,sha256=VQy5fpzKBG_9ZLyWHB8b8Ii61YwckCOjnYf1oezY0d4,19586
150
- lyrics_transcriber/frontend/src/components/EditWordList.tsx,sha256=atl-9Z-24U-KWojwo0apTy1Y9DbQGoVo2dFX4P-1Z9E,13681
154
+ lyrics_transcriber/frontend/src/components/EditWordList.tsx,sha256=XN59JnNPYNI4KrSenW7cYC6zUIlK7GvlyRbj9eg-Eac,13716
151
155
  lyrics_transcriber/frontend/src/components/FileUpload.tsx,sha256=fwn2rMWtMLPTZLREMb3ps4prSf9nzxGwnjmeC6KYsJA,2383
152
156
  lyrics_transcriber/frontend/src/components/FindReplaceModal.tsx,sha256=U7duKns4IqNXwbWFbQfdyaswnvkSRpfsU0UG__-Serc,20192
153
- lyrics_transcriber/frontend/src/components/Header.tsx,sha256=KE8TirDEUgojgHjP9R4HTtCxaVr_CWumky-Es7xAGsE,18754
157
+ lyrics_transcriber/frontend/src/components/Header.tsx,sha256=UmQzQpsdLrtzi9U5HFDtvtr6vq9qZu3cnPDnT_T3QuI,18151
154
158
  lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx,sha256=TFo2HCr6k9bENsQm-AfT797ZyFLqvKDa8g5W-pw1v24,54256
155
159
  lyrics_transcriber/frontend/src/components/LyricsSynchronizer/SyncControls.tsx,sha256=j4rQjBQVbaPsp1ra_rvEoCqmX3JFJdfNnFvj3BvfsgQ,6069
156
- lyrics_transcriber/frontend/src/components/LyricsSynchronizer/TimelineCanvas.tsx,sha256=h-sAfDFm-DfayZbKuNJmbAqxmMr89oC26xI4WB45bxA,26896
160
+ lyrics_transcriber/frontend/src/components/LyricsSynchronizer/TimelineCanvas.tsx,sha256=DuQBAdF8bYcAYKNEWVklXSAlEykhIDQKbELq_4SEPCg,27415
157
161
  lyrics_transcriber/frontend/src/components/LyricsSynchronizer/UpcomingWordsBar.tsx,sha256=BXkEeo5yMgHkeOCBcZKqxMb1rspjXH-X5_6X9Hl7z3E,2588
158
162
  lyrics_transcriber/frontend/src/components/LyricsSynchronizer/index.tsx,sha256=jOAmlkodaGzceQLG11ihprFMcARVbeJ_qjMcUkQj5Oo,34275
159
163
  lyrics_transcriber/frontend/src/components/MetricsDashboard.tsx,sha256=33XpyHj0siBQivE8vLgliyiwmdsAfnNQh5Py4mnhXi8,1724
@@ -161,18 +165,18 @@ lyrics_transcriber/frontend/src/components/ModeSelectionModal.tsx,sha256=eihGI49
161
165
  lyrics_transcriber/frontend/src/components/ModeSelector.tsx,sha256=HnBAK_gFgNBJLtMC_ESMVdUapDjmqmoLX8pQeyHfpOw,2651
162
166
  lyrics_transcriber/frontend/src/components/ModelSelector.tsx,sha256=lfG_B5VAzSfrU0FqJl8XptN6DVt2kSljU96HMXo8mf4,559
163
167
  lyrics_transcriber/frontend/src/components/PreviewVideoSection.tsx,sha256=59ZhG5XsxUZ_dkK8BjTQhYmYP5Wv86uRR-xtuwFRK8c,5582
164
- lyrics_transcriber/frontend/src/components/ReferenceView.tsx,sha256=2ugpkVtxZLS6Al-lmYbMZj7d3w9e2qNNYKJjkSxZ_X8,10494
168
+ lyrics_transcriber/frontend/src/components/ReferenceView.tsx,sha256=_9idlSTHQ8YZqPslhpuW8R_6kAHGWPMC9GvikpwH-AY,10532
165
169
  lyrics_transcriber/frontend/src/components/ReplaceAllLyricsModal.tsx,sha256=pVlqHrSloxXZV_Ib8cbk1invF7WA3uge5b7pnFPe9Pc,12290
166
170
  lyrics_transcriber/frontend/src/components/ReviewChangesModal.tsx,sha256=VQg_gBFViAxQu9Z75o6rOsvmH5DZBjKq9FkU8aB_7mI,13790
167
171
  lyrics_transcriber/frontend/src/components/SegmentDetailsModal.tsx,sha256=6ME02FkFwCgDAxW49yW260N4vbr80eAJ332Ex811GOo,1643
168
172
  lyrics_transcriber/frontend/src/components/TimelineEditor.tsx,sha256=gJRCxdmJo80g0h5hq5AtDHK-HbOoYhMaQYvP2WgOuRI,13201
169
173
  lyrics_transcriber/frontend/src/components/TimingOffsetModal.tsx,sha256=aivGi6ehI6cDqwtoKBb6Eif8gpPqi0t3mJT8i5Feu7Q,4803
170
- lyrics_transcriber/frontend/src/components/TranscriptionView.tsx,sha256=LDGK-Ac4sNMoLNofAdSsZAnCOdlPk4k9Fse6ulhgjYM,11299
171
- lyrics_transcriber/frontend/src/components/WordDivider.tsx,sha256=tOs_4WZGlJQ1o7sZFGLhwUoyX2jSKMa6vLZqa-1vzKY,6590
174
+ lyrics_transcriber/frontend/src/components/TranscriptionView.tsx,sha256=SK5nVjey4Eg2_JiVAnJbOtNwDEmrKYlNb529F7Q0nLY,11337
175
+ lyrics_transcriber/frontend/src/components/WordDivider.tsx,sha256=ynib_j0w0q4iOYAk7D4IyZJCq71LykX7SaD9haGlZeI,6695
172
176
  lyrics_transcriber/frontend/src/components/shared/components/HighlightedText.tsx,sha256=ZVZ61rwrKLdlmhlNuSNR7-sgdl7JdBxVTeSeKO6K-3w,16321
173
177
  lyrics_transcriber/frontend/src/components/shared/components/SourceSelector.tsx,sha256=FpMn-0i1NFxdIHZN0dxHkWzIIsOEi9CJc_rQMpLyxVw,2031
174
- lyrics_transcriber/frontend/src/components/shared/components/Word.tsx,sha256=EcLslnFE-BIOm_7FwRxKEOnIDVoWpTrDz6MQGoH_SVg,2596
175
- lyrics_transcriber/frontend/src/components/shared/constants.ts,sha256=25q1qjCwzV-hR72wSb_rJSe4dVuQ0l-piLMoZSpynGQ,488
178
+ lyrics_transcriber/frontend/src/components/shared/components/Word.tsx,sha256=CXzepxI3Negx2cqdfqLNGgesNbbIcczomXed71FupNw,2676
179
+ lyrics_transcriber/frontend/src/components/shared/constants.ts,sha256=GByG5KFLJOX0iCs80_PLXxZKQ5FBX5Qw0Mg05Xf8Faw,1142
176
180
  lyrics_transcriber/frontend/src/components/shared/hooks/useWordClick.ts,sha256=eEgBHiKIWOzFK8eBzBgcQRv7StKpaPchqh3k2kFlwgY,6253
177
181
  lyrics_transcriber/frontend/src/components/shared/styles.ts,sha256=J1jCSuRqpk1mOFYAqJudhxeozH-q1bi-dsOibLukBJU,411
178
182
  lyrics_transcriber/frontend/src/components/shared/types.js,sha256=1DqoH1vIn6o1ng-XyBS6JRVVkf8Hj7ub_UD4x8loMjA,77
@@ -184,8 +188,8 @@ lyrics_transcriber/frontend/src/components/shared/utils/segmentOperations.ts,sha
184
188
  lyrics_transcriber/frontend/src/components/shared/utils/timingUtils.ts,sha256=s3xdwGPg6ltZEcQ4AzgpznAR-fLhCTCYW7pfXaD60JY,4597
185
189
  lyrics_transcriber/frontend/src/components/shared/utils/wordUtils.ts,sha256=bZbsvEgY3JoI15l4SdB51tHE33OkUxDH-WSG8doLcCQ,721
186
190
  lyrics_transcriber/frontend/src/hooks/useManualSync.ts,sha256=cP19QsK-o5uz-Udq8m5d4NhMaPupHEQQz7uf0aE4Hs8,19403
187
- lyrics_transcriber/frontend/src/main.tsx,sha256=qNDmjgzD2Dd4d9J42o1z0JcKBElsMWHpFIgEvI8kNi8,543
188
- lyrics_transcriber/frontend/src/theme.ts,sha256=9F2xyLct_gJmvLEZEhrYdKIahUsBzi5kgnydSWJHphE,3864
191
+ lyrics_transcriber/frontend/src/main.tsx,sha256=bd2cO-7CSbqQwJ-8N3p_xPJvTFmg5lcJi2I-WgkIb6k,337
192
+ lyrics_transcriber/frontend/src/theme.ts,sha256=bVq-h3lYZhqHbM9yE0Le6DmpJS9n_u76xe-bQ_SjGE8,12498
189
193
  lyrics_transcriber/frontend/src/types/global.d.ts,sha256=NvltPF-n4_1oRLfihD3oHXbdT7txMC8B6fhCgvNY-jk,191
190
194
  lyrics_transcriber/frontend/src/types.js,sha256=1DqoH1vIn6o1ng-XyBS6JRVVkf8Hj7ub_UD4x8loMjA,77
191
195
  lyrics_transcriber/frontend/src/types.ts,sha256=gQBu13DDbSBUtbI-TwzAlmlIYfOehXar4WuvZ9GkziE,4880
@@ -198,18 +202,18 @@ lyrics_transcriber/frontend/tsconfig.tsbuildinfo,sha256=TGnTUZG3ScMXJTHpm1GmyxtE
198
202
  lyrics_transcriber/frontend/update_version.js,sha256=PxkqCnsucXnXiIqutsanVcx00Gq4k7pgCYj_uXCa4qw,411
199
203
  lyrics_transcriber/frontend/vite.config.d.ts,sha256=S5bdGf0pSdKM6A6RNBKwAm3EIeW_bDHYfHtesRtXU7Q,76
200
204
  lyrics_transcriber/frontend/vite.config.js,sha256=P4GuPgRZzwEWPQZpyujUe7eA3mjPoFAe2CgE5sQAXg8,232
201
- lyrics_transcriber/frontend/vite.config.ts,sha256=8FdW0dN8zDFqfhQSxX5h7sIu72X2piLYlp_TZYRQvBQ,216
205
+ lyrics_transcriber/frontend/vite.config.ts,sha256=EgliYm4wf_nx1mZOx6xx2Hu4aVAgoJ4jdbtsaXfawqI,306
202
206
  lyrics_transcriber/frontend/web_assets/android-chrome-192x192.png,sha256=lg-6aPF5mGLiuG7LyftZk_0RI41srmpA8wj-NkaaQms,17632
203
207
  lyrics_transcriber/frontend/web_assets/android-chrome-512x512.png,sha256=x-zuKT3NYsTqAWzhKRTZeD4-0uYoUjqMPZpKTChqNJ8,123447
204
208
  lyrics_transcriber/frontend/web_assets/apple-touch-icon.png,sha256=6y5vGra54w5oc8VP6sn2JjoQtN9hWTKn0YPhmdlmfU0,16188
205
- lyrics_transcriber/frontend/web_assets/assets/index-COYImAcx.js,sha256=FskPrshJHw2Q2TPCSaeY1KYWTjG-pR7pVTSUzTOEx7g,1421207
206
- lyrics_transcriber/frontend/web_assets/assets/index-COYImAcx.js.map,sha256=iiWHTy0GY5J7H-gMKprSTZ2LJvqEp61bv7CmIDc8fKo,3003447
209
+ lyrics_transcriber/frontend/web_assets/assets/index-BECn1o8Q.js,sha256=yNW-EWYuyaj_16fGDyvCGkb2BGoCufHlpKquqOxzQac,1421945
210
+ lyrics_transcriber/frontend/web_assets/assets/index-BECn1o8Q.js.map,sha256=aY17CfmBvSG6FgnuQLzgc9V02xfaOimIIAo8l4fiAJk,3004853
207
211
  lyrics_transcriber/frontend/web_assets/favicon-16x16.png,sha256=2wy_7ZmVS4d7umByJVHQ37DBB_8xrU9xfT1_konSXQI,604
208
212
  lyrics_transcriber/frontend/web_assets/favicon-32x32.png,sha256=6TyrRMIw6G8dpG4_QWVTY8DMxo0bIGzc_9aOJrkiJKM,1297
209
213
  lyrics_transcriber/frontend/web_assets/favicon.ico,sha256=ZK7QvdBuZp0QxPkluCW4IKxfleFmFLp1KkG_d5xmx7E,15406
210
- lyrics_transcriber/frontend/web_assets/index.html,sha256=KGxgVv7MBXJ1fZwq5PVmLrW887hRLmtmywj0xcsq-t0,830
214
+ lyrics_transcriber/frontend/web_assets/index.html,sha256=qqHYlM3VAy_3YJn3QgETGjR94XTWL3Ci_S-5_lHYgxw,830
211
215
  lyrics_transcriber/frontend/web_assets/nomad-karaoke-logo.png,sha256=jTTBFXV6hGJGolZYQ-dIjgQQbMsehk5XGtsllhLrdzg,212641
212
- lyrics_transcriber/frontend/yarn.lock,sha256=wtImLsCO1P1Lpkhc1jAN6IiHQ0As4xn39n0cwKoh4LM,131996
216
+ lyrics_transcriber/frontend/yarn.lock,sha256=baEFTcZVRQBGZGUKDvzTutfipBZcmoBQvHlM5wxguuc,130621
213
217
  lyrics_transcriber/lyrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
214
218
  lyrics_transcriber/lyrics/base_lyrics_provider.py,sha256=SskR5RIKorLcHhNSpHV35_kCnSA027_OOO9E45Jbv88,9168
215
219
  lyrics_transcriber/lyrics/file_provider.py,sha256=WNd6mHMV2FhrnHiWBvxUxPkdVi47mbLE4hXaTYqStTM,4290
@@ -253,7 +257,7 @@ lyrics_transcriber/output/cdgmaker/transitions/wipeleft.png,sha256=7jY6Z-mdY94PE
253
257
  lyrics_transcriber/output/cdgmaker/transitions/wipeout.png,sha256=YSLdv2RCGeSilOGt7PYTLAOlBfL4bofu8Vpj-PcskZo,9995
254
258
  lyrics_transcriber/output/cdgmaker/transitions/wiperight.png,sha256=Dw3N6cqJaSwL3owDqyAM4W573EmdNnkjdiXhoxWC4yk,8443
255
259
  lyrics_transcriber/output/cdgmaker/utils.py,sha256=TNcOnccegpxT3OogWQCexy8BrDqfihLAShMvqeM81cw,2945
256
- lyrics_transcriber/output/countdown_processor.py,sha256=i2j0gSxAfgGPxdKnr3d_Vkzt-CXW-BALJDmOQ13dfBY,9457
260
+ lyrics_transcriber/output/countdown_processor.py,sha256=EsUmnamNiG3SRfqPsZjSH3BH81a9AUg7wIdtfDkW57s,10848
257
261
  lyrics_transcriber/output/fonts/AvenirNext-Bold.ttf,sha256=YxgKz2OP46lwLPCpIZhVa8COi_9KRDSXw4n8dIHHQSs,327048
258
262
  "lyrics_transcriber/output/fonts/DMSans-VariableFont_opsz,wght.ttf",sha256=7uav75vmxRukpMx8wqtPeNvaxqOzlBljO400geBzYYI,238984
259
263
  lyrics_transcriber/output/fonts/DMSerifDisplay-Regular.ttf,sha256=mMHMLr3CMjEQgJ5cKlYEn8YSsHwSnDtxT-Qjn_n8ffM,72220
@@ -270,18 +274,18 @@ lyrics_transcriber/output/segment_resizer.py,sha256=rrgcQC28eExSAmGnm6ytkF-E-nH4
270
274
  lyrics_transcriber/output/subtitles.py,sha256=TW8IFTedj7-jHDyKKLYk1rFSFmuk8qysrI83Lkc3x-o,19555
271
275
  lyrics_transcriber/output/video.py,sha256=n6QtT3ljtx1t8CT9jmVTKSpdezF2gC0FJsYDDtkP5fE,24084
272
276
  lyrics_transcriber/review/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
273
- lyrics_transcriber/review/server.py,sha256=_05ul0MsddKf8iTIg-NASVYkl9kBRo0M3WhWBxp79i8,29462
277
+ lyrics_transcriber/review/server.py,sha256=pTeTniQWAeiPxH-I0lnPuAWNY9DyJjFvLIS7nUOYkxk,29459
274
278
  lyrics_transcriber/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
275
279
  lyrics_transcriber/storage/dropbox.py,sha256=Dyam1ULTkoxD1X5trkZ5dGp5XhBGCn998moC8IS9-68,9804
276
280
  lyrics_transcriber/transcribers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
277
- lyrics_transcriber/transcribers/audioshake.py,sha256=4VQdm-r3Pe0nIlJzqgOyOSp7amnWnU05VhFxBidY_WU,11831
281
+ lyrics_transcriber/transcribers/audioshake.py,sha256=RihuLKzhhHfX7m5cjKISwIuTQkGWapCS29D6Qk3hR4U,15869
278
282
  lyrics_transcriber/transcribers/base_transcriber.py,sha256=T3m4ZCwZ9Bpv6Jvb2hNcnllk-lmeNmADDJlSySBtP1Q,6480
279
283
  lyrics_transcriber/transcribers/whisper.py,sha256=YcCB1ic9H6zL1GS0jD0emu8-qlcH0QVEjjjYB4aLlIQ,13260
280
- lyrics_transcriber/types.py,sha256=Y7WUx8PAOBYWCIZgw4ndeHfPH8Gg--O3OYYQgMpJ2iI,27728
284
+ lyrics_transcriber/types.py,sha256=UJjaxhVd2o14AG4G8ToU598p0JeYdiTFjpG38jGCoYQ,27917
281
285
  lyrics_transcriber/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
282
286
  lyrics_transcriber/utils/word_utils.py,sha256=-cMGpj9UV4F6IsoDKAV2i1aiqSO8eI91HMAm_igtVMk,958
283
- karaoke_gen-0.75.16.dist-info/METADATA,sha256=vDrn5nCYEnReERLgY8XaVRTimrTZm15rq9YPN8PzP1k,17279
284
- karaoke_gen-0.75.16.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
285
- karaoke_gen-0.75.16.dist-info/entry_points.txt,sha256=xIyLe7K84ZyjO8L0_AmNectz93QjGSs5AkApMtlAd4g,160
286
- karaoke_gen-0.75.16.dist-info/licenses/LICENSE,sha256=81R_4XwMZDODHD7JcZeUR8IiCU8AD7Ajl6bmwR9tYDk,1074
287
- karaoke_gen-0.75.16.dist-info/RECORD,,
287
+ karaoke_gen-0.76.20.dist-info/METADATA,sha256=LuFlyEoDv5uHvTPpoUcAQChjNC1QdHnRBQzmdZRUPIw,20667
288
+ karaoke_gen-0.76.20.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
289
+ karaoke_gen-0.76.20.dist-info/entry_points.txt,sha256=xIyLe7K84ZyjO8L0_AmNectz93QjGSs5AkApMtlAd4g,160
290
+ karaoke_gen-0.76.20.dist-info/licenses/LICENSE,sha256=81R_4XwMZDODHD7JcZeUR8IiCU8AD7Ajl6bmwR9tYDk,1074
291
+ karaoke_gen-0.76.20.dist-info/RECORD,,
@@ -307,6 +307,37 @@ class LyricsTranscriber:
307
307
  self.results.transcription_corrected = CorrectionResult.from_dict(corrections_data)
308
308
  self.logger.info("Successfully loaded existing corrections data")
309
309
 
310
+ # Check if the loaded corrections have countdown padding applied
311
+ # This is important because the video needs to use padded audio to sync
312
+ # with the countdown-adjusted timestamps in the ASS subtitles
313
+ if self.output_config.add_countdown:
314
+ from lyrics_transcriber.output.countdown_processor import CountdownProcessor
315
+
316
+ countdown_processor = CountdownProcessor(
317
+ cache_dir=self.output_config.cache_dir,
318
+ logger=self.logger,
319
+ )
320
+
321
+ if countdown_processor.has_countdown(self.results.transcription_corrected):
322
+ self.logger.info(
323
+ "Loaded corrections have countdown - creating padded audio for video sync"
324
+ )
325
+ # Create padded audio file to match the countdown-adjusted timestamps
326
+ padded_audio_path = countdown_processor.create_padded_audio_only(self.audio_filepath)
327
+ self.audio_filepath = padded_audio_path
328
+
329
+ # Set countdown padding attributes on results
330
+ self.results.countdown_padding_added = True
331
+ self.results.countdown_padding_seconds = countdown_processor.COUNTDOWN_PADDING_SECONDS
332
+ self.results.padded_audio_filepath = padded_audio_path
333
+
334
+ self.logger.info(
335
+ f"Countdown padding applied: {countdown_processor.COUNTDOWN_PADDING_SECONDS}s. "
336
+ f"Using padded audio: {padded_audio_path}"
337
+ )
338
+ else:
339
+ self.logger.info("Loaded corrections do not have countdown - no padding needed")
340
+
310
341
  # Skip to output generation
311
342
  self.generate_outputs()
312
343
  self.logger.info("Processing completed successfully using existing corrections")
@@ -363,7 +394,24 @@ class LyricsTranscriber:
363
394
 
364
395
  def transcribe(self) -> None:
365
396
  """Run transcription using all available transcribers."""
366
- self.logger.info(f"Starting transcription with providers: {list(self.transcribers.keys())}")
397
+ provider_names = list(self.transcribers.keys())
398
+
399
+ if not provider_names:
400
+ self.logger.warning(
401
+ "Starting transcription with providers: [] - NO TRANSCRIPTION PROVIDERS CONFIGURED!\n"
402
+ "\n"
403
+ "This means no word-level timing data will be generated, and synchronized karaoke "
404
+ "lyrics cannot be created. The output will lack the '(With Vocals).mkv' video file.\n"
405
+ "\n"
406
+ "To enable transcription, configure at least one provider:\n"
407
+ " - AudioShake: Set AUDIOSHAKE_API_TOKEN environment variable\n"
408
+ " - Whisper/RunPod: Set RUNPOD_API_KEY and WHISPER_RUNPOD_ID environment variables\n"
409
+ "\n"
410
+ "See README.md 'Transcription Providers' section for detailed setup instructions."
411
+ )
412
+ else:
413
+ self.logger.info(f"Starting transcription with providers: {provider_names}")
414
+ self._log_provider_configuration_status()
367
415
 
368
416
  for name, transcriber_info in self.transcribers.items():
369
417
  self.logger.info(f"Running transcription with {name}")
@@ -376,7 +424,33 @@ class LyricsTranscriber:
376
424
  self.logger.debug(f"Transcription completed for {name}")
377
425
 
378
426
  if not self.results.transcription_results:
379
- self.logger.warning("No successful transcriptions from any provider")
427
+ self.logger.warning(
428
+ "No successful transcriptions from any provider. "
429
+ "Check that your API tokens are valid and the services are accessible."
430
+ )
431
+
432
+ def _log_provider_configuration_status(self) -> None:
433
+ """Log detailed configuration status for each potential transcription provider."""
434
+ self.logger.debug("Transcription provider configuration status:")
435
+
436
+ # AudioShake status
437
+ if self.transcriber_config.audioshake_api_token:
438
+ self.logger.debug(" - AudioShake: CONFIGURED (API token provided)")
439
+ else:
440
+ self.logger.debug(" - AudioShake: NOT CONFIGURED (missing AUDIOSHAKE_API_TOKEN)")
441
+
442
+ # Whisper/RunPod status
443
+ has_runpod_key = bool(self.transcriber_config.runpod_api_key)
444
+ has_whisper_id = bool(self.transcriber_config.whisper_runpod_id)
445
+
446
+ if has_runpod_key and has_whisper_id:
447
+ self.logger.debug(" - Whisper (RunPod): CONFIGURED (API key and endpoint ID provided)")
448
+ elif has_runpod_key:
449
+ self.logger.debug(" - Whisper (RunPod): PARTIALLY CONFIGURED (missing WHISPER_RUNPOD_ID)")
450
+ elif has_whisper_id:
451
+ self.logger.debug(" - Whisper (RunPod): PARTIALLY CONFIGURED (missing RUNPOD_API_KEY)")
452
+ else:
453
+ self.logger.debug(" - Whisper (RunPod): NOT CONFIGURED (missing RUNPOD_API_KEY and WHISPER_RUNPOD_ID)")
380
454
 
381
455
  def correct_lyrics(self) -> None:
382
456
  """Run lyrics correction using transcription and internet lyrics."""
@@ -2,6 +2,10 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
+ <!-- Load Inter font to match karaoke-gen styling -->
6
+ <link rel="preconnect" href="https://fonts.googleapis.com">
7
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
8
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
5
9
  <link rel="icon" type="image/x-icon" href="/favicon.ico" />
6
10
  <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
7
11
  <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
@@ -9,7 +13,7 @@
9
13
  <link rel="icon" type="image/png" sizes="192x192" href="/android-chrome-192x192.png" />
10
14
  <link rel="icon" type="image/png" sizes="512x512" href="/android-chrome-512x512.png" />
11
15
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
12
- <title>Nomad Karaoke: Lyrics Review</title>
16
+ <title>Nomad Karaoke: Lyrics Transcription Review</title>
13
17
  </head>
14
18
  <body>
15
19
  <div id="root"></div>