mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-18 21:50:28 +02:00
fix: review cleanup — imports, _FakeToken, use_spacy_segmentation
- Move pronunciation imports from inside run() to top-level imports - Extract _FakeToken to module level (was redefined every loop iteration) - use_spacy_segmentation now mirrors PyQt logic: pass the flag, let process_subtitle_tokens filter by language internally
This commit is contained in:
@@ -39,6 +39,11 @@ from abogen.domain.subtitle_generation import process_subtitle_tokens
|
|||||||
from abogen.domain.voice_loader import load_voice_cached
|
from abogen.domain.voice_loader import load_voice_cached
|
||||||
from abogen.domain.progress import calc_etr_str
|
from abogen.domain.progress import calc_etr_str
|
||||||
from abogen.domain.normalization import prepare_text_for_tts
|
from abogen.domain.normalization import prepare_text_for_tts
|
||||||
|
from abogen.domain.pronunciation import (
|
||||||
|
compile_pronunciation_rules,
|
||||||
|
compile_heteronym_sentence_rules,
|
||||||
|
merge_pronunciation_overrides,
|
||||||
|
)
|
||||||
from abogen.domain.metadata_extraction import (
|
from abogen.domain.metadata_extraction import (
|
||||||
extract_metadata_and_build_args,
|
extract_metadata_and_build_args,
|
||||||
read_text_for_metadata,
|
read_text_for_metadata,
|
||||||
@@ -537,11 +542,6 @@ class ConversionThread(QThread):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# --- Compile normalization rules (heteronym + pronunciation) ---
|
# --- Compile normalization rules (heteronym + pronunciation) ---
|
||||||
from abogen.domain.pronunciation import (
|
|
||||||
compile_pronunciation_rules,
|
|
||||||
compile_heteronym_sentence_rules,
|
|
||||||
merge_pronunciation_overrides,
|
|
||||||
)
|
|
||||||
pronunciation_overrides = merge_pronunciation_overrides(
|
pronunciation_overrides = merge_pronunciation_overrides(
|
||||||
getattr(self, "pronunciation_overrides", None),
|
getattr(self, "pronunciation_overrides", None),
|
||||||
getattr(self, "manual_overrides", None),
|
getattr(self, "manual_overrides", None),
|
||||||
|
|||||||
@@ -135,6 +135,16 @@ SPLIT_PATTERN = r"\n+" # Kept for backward compatibility; prefer get_split_patt
|
|||||||
SAMPLE_RATE = 24000
|
SAMPLE_RATE = 24000
|
||||||
|
|
||||||
|
|
||||||
|
class _FakeToken:
|
||||||
|
"""Minimal token stub for languages without per-word token support."""
|
||||||
|
|
||||||
|
def __init__(self, text: str, start: float, end: float):
|
||||||
|
self.text = text
|
||||||
|
self.start_ts = start
|
||||||
|
self.end_ts = end
|
||||||
|
self.whitespace = ""
|
||||||
|
|
||||||
|
|
||||||
class _JobCancelled(Exception):
|
class _JobCancelled(Exception):
|
||||||
"""Raised internally to abort a conversion when the client cancels."""
|
"""Raised internally to abort a conversion when the client cancels."""
|
||||||
|
|
||||||
@@ -534,12 +544,6 @@ def run_conversion_job(job: Job) -> None:
|
|||||||
|
|
||||||
# Fallback for languages without token support: create a single token
|
# Fallback for languages without token support: create a single token
|
||||||
if not tokens_list and graphemes:
|
if not tokens_list and graphemes:
|
||||||
class _FakeToken:
|
|
||||||
def __init__(self, text, start, end):
|
|
||||||
self.text = text
|
|
||||||
self.start_ts = start
|
|
||||||
self.end_ts = end
|
|
||||||
self.whitespace = ""
|
|
||||||
tokens_list = [_FakeToken(graphemes, 0, duration)]
|
tokens_list = [_FakeToken(graphemes, 0, duration)]
|
||||||
|
|
||||||
for tok in tokens_list:
|
for tok in tokens_list:
|
||||||
@@ -555,6 +559,7 @@ def run_conversion_job(job: Job) -> None:
|
|||||||
|
|
||||||
# Flush accumulated tokens through process_subtitle_tokens
|
# Flush accumulated tokens through process_subtitle_tokens
|
||||||
if subtitle_writer and audio_sink and accumulated_tokens:
|
if subtitle_writer and audio_sink and accumulated_tokens:
|
||||||
|
_use_spacy = job.subtitle_mode not in ("Disabled", "Line")
|
||||||
new_entries: List[tuple] = []
|
new_entries: List[tuple] = []
|
||||||
process_subtitle_tokens(
|
process_subtitle_tokens(
|
||||||
accumulated_tokens,
|
accumulated_tokens,
|
||||||
@@ -562,7 +567,7 @@ def run_conversion_job(job: Job) -> None:
|
|||||||
job.max_subtitle_words,
|
job.max_subtitle_words,
|
||||||
job.subtitle_mode,
|
job.subtitle_mode,
|
||||||
job.language,
|
job.language,
|
||||||
use_spacy_segmentation=False,
|
use_spacy_segmentation=_use_spacy,
|
||||||
fallback_end_time=current_time,
|
fallback_end_time=current_time,
|
||||||
)
|
)
|
||||||
for start, end, text in new_entries:
|
for start, end, text in new_entries:
|
||||||
|
|||||||
Reference in New Issue
Block a user