mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-18 13:40:27 +02:00
Fixed SRT subtitle numbering issue in #41
This commit is contained in:
+4
-1
@@ -1,3 +1,6 @@
|
|||||||
|
# 1.1.6 (pre-release)
|
||||||
|
- Fixed SRT subtitle numbering issue, mentioned by @page-muncher in #41
|
||||||
|
|
||||||
# 1.1.5
|
# 1.1.5
|
||||||
- Changed the temporary directory path to user's cache directory, which is more appropriate for storing cache files and avoids issues with unintended cleanup.
|
- Changed the temporary directory path to user's cache directory, which is more appropriate for storing cache files and avoids issues with unintended cleanup.
|
||||||
- Fixed the isssue where extra metadata information was not being saved to M4B files when they have no chapters, ensuring that all metadata is correctly written to the output file.
|
- Fixed the isssue where extra metadata information was not being saved to M4B files when they have no chapters, ensuring that all metadata is correctly written to the output file.
|
||||||
@@ -23,7 +26,7 @@
|
|||||||
- Added a new option: `Reset to default settings`, allowing users to reset all settings to their default values.
|
- Added a new option: `Reset to default settings`, allowing users to reset all settings to their default values.
|
||||||
- Added a new option: `Disable Kokoro's internet access`. This lets you prevent Kokoro from downloading models or voices from HuggingFace Hub, which can help avoid long waiting times if your computer is offline.
|
- Added a new option: `Disable Kokoro's internet access`. This lets you prevent Kokoro from downloading models or voices from HuggingFace Hub, which can help avoid long waiting times if your computer is offline.
|
||||||
- HuggingFace Hub telemetry is now disabled by default for improved privacy. (HuggingFace Hub is used by Kokoro to download its models)
|
- HuggingFace Hub telemetry is now disabled by default for improved privacy. (HuggingFace Hub is used by Kokoro to download its models)
|
||||||
- Potential fix for #37 and #38, where the program was becoming slow while processing large files.
|
- cPotential fix for #37 and #38, where the program was becoming slow while processing large files.
|
||||||
- Fixed `Open folder` and `Open file` buttons in the queue manager GUI.
|
- Fixed `Open folder` and `Open file` buttons in the queue manager GUI.
|
||||||
- Improvements in code structure.
|
- Improvements in code structure.
|
||||||
|
|
||||||
|
|||||||
+12
-8
@@ -467,6 +467,8 @@ class ConversionThread(QThread):
|
|||||||
{"chapter": chapter[0], "start": 0.0, "end": 0.0}
|
{"chapter": chapter[0], "start": 0.0, "end": 0.0}
|
||||||
for chapter in chapters
|
for chapter in chapters
|
||||||
]
|
]
|
||||||
|
# SRT numbering fix: use a global counter
|
||||||
|
merged_srt_index = 1 # SRT numbering for merged file
|
||||||
# Prepare output file/ffmpeg process for merged output
|
# Prepare output file/ffmpeg process for merged output
|
||||||
if self.output_format in ["wav", "mp3", "flac"]:
|
if self.output_format in ["wav", "mp3", "flac"]:
|
||||||
merged_out_file = sf.SoundFile(
|
merged_out_file = sf.SoundFile(
|
||||||
@@ -599,6 +601,7 @@ class ConversionThread(QThread):
|
|||||||
{"chapter": chapter[0], "start": 0.0, "end": 0.0}
|
{"chapter": chapter[0], "start": 0.0, "end": 0.0}
|
||||||
for chapter in chapters
|
for chapter in chapters
|
||||||
]
|
]
|
||||||
|
srt_index = 1 # SRT numbering fix for chapter-only mode
|
||||||
# Instead of processing the whole text, process by chapter
|
# Instead of processing the whole text, process by chapter
|
||||||
for chapter_idx, (chapter_name, chapter_text) in enumerate(chapters, 1):
|
for chapter_idx, (chapter_name, chapter_text) in enumerate(chapters, 1):
|
||||||
chapter_out_path = None
|
chapter_out_path = None
|
||||||
@@ -677,6 +680,7 @@ class ConversionThread(QThread):
|
|||||||
continue
|
continue
|
||||||
# Open chapter subtitle file for incremental writing if needed
|
# Open chapter subtitle file for incremental writing if needed
|
||||||
chapter_subtitle_file = None
|
chapter_subtitle_file = None
|
||||||
|
chapter_srt_index = 1 # Initialize SRT numbering for this chapter file
|
||||||
if self.subtitle_mode != "Disabled":
|
if self.subtitle_mode != "Disabled":
|
||||||
subtitle_format = getattr(self, "subtitle_format", "srt")
|
subtitle_format = getattr(self, "subtitle_format", "srt")
|
||||||
file_extension = "ass" if "ass" in subtitle_format else "srt"
|
file_extension = "ass" if "ass" in subtitle_format else "srt"
|
||||||
@@ -821,12 +825,12 @@ class ConversionThread(QThread):
|
|||||||
f"Dialogue: 0,{start_time},{end_time},Default,,{merged_subtitle_margin},{merged_subtitle_margin},0,,{merged_subtitle_alignment_tag}{text}\n"
|
f"Dialogue: 0,{start_time},{end_time},Default,,{merged_subtitle_margin},{merged_subtitle_margin},0,,{merged_subtitle_alignment_tag}{text}\n"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
for i, (start, end, text) in enumerate(
|
for entry in new_entries:
|
||||||
new_entries, 1
|
start, end, text = entry
|
||||||
):
|
|
||||||
merged_subtitle_file.write(
|
merged_subtitle_file.write(
|
||||||
f"{i}\n{self._srt_time(start)} --> {self._srt_time(end)}\n{text}\n\n"
|
f"{merged_srt_index}\n{self._srt_time(start)} --> {self._srt_time(end)}\n{text}\n\n"
|
||||||
)
|
)
|
||||||
|
merged_srt_index += 1
|
||||||
# Per-chapter subtitle processing for both file and ffmpeg_proc
|
# Per-chapter subtitle processing for both file and ffmpeg_proc
|
||||||
if chapter_out_file or chapter_ffmpeg_proc:
|
if chapter_out_file or chapter_ffmpeg_proc:
|
||||||
new_chapter_entries = []
|
new_chapter_entries = []
|
||||||
@@ -848,12 +852,12 @@ class ConversionThread(QThread):
|
|||||||
f"Dialogue: 0,{start_time},{end_time},Default,,{chapter_subtitle_margin},{chapter_subtitle_margin},0,,{chapter_subtitle_alignment_tag}{text}\n"
|
f"Dialogue: 0,{start_time},{end_time},Default,,{chapter_subtitle_margin},{chapter_subtitle_margin},0,,{chapter_subtitle_alignment_tag}{text}\n"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
for i, (start, end, text) in enumerate(
|
for entry in new_chapter_entries:
|
||||||
new_chapter_entries, 1
|
start, end, text = entry
|
||||||
):
|
|
||||||
chapter_subtitle_file.write(
|
chapter_subtitle_file.write(
|
||||||
f"{i}\n{self._srt_time(start)} --> {self._srt_time(end)}\n{text}\n\n"
|
f"{chapter_srt_index}\n{self._srt_time(start)} --> {self._srt_time(end)}\n{text}\n\n"
|
||||||
)
|
)
|
||||||
|
chapter_srt_index += 1
|
||||||
if merge_chapters_at_end:
|
if merge_chapters_at_end:
|
||||||
current_time += chunk_dur
|
current_time += chunk_dur
|
||||||
if chapter_out_file or chapter_ffmpeg_proc:
|
if chapter_out_file or chapter_ffmpeg_proc:
|
||||||
|
|||||||
Reference in New Issue
Block a user