lyrics-transcriber 0.56.1__py3-none-any.whl → 0.57.0__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.
- lyrics_transcriber/correction/operations.py +352 -0
- lyrics_transcriber/frontend/package.json +1 -1
- lyrics_transcriber/frontend/web_assets/assets/{index-C6nHrD6T.js → index-D-tkyYyP.js} +2 -2
- lyrics_transcriber/frontend/web_assets/assets/{index-C6nHrD6T.js.map → index-D-tkyYyP.js.map} +1 -1
- lyrics_transcriber/frontend/web_assets/index.html +1 -1
- lyrics_transcriber/review/server.py +25 -250
- {lyrics_transcriber-0.56.1.dist-info → lyrics_transcriber-0.57.0.dist-info}/METADATA +1 -1
- {lyrics_transcriber-0.56.1.dist-info → lyrics_transcriber-0.57.0.dist-info}/RECORD +11 -10
- {lyrics_transcriber-0.56.1.dist-info → lyrics_transcriber-0.57.0.dist-info}/LICENSE +0 -0
- {lyrics_transcriber-0.56.1.dist-info → lyrics_transcriber-0.57.0.dist-info}/WHEEL +0 -0
- {lyrics_transcriber-0.56.1.dist-info → lyrics_transcriber-0.57.0.dist-info}/entry_points.txt +0 -0
@@ -5,7 +5,7 @@
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
7
7
|
<title>Lyrics Transcriber Analyzer</title>
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
8
|
+
<script type="module" crossorigin src="/assets/index-D-tkyYyP.js"></script>
|
9
9
|
</head>
|
10
10
|
<body>
|
11
11
|
<div id="root"></div>
|
@@ -19,6 +19,7 @@ import json
|
|
19
19
|
from lyrics_transcriber.correction.corrector import LyricsCorrector
|
20
20
|
from lyrics_transcriber.types import TranscriptionResult, TranscriptionData
|
21
21
|
from lyrics_transcriber.lyrics.user_input_provider import UserInputProvider
|
22
|
+
from lyrics_transcriber.correction.operations import CorrectionOperations
|
22
23
|
|
23
24
|
|
24
25
|
class ReviewServer:
|
@@ -83,62 +84,7 @@ class ReviewServer:
|
|
83
84
|
|
84
85
|
def _update_correction_result(self, base_result: CorrectionResult, updated_data: Dict[str, Any]) -> CorrectionResult:
|
85
86
|
"""Update a CorrectionResult with new correction data."""
|
86
|
-
return
|
87
|
-
corrections=[
|
88
|
-
WordCorrection(
|
89
|
-
original_word=c.get("original_word", "").strip(),
|
90
|
-
corrected_word=c.get("corrected_word", "").strip(),
|
91
|
-
original_position=c.get("original_position", 0),
|
92
|
-
source=c.get("source", "review"),
|
93
|
-
reason=c.get("reason", "manual_review"),
|
94
|
-
segment_index=c.get("segment_index", 0),
|
95
|
-
confidence=c.get("confidence"),
|
96
|
-
alternatives=c.get("alternatives", {}),
|
97
|
-
is_deletion=c.get("is_deletion", False),
|
98
|
-
split_index=c.get("split_index"),
|
99
|
-
split_total=c.get("split_total"),
|
100
|
-
corrected_position=c.get("corrected_position"),
|
101
|
-
reference_positions=c.get("reference_positions"),
|
102
|
-
length=c.get("length", 1),
|
103
|
-
handler=c.get("handler"),
|
104
|
-
word_id=c.get("word_id"),
|
105
|
-
corrected_word_id=c.get("corrected_word_id"),
|
106
|
-
)
|
107
|
-
for c in updated_data["corrections"]
|
108
|
-
],
|
109
|
-
corrected_segments=[
|
110
|
-
LyricsSegment(
|
111
|
-
id=s["id"],
|
112
|
-
text=s["text"].strip(),
|
113
|
-
words=[
|
114
|
-
Word(
|
115
|
-
id=w["id"],
|
116
|
-
text=w["text"].strip(),
|
117
|
-
start_time=w["start_time"],
|
118
|
-
end_time=w["end_time"],
|
119
|
-
confidence=w.get("confidence"),
|
120
|
-
created_during_correction=w.get("created_during_correction", False),
|
121
|
-
)
|
122
|
-
for w in s["words"]
|
123
|
-
],
|
124
|
-
start_time=s["start_time"],
|
125
|
-
end_time=s["end_time"],
|
126
|
-
)
|
127
|
-
for s in updated_data["corrected_segments"]
|
128
|
-
],
|
129
|
-
# Copy existing fields from the base result
|
130
|
-
original_segments=base_result.original_segments,
|
131
|
-
corrections_made=len(updated_data["corrections"]),
|
132
|
-
confidence=base_result.confidence,
|
133
|
-
reference_lyrics=base_result.reference_lyrics,
|
134
|
-
anchor_sequences=base_result.anchor_sequences,
|
135
|
-
gap_sequences=base_result.gap_sequences,
|
136
|
-
resized_segments=None, # Will be generated if needed
|
137
|
-
metadata=base_result.metadata,
|
138
|
-
correction_steps=base_result.correction_steps,
|
139
|
-
word_id_map=base_result.word_id_map,
|
140
|
-
segment_id_map=base_result.segment_id_map,
|
141
|
-
)
|
87
|
+
return CorrectionOperations.update_correction_result_with_data(base_result, updated_data)
|
142
88
|
|
143
89
|
async def complete_review(self, updated_data: Dict[str, Any] = Body(...)):
|
144
90
|
"""Complete the review process."""
|
@@ -172,41 +118,21 @@ class ReviewServer:
|
|
172
118
|
async def generate_preview_video(self, updated_data: Dict[str, Any] = Body(...)):
|
173
119
|
"""Generate a preview video with the current corrections."""
|
174
120
|
try:
|
175
|
-
#
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
preview_hash = hashlib.md5(preview_data).hexdigest()[:12] # Use first 12 chars for shorter filename
|
181
|
-
|
182
|
-
# Initialize output generator with preview settings
|
183
|
-
preview_config = OutputConfig(
|
184
|
-
output_dir=self.output_config.output_dir,
|
185
|
-
cache_dir=self.output_config.cache_dir,
|
186
|
-
output_styles_json=self.output_config.output_styles_json,
|
187
|
-
video_resolution="360p", # Force 360p for preview
|
188
|
-
styles=self.output_config.styles,
|
189
|
-
max_line_length=self.output_config.max_line_length,
|
190
|
-
)
|
191
|
-
output_generator = OutputGenerator(config=preview_config, logger=self.logger, preview_mode=True)
|
192
|
-
|
193
|
-
# Generate preview outputs with unique prefix
|
194
|
-
preview_outputs = output_generator.generate_outputs(
|
195
|
-
transcription_corrected=temp_correction,
|
196
|
-
lyrics_results={}, # Empty dict since we don't need lyrics results for preview
|
197
|
-
output_prefix=f"preview_{preview_hash}", # Include hash in filename
|
121
|
+
# Use shared operation for preview generation
|
122
|
+
result = CorrectionOperations.generate_preview_video(
|
123
|
+
correction_result=self.correction_result,
|
124
|
+
updated_data=updated_data,
|
125
|
+
output_config=self.output_config,
|
198
126
|
audio_filepath=self.audio_filepath,
|
127
|
+
logger=self.logger
|
199
128
|
)
|
200
|
-
|
201
|
-
if not preview_outputs.video:
|
202
|
-
raise ValueError("Preview video generation failed")
|
203
|
-
|
129
|
+
|
204
130
|
# Store the path for later retrieval
|
205
131
|
if not hasattr(self, "preview_videos"):
|
206
132
|
self.preview_videos = {}
|
207
|
-
self.preview_videos[preview_hash] =
|
133
|
+
self.preview_videos[result["preview_hash"]] = result["video_path"]
|
208
134
|
|
209
|
-
return {"status": "success", "preview_hash": preview_hash}
|
135
|
+
return {"status": "success", "preview_hash": result["preview_hash"]}
|
210
136
|
|
211
137
|
except Exception as e:
|
212
138
|
self.logger.error(f"Failed to generate preview video: {str(e)}")
|
@@ -240,83 +166,14 @@ class ReviewServer:
|
|
240
166
|
async def update_handlers(self, enabled_handlers: List[str] = Body(...)):
|
241
167
|
"""Update enabled correction handlers and rerun correction."""
|
242
168
|
try:
|
243
|
-
#
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
if not self.correction_result.metadata:
|
248
|
-
self.correction_result.metadata = {}
|
249
|
-
self.correction_result.metadata["enabled_handlers"] = enabled_handlers
|
250
|
-
|
251
|
-
# Rerun correction with updated handlers
|
252
|
-
corrector = LyricsCorrector(cache_dir=self.output_config.cache_dir, enabled_handlers=enabled_handlers, logger=self.logger)
|
253
|
-
|
254
|
-
# Create proper TranscriptionData from original segments
|
255
|
-
transcription_data = TranscriptionData(
|
256
|
-
segments=self.correction_result.original_segments,
|
257
|
-
words=[word for segment in self.correction_result.original_segments for word in segment.words],
|
258
|
-
text="\n".join(segment.text for segment in self.correction_result.original_segments),
|
259
|
-
source="original",
|
260
|
-
)
|
261
|
-
|
262
|
-
# Get currently enabled handlers from metadata
|
263
|
-
enabled_handlers = None
|
264
|
-
if self.correction_result.metadata:
|
265
|
-
if "enabled_handlers" in self.correction_result.metadata:
|
266
|
-
enabled_handlers = self.correction_result.metadata["enabled_handlers"]
|
267
|
-
self.logger.info(f"Found existing enabled handlers in metadata: {enabled_handlers}")
|
268
|
-
elif "available_handlers" in self.correction_result.metadata:
|
269
|
-
# If no enabled_handlers but we have available_handlers, enable all default handlers
|
270
|
-
enabled_handlers = [
|
271
|
-
handler["id"] for handler in self.correction_result.metadata["available_handlers"] if handler.get("enabled", True)
|
272
|
-
]
|
273
|
-
self.logger.info(f"No enabled handlers found in metadata, using default enabled handlers: {enabled_handlers}")
|
274
|
-
else:
|
275
|
-
self.logger.warning("No handler configuration found in metadata")
|
276
|
-
|
277
|
-
# Log reference sources before correction
|
278
|
-
for source, lyrics in self.correction_result.reference_lyrics.items():
|
279
|
-
word_count = sum(len(s.words) for s in lyrics.segments)
|
280
|
-
self.logger.info(f"Reference source '{source}': {word_count} words in {len(lyrics.segments)} segments")
|
281
|
-
|
282
|
-
# Rerun correction with updated reference lyrics
|
283
|
-
self.logger.info("Initializing LyricsCorrector for re-correction")
|
284
|
-
self.logger.info(f"Passing enabled handlers to corrector: {enabled_handlers or '[]'}")
|
285
|
-
corrector = LyricsCorrector(
|
169
|
+
# Use shared operation for handler updates
|
170
|
+
self.correction_result = CorrectionOperations.update_correction_handlers(
|
171
|
+
correction_result=self.correction_result,
|
172
|
+
enabled_handlers=enabled_handlers,
|
286
173
|
cache_dir=self.output_config.cache_dir,
|
287
|
-
|
288
|
-
logger=self.logger,
|
289
|
-
)
|
290
|
-
|
291
|
-
self.logger.info(f"Active correction handlers: {[h.__class__.__name__ for h in corrector.handlers]}")
|
292
|
-
self.logger.info("Running correction with updated reference lyrics")
|
293
|
-
self.correction_result = corrector.run(
|
294
|
-
transcription_results=[TranscriptionResult(name="original", priority=1, result=transcription_data)],
|
295
|
-
lyrics_results=self.correction_result.reference_lyrics,
|
296
|
-
metadata=self.correction_result.metadata,
|
174
|
+
logger=self.logger
|
297
175
|
)
|
298
176
|
|
299
|
-
# Update metadata with the new handler state from corrector
|
300
|
-
if not self.correction_result.metadata:
|
301
|
-
self.correction_result.metadata = {}
|
302
|
-
self.correction_result.metadata.update(
|
303
|
-
{
|
304
|
-
"available_handlers": corrector.all_handlers,
|
305
|
-
"enabled_handlers": [getattr(handler, "name", handler.__class__.__name__) for handler in corrector.handlers],
|
306
|
-
}
|
307
|
-
)
|
308
|
-
|
309
|
-
self.logger.info("Correction process completed")
|
310
|
-
self.logger.info(
|
311
|
-
f"Updated metadata with {len(corrector.handlers)} enabled handlers: {self.correction_result.metadata['enabled_handlers']}"
|
312
|
-
)
|
313
|
-
|
314
|
-
# Restore audio hash
|
315
|
-
if audio_hash:
|
316
|
-
if not self.correction_result.metadata:
|
317
|
-
self.correction_result.metadata = {}
|
318
|
-
self.correction_result.metadata["audio_hash"] = audio_hash
|
319
|
-
|
320
177
|
return {"status": "success", "data": self.correction_result.to_dict()}
|
321
178
|
except Exception as e:
|
322
179
|
self.logger.error(f"Failed to update handlers: {str(e)}")
|
@@ -382,107 +239,25 @@ class ReviewServer:
|
|
382
239
|
async def add_lyrics(self, data: Dict[str, str] = Body(...)):
|
383
240
|
"""Add new lyrics source and rerun correction."""
|
384
241
|
try:
|
385
|
-
# Store existing audio hash
|
386
|
-
audio_hash = self.correction_result.metadata.get("audio_hash") if self.correction_result.metadata else None
|
387
|
-
|
388
242
|
source = data.get("source", "").strip()
|
389
243
|
lyrics_text = data.get("lyrics", "").strip()
|
390
244
|
|
391
245
|
self.logger.info(f"Received request to add lyrics source '{source}' with {len(lyrics_text)} characters")
|
392
246
|
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
if source in self.correction_result.reference_lyrics:
|
399
|
-
self.logger.warning(f"Source name '{source}' is already in use")
|
400
|
-
raise HTTPException(status_code=400, detail=f"Source name '{source}' is already in use")
|
401
|
-
|
402
|
-
# Create lyrics data using the provider
|
403
|
-
self.logger.info("Creating LyricsData using UserInputProvider")
|
404
|
-
provider = UserInputProvider(
|
405
|
-
lyrics_text=lyrics_text, source_name=source, metadata=self.correction_result.metadata or {}, logger=self.logger
|
406
|
-
)
|
407
|
-
lyrics_data = provider._convert_result_format({"text": lyrics_text, "metadata": self.correction_result.metadata or {}})
|
408
|
-
self.logger.info(f"Created LyricsData with {len(lyrics_data.segments)} segments")
|
409
|
-
|
410
|
-
# Add to reference lyrics
|
411
|
-
self.logger.info(f"Adding new source '{source}' to reference_lyrics")
|
412
|
-
self.correction_result.reference_lyrics[source] = lyrics_data
|
413
|
-
self.logger.info(f"Now have {len(self.correction_result.reference_lyrics)} total reference sources")
|
414
|
-
|
415
|
-
# Create TranscriptionData from original segments
|
416
|
-
self.logger.info("Creating TranscriptionData from original segments")
|
417
|
-
transcription_data = TranscriptionData(
|
418
|
-
segments=self.correction_result.original_segments,
|
419
|
-
words=[word for segment in self.correction_result.original_segments for word in segment.words],
|
420
|
-
text="\n".join(segment.text for segment in self.correction_result.original_segments),
|
421
|
-
source="original",
|
422
|
-
)
|
423
|
-
|
424
|
-
# Get currently enabled handlers from metadata
|
425
|
-
enabled_handlers = None
|
426
|
-
if self.correction_result.metadata:
|
427
|
-
if "enabled_handlers" in self.correction_result.metadata:
|
428
|
-
enabled_handlers = self.correction_result.metadata["enabled_handlers"]
|
429
|
-
self.logger.info(f"Found existing enabled handlers in metadata: {enabled_handlers}")
|
430
|
-
elif "available_handlers" in self.correction_result.metadata:
|
431
|
-
# If no enabled_handlers but we have available_handlers, enable all default handlers
|
432
|
-
enabled_handlers = [
|
433
|
-
handler["id"] for handler in self.correction_result.metadata["available_handlers"] if handler.get("enabled", True)
|
434
|
-
]
|
435
|
-
self.logger.info(f"No enabled handlers found in metadata, using default enabled handlers: {enabled_handlers}")
|
436
|
-
else:
|
437
|
-
self.logger.warning("No handler configuration found in metadata")
|
438
|
-
|
439
|
-
# Log reference sources before correction
|
440
|
-
for source, lyrics in self.correction_result.reference_lyrics.items():
|
441
|
-
word_count = sum(len(s.words) for s in lyrics.segments)
|
442
|
-
self.logger.info(f"Reference source '{source}': {word_count} words in {len(lyrics.segments)} segments")
|
443
|
-
|
444
|
-
# Rerun correction with updated reference lyrics
|
445
|
-
self.logger.info("Initializing LyricsCorrector for re-correction")
|
446
|
-
self.logger.info(f"Passing enabled handlers to corrector: {enabled_handlers or '[]'}")
|
447
|
-
corrector = LyricsCorrector(
|
247
|
+
# Use shared operation for adding lyrics source
|
248
|
+
self.correction_result = CorrectionOperations.add_lyrics_source(
|
249
|
+
correction_result=self.correction_result,
|
250
|
+
source=source,
|
251
|
+
lyrics_text=lyrics_text,
|
448
252
|
cache_dir=self.output_config.cache_dir,
|
449
|
-
|
450
|
-
logger=self.logger,
|
451
|
-
)
|
452
|
-
|
453
|
-
self.logger.info(f"Active correction handlers: {[h.__class__.__name__ for h in corrector.handlers]}")
|
454
|
-
self.logger.info("Running correction with updated reference lyrics")
|
455
|
-
self.correction_result = corrector.run(
|
456
|
-
transcription_results=[TranscriptionResult(name="original", priority=1, result=transcription_data)],
|
457
|
-
lyrics_results=self.correction_result.reference_lyrics,
|
458
|
-
metadata=self.correction_result.metadata,
|
459
|
-
)
|
460
|
-
|
461
|
-
# Update metadata with the new handler state from corrector
|
462
|
-
if not self.correction_result.metadata:
|
463
|
-
self.correction_result.metadata = {}
|
464
|
-
self.correction_result.metadata.update(
|
465
|
-
{
|
466
|
-
"available_handlers": corrector.all_handlers,
|
467
|
-
"enabled_handlers": [getattr(handler, "name", handler.__class__.__name__) for handler in corrector.handlers],
|
468
|
-
}
|
469
|
-
)
|
470
|
-
|
471
|
-
# Restore audio hash
|
472
|
-
if audio_hash:
|
473
|
-
if not self.correction_result.metadata:
|
474
|
-
self.correction_result.metadata = {}
|
475
|
-
self.correction_result.metadata["audio_hash"] = audio_hash
|
476
|
-
|
477
|
-
self.logger.info("Correction process completed")
|
478
|
-
self.logger.info(
|
479
|
-
f"Updated metadata with {len(corrector.handlers)} enabled handlers: {self.correction_result.metadata['enabled_handlers']}"
|
253
|
+
logger=self.logger
|
480
254
|
)
|
481
255
|
|
482
256
|
return {"status": "success", "data": self.correction_result.to_dict()}
|
483
257
|
|
484
|
-
except
|
485
|
-
|
258
|
+
except ValueError as e:
|
259
|
+
# Convert ValueError to HTTPException for API consistency
|
260
|
+
raise HTTPException(status_code=400, detail=str(e))
|
486
261
|
except Exception as e:
|
487
262
|
self.logger.error(f"Failed to add lyrics: {str(e)}", exc_info=True)
|
488
263
|
raise HTTPException(status_code=500, detail=str(e))
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: lyrics-transcriber
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.57.0
|
4
4
|
Summary: Automatically create synchronised lyrics files in ASS and MidiCo LRC formats with word-level timestamps, using Whisper and lyrics from Genius and Spotify
|
5
5
|
License: MIT
|
6
6
|
Author: Andrew Beveridge
|
@@ -19,6 +19,7 @@ lyrics_transcriber/correction/handlers/sound_alike.py,sha256=75IvDSfoGUG2xVbYp-x
|
|
19
19
|
lyrics_transcriber/correction/handlers/syllables_match.py,sha256=c9_hrJb_xkkqd2SuDjrsSmUF7OMYV65LRzBfAhCHxEY,11217
|
20
20
|
lyrics_transcriber/correction/handlers/word_count_match.py,sha256=OltTEs6eYnslxdvak97M5gXDiqXJxMHKk__Q9F_akXc,3595
|
21
21
|
lyrics_transcriber/correction/handlers/word_operations.py,sha256=410xhyO9tiqezV5yd5JKwKbxSGwXK9LWHJ7-zNIuOWA,7423
|
22
|
+
lyrics_transcriber/correction/operations.py,sha256=k5N8w_8BeR7CXiclaJ3zuu_g2KLoWSnnuD4OAmY3kJs,14010
|
22
23
|
lyrics_transcriber/correction/phrase_analyzer.py,sha256=dtO_2LjxnPdHJM7De40mYIdHCkozwhizVVQp5XGO7x0,16962
|
23
24
|
lyrics_transcriber/correction/text_utils.py,sha256=7QHK6-PY7Rx1G1E31sWiLBw00mHorRDo-M44KMHFaZs,833
|
24
25
|
lyrics_transcriber/frontend/.gitignore,sha256=lgGIPiVpFVUNSZl9oNQLelLOWUzpF7sikLW8xmsrrqI,248
|
@@ -28,7 +29,7 @@ lyrics_transcriber/frontend/README.md,sha256=-D6CAfKTT7Y0V3EjlZ2fMy7fyctFQ4x2TJ9
|
|
28
29
|
lyrics_transcriber/frontend/__init__.py,sha256=nW8acRSWTjXoRwGqcTU4w-__X7tMAE0iXL0uihBN3CU,836
|
29
30
|
lyrics_transcriber/frontend/eslint.config.js,sha256=3ADH23ANA4NNBKFy6nCVk65e8bx1DrVd_FIaYNnhuqA,734
|
30
31
|
lyrics_transcriber/frontend/index.html,sha256=KfqJVONzpUyPIwV73nZRiCWlwLnFWeB3z0vzxDPNudU,376
|
31
|
-
lyrics_transcriber/frontend/package.json,sha256=
|
32
|
+
lyrics_transcriber/frontend/package.json,sha256=Jux6MUBtOluQyLgMWX3Q1Awemih9eXtspCNV79wzG3Y,1182
|
32
33
|
lyrics_transcriber/frontend/public/vite.svg,sha256=SnSK_UQ5GLsWWRyDTEAdrjPoeGGrXbrQgRw6O0qSFPs,1497
|
33
34
|
lyrics_transcriber/frontend/src/App.tsx,sha256=f1-dp-MU8vap18eAXacwVDO5P4eE2iG9zSvjau-7NJs,6533
|
34
35
|
lyrics_transcriber/frontend/src/api.ts,sha256=UgqPc1jo8DEVgxh3_9Lyf9GBsHYpqMAqsPEE5BzTV4w,6640
|
@@ -82,9 +83,9 @@ lyrics_transcriber/frontend/update_version.js,sha256=PxkqCnsucXnXiIqutsanVcx00Gq
|
|
82
83
|
lyrics_transcriber/frontend/vite.config.d.ts,sha256=S5bdGf0pSdKM6A6RNBKwAm3EIeW_bDHYfHtesRtXU7Q,76
|
83
84
|
lyrics_transcriber/frontend/vite.config.js,sha256=P4GuPgRZzwEWPQZpyujUe7eA3mjPoFAe2CgE5sQAXg8,232
|
84
85
|
lyrics_transcriber/frontend/vite.config.ts,sha256=8FdW0dN8zDFqfhQSxX5h7sIu72X2piLYlp_TZYRQvBQ,216
|
85
|
-
lyrics_transcriber/frontend/web_assets/assets/index-
|
86
|
-
lyrics_transcriber/frontend/web_assets/assets/index-
|
87
|
-
lyrics_transcriber/frontend/web_assets/index.html,sha256=
|
86
|
+
lyrics_transcriber/frontend/web_assets/assets/index-D-tkyYyP.js,sha256=jmK_omAjSQvcPN9u3Kc_PUA0EV73fymGmOwA0UAx6LI,1257959
|
87
|
+
lyrics_transcriber/frontend/web_assets/assets/index-D-tkyYyP.js.map,sha256=R0R3Nu7epy25RbRw1lBDkMm8KqHz_hcfzS9zjnK0T6Q,2678465
|
88
|
+
lyrics_transcriber/frontend/web_assets/index.html,sha256=geoshNdn18UyoshPcojZs-3EpnkideZV96VEimpGXig,400
|
88
89
|
lyrics_transcriber/frontend/web_assets/vite.svg,sha256=SnSK_UQ5GLsWWRyDTEAdrjPoeGGrXbrQgRw6O0qSFPs,1497
|
89
90
|
lyrics_transcriber/frontend/yarn.lock,sha256=wtImLsCO1P1Lpkhc1jAN6IiHQ0As4xn39n0cwKoh4LM,131996
|
90
91
|
lyrics_transcriber/lyrics/base_lyrics_provider.py,sha256=mqlqssKG2AofvqEU48nCwLnz0FhO9Ee6MNixF6GBnYY,9133
|
@@ -143,7 +144,7 @@ lyrics_transcriber/output/segment_resizer.py,sha256=rrgcQC28eExSAmGnm6ytkF-E-nH4
|
|
143
144
|
lyrics_transcriber/output/subtitles.py,sha256=yQCR7YO3aitKnGRjfAtSwsdi6byfpEZgnCumJO16M2E,19085
|
144
145
|
lyrics_transcriber/output/video.py,sha256=L_KB33YM4X-EQBRcLIPO4ZqlNEcVwqTWKjaJZVtkN-4,13751
|
145
146
|
lyrics_transcriber/review/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
146
|
-
lyrics_transcriber/review/server.py,sha256=
|
147
|
+
lyrics_transcriber/review/server.py,sha256=WXWyJZJsKm6_HhGxRdP2fD7kyMAmuc_I-Kvqx_uA4NI,14833
|
147
148
|
lyrics_transcriber/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
148
149
|
lyrics_transcriber/storage/dropbox.py,sha256=Dyam1ULTkoxD1X5trkZ5dGp5XhBGCn998moC8IS9-68,9804
|
149
150
|
lyrics_transcriber/transcribers/audioshake.py,sha256=hLlnRfkYldP8Y0dMCCwjYlLwqUZPAP7Xzk59G3u5bq0,8939
|
@@ -151,8 +152,8 @@ lyrics_transcriber/transcribers/base_transcriber.py,sha256=T3m4ZCwZ9Bpv6Jvb2hNcn
|
|
151
152
|
lyrics_transcriber/transcribers/whisper.py,sha256=YcCB1ic9H6zL1GS0jD0emu8-qlcH0QVEjjjYB4aLlIQ,13260
|
152
153
|
lyrics_transcriber/types.py,sha256=wqFrTKhb8qAUB48zH-51_EEGCGrxm0Ji-ETfQumtSKc,27666
|
153
154
|
lyrics_transcriber/utils/word_utils.py,sha256=-cMGpj9UV4F6IsoDKAV2i1aiqSO8eI91HMAm_igtVMk,958
|
154
|
-
lyrics_transcriber-0.
|
155
|
-
lyrics_transcriber-0.
|
156
|
-
lyrics_transcriber-0.
|
157
|
-
lyrics_transcriber-0.
|
158
|
-
lyrics_transcriber-0.
|
155
|
+
lyrics_transcriber-0.57.0.dist-info/LICENSE,sha256=81R_4XwMZDODHD7JcZeUR8IiCU8AD7Ajl6bmwR9tYDk,1074
|
156
|
+
lyrics_transcriber-0.57.0.dist-info/METADATA,sha256=LCZb65ZOg0sSJ4f5GQPmvm3fMih5YFmH5q7zXs3DjWo,6637
|
157
|
+
lyrics_transcriber-0.57.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
158
|
+
lyrics_transcriber-0.57.0.dist-info/entry_points.txt,sha256=kcp-bSFkCACAEA0t166Kek0HpaJUXRo5SlF5tVrqNBU,216
|
159
|
+
lyrics_transcriber-0.57.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
{lyrics_transcriber-0.56.1.dist-info → lyrics_transcriber-0.57.0.dist-info}/entry_points.txt
RENAMED
File without changes
|