Update app.py
Browse files
app.py
CHANGED
@@ -424,13 +424,14 @@ def process_entry(entry, i, tts_model, video_width, video_height, process_mode,
|
|
424 |
desired_duration = entry["end"] - entry["start"]
|
425 |
desired_speed = calibrated_speed(entry['translated'], desired_duration)
|
426 |
|
427 |
-
|
428 |
-
|
429 |
-
|
|
|
430 |
generate_voiceover_clone(entry['translated'], tts_model, desired_speed, target_language, speaker_wav_path, segment_audio_path)
|
431 |
|
432 |
else:
|
433 |
-
generate_voiceover_OpenAI(entry['translated'],
|
434 |
|
435 |
if not output_path or not os.path.exists(segment_audio_path):
|
436 |
raise FileNotFoundError(f"Voiceover file not generated at: {segment_audio_path}")
|
@@ -564,12 +565,8 @@ def generate_voiceover_OpenAI(full_text, language, desired_speed, output_audio_p
|
|
564 |
if retry_count == max_retries:
|
565 |
raise ValueError(f"Failed to generate voiceover after {max_retries} retries.")
|
566 |
|
567 |
-
def generate_voiceover_clone(full_text, tts_model, desired_speed, target_language, speaker_wav_path, output_audio_path
|
568 |
try:
|
569 |
-
if not speaker_wav_path or not os.path.exists(speaker_wav_path):
|
570 |
-
msg = f"β Speaker audio not found: {speaker_wav_path}"
|
571 |
-
logger.error(msg)
|
572 |
-
return None, msg, msg
|
573 |
|
574 |
tts_model.tts_to_file(
|
575 |
text=full_text,
|
@@ -579,19 +576,13 @@ def generate_voiceover_clone(full_text, tts_model, desired_speed, target_languag
|
|
579 |
speed=desired_speed,
|
580 |
split_sentences=True
|
581 |
)
|
582 |
-
|
583 |
-
if not os.path.exists(output_audio_path):
|
584 |
-
msg = f"β Voiceover file not generated at: {output_audio_path}"
|
585 |
-
logger.error(msg)
|
586 |
-
return None, msg, msg
|
587 |
-
|
588 |
msg = "β
Voice cloning completed successfully."
|
589 |
logger.info(msg)
|
590 |
return output_audio_path, msg, None
|
591 |
|
592 |
except Exception as e:
|
593 |
-
|
594 |
-
|
595 |
logger.error(traceback.format_exc())
|
596 |
return None, err_msg, err_msg
|
597 |
|
|
|
424 |
desired_duration = entry["end"] - entry["start"]
|
425 |
desired_speed = calibrated_speed(entry['translated'], desired_duration)
|
426 |
|
427 |
+
speaker = entry.get("speaker", "default")
|
428 |
+
speaker_wav_path = f"speaker_{speaker}_sample.wav"
|
429 |
+
|
430 |
+
if use_clone and speaker_wav_path and os.path.exists(speaker_wav_path):
|
431 |
generate_voiceover_clone(entry['translated'], tts_model, desired_speed, target_language, speaker_wav_path, segment_audio_path)
|
432 |
|
433 |
else:
|
434 |
+
generate_voiceover_OpenAI(entry['translated'], target_language, desired_speed, segment_audio_path)
|
435 |
|
436 |
if not output_path or not os.path.exists(segment_audio_path):
|
437 |
raise FileNotFoundError(f"Voiceover file not generated at: {segment_audio_path}")
|
|
|
565 |
if retry_count == max_retries:
|
566 |
raise ValueError(f"Failed to generate voiceover after {max_retries} retries.")
|
567 |
|
568 |
+
def generate_voiceover_clone(full_text, tts_model, desired_speed, target_language, speaker_wav_path, output_audio_path):
|
569 |
try:
|
|
|
|
|
|
|
|
|
570 |
|
571 |
tts_model.tts_to_file(
|
572 |
text=full_text,
|
|
|
576 |
speed=desired_speed,
|
577 |
split_sentences=True
|
578 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
579 |
msg = "β
Voice cloning completed successfully."
|
580 |
logger.info(msg)
|
581 |
return output_audio_path, msg, None
|
582 |
|
583 |
except Exception as e:
|
584 |
+
generate_voiceover_OpenAI(full_text, target_language, desired_speed, output_audio_path)
|
585 |
+
err_msg = f"β An error occurred: {str(e)}, fallback to premium voice"
|
586 |
logger.error(traceback.format_exc())
|
587 |
return None, err_msg, err_msg
|
588 |
|