mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Make skipping overlay for files that generate no audio data more robust
This commit is contained in:
parent
41e03e0433
commit
b6af6218bb
@ -515,6 +515,17 @@ def embed_tts(container, report_progress=None, callback_to_download_voices=None)
|
||||
return False
|
||||
wav = io.BytesIO()
|
||||
wav.write(wav_header_for_pcm_data(size_of_audio_data, HIGH_QUALITY_SAMPLE_RATE))
|
||||
durations = []
|
||||
file_duration = 0
|
||||
for i, s in enumerate(pfd.sentences):
|
||||
audio_data, duration = audio_map[s]
|
||||
if duration > 0:
|
||||
wav.write(audio_data)
|
||||
durations.append((s.elem_id, file_duration, duration))
|
||||
file_duration += duration
|
||||
if not file_duration:
|
||||
continue
|
||||
|
||||
afitem = container.generate_item(name + '.m4a', id_prefix='tts-')
|
||||
pfd.audio_file_name = container.href_to_name(afitem.get('href'), container.opf_name)
|
||||
smilitem = container.generate_item(name + '.smil', id_prefix='smil-')
|
||||
@ -533,12 +544,8 @@ def embed_tts(container, report_progress=None, callback_to_download_voices=None)
|
||||
seq.text = seq.text[:seq.text.find('X')]
|
||||
audio_href = container.name_to_href(pfd.audio_file_name, pfd.smil_file_name)
|
||||
html_href = container.name_to_href(pfd.name, pfd.smil_file_name)
|
||||
file_duration = 0
|
||||
for i, s in enumerate(pfd.sentences):
|
||||
audio_data, duration = audio_map[s]
|
||||
wav.write(audio_data)
|
||||
make_par(container, seq, html_href, audio_href, s.elem_id, file_duration, duration)
|
||||
file_duration += duration
|
||||
for elem_id, clip_start, duration in durations:
|
||||
make_par(container, seq, html_href, audio_href, elem_id, clip_start, duration)
|
||||
if len(seq):
|
||||
seq[-1].tail = seq.text[:-2]
|
||||
wav.seek(0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user