Spaces:
Running
Running
drewThomasson
commited on
Commit
•
690e666
1
Parent(s):
5aace53
Update app.py
Browse files
app.py
CHANGED
@@ -621,29 +621,28 @@ def convert_chapters_to_audio_standard_model(chapters_dir, output_audio_dir, tar
|
|
621 |
print(f"Converted chapter {chapter_num} to audio.")
|
622 |
|
623 |
|
|
|
|
|
624 |
def convert_ebook_to_audio(ebook_file, target_voice_file, language, use_custom_model, custom_model_file, custom_config_file, custom_vocab_file, custom_model_url=None, progress=gr.Progress()):
|
625 |
-
# Handle ebook file and target voice file
|
626 |
ebook_file_path = ebook_file if isinstance(ebook_file, str) else ebook_file.name
|
627 |
target_voice = target_voice_file if isinstance(target_voice_file, str) else target_voice_file.name if target_voice_file else None
|
628 |
-
|
629 |
-
|
|
|
630 |
|
631 |
-
# Setup working directories
|
632 |
working_files = os.path.join(".", "Working_files", "temp_ebook")
|
633 |
full_folder_working_files = os.path.join(".", "Working_files")
|
634 |
chapters_directory = os.path.join(".", "Working_files", "temp_ebook")
|
635 |
output_audio_directory = os.path.join(".", 'Chapter_wav_files')
|
636 |
-
|
637 |
-
# Clean up previous working files
|
638 |
remove_folder_with_contents(full_folder_working_files)
|
639 |
remove_folder_with_contents(output_audio_directory)
|
640 |
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
if use_custom_model and custom_model_url:
|
648 |
print(f"Received custom model URL: {custom_model_url}")
|
649 |
download_dir = os.path.join(".", "Working_files", "custom_model")
|
@@ -653,16 +652,10 @@ def convert_ebook_to_audio(ebook_file, target_voice_file, language, use_custom_m
|
|
653 |
if rename_vocab_file_if_exists(download_dir):
|
654 |
print("vocab.json file was found and renamed.")
|
655 |
|
656 |
-
custom_model_path = os.path.join(download_dir, 'model.pth')
|
657 |
-
custom_config_path = os.path.join(download_dir, 'config.json')
|
658 |
-
custom_vocab_path = os.path.join(download_dir, 'vocab.json_')
|
659 |
-
|
660 |
-
# Set the custom model if all the paths are available
|
661 |
-
if use_custom_model and custom_model_path and custom_config_path and custom_vocab_path:
|
662 |
custom_model = {
|
663 |
-
'model':
|
664 |
-
'config':
|
665 |
-
'vocab':
|
666 |
}
|
667 |
|
668 |
try:
|
@@ -670,16 +663,15 @@ def convert_ebook_to_audio(ebook_file, target_voice_file, language, use_custom_m
|
|
670 |
except Exception as e:
|
671 |
print(f"Error updating progress: {e}")
|
672 |
|
673 |
-
# Ensure Calibre is installed
|
674 |
if not calibre_installed():
|
675 |
return "Calibre is not installed."
|
676 |
|
|
|
677 |
try:
|
678 |
progress(0.1, desc="Creating chapter-labeled book")
|
679 |
except Exception as e:
|
680 |
print(f"Error updating progress: {e}")
|
681 |
|
682 |
-
# Create a chapter-labeled book
|
683 |
create_chapter_labeled_book(ebook_file_path)
|
684 |
audiobook_output_path = os.path.join(".", "Audiobooks")
|
685 |
|
@@ -688,7 +680,6 @@ def convert_ebook_to_audio(ebook_file, target_voice_file, language, use_custom_m
|
|
688 |
except Exception as e:
|
689 |
print(f"Error updating progress: {e}")
|
690 |
|
691 |
-
# Convert chapters to audio (custom or standard model)
|
692 |
if use_custom_model:
|
693 |
convert_chapters_to_audio_custom_model(chapters_directory, output_audio_directory, target_voice, language, custom_model)
|
694 |
else:
|
@@ -699,7 +690,6 @@ def convert_ebook_to_audio(ebook_file, target_voice_file, language, use_custom_m
|
|
699 |
except Exception as e:
|
700 |
print(f"Error updating progress: {e}")
|
701 |
|
702 |
-
# Create an M4B from the chapters
|
703 |
create_m4b_from_chapters(output_audio_directory, ebook_file_path, audiobook_output_path)
|
704 |
|
705 |
# Get the name of the created M4B file
|
@@ -710,12 +700,10 @@ def convert_ebook_to_audio(ebook_file, target_voice_file, language, use_custom_m
|
|
710 |
progress(1.0, desc="Conversion complete")
|
711 |
except Exception as e:
|
712 |
print(f"Error updating progress: {e}")
|
713 |
-
|
714 |
print(f"Audiobook created at {m4b_filepath}")
|
715 |
return f"Audiobook created at {m4b_filepath}", m4b_filepath
|
716 |
|
717 |
|
718 |
-
|
719 |
def list_audiobook_files(audiobook_folder):
|
720 |
# List all files in the audiobook folder
|
721 |
files = []
|
|
|
621 |
print(f"Converted chapter {chapter_num} to audio.")
|
622 |
|
623 |
|
624 |
+
|
625 |
+
# Define the functions to be used in the Gradio interface
|
626 |
def convert_ebook_to_audio(ebook_file, target_voice_file, language, use_custom_model, custom_model_file, custom_config_file, custom_vocab_file, custom_model_url=None, progress=gr.Progress()):
|
|
|
627 |
ebook_file_path = ebook_file if isinstance(ebook_file, str) else ebook_file.name
|
628 |
target_voice = target_voice_file if isinstance(target_voice_file, str) else target_voice_file.name if target_voice_file else None
|
629 |
+
custom_model = None
|
630 |
+
|
631 |
+
|
632 |
|
|
|
633 |
working_files = os.path.join(".", "Working_files", "temp_ebook")
|
634 |
full_folder_working_files = os.path.join(".", "Working_files")
|
635 |
chapters_directory = os.path.join(".", "Working_files", "temp_ebook")
|
636 |
output_audio_directory = os.path.join(".", 'Chapter_wav_files')
|
|
|
|
|
637 |
remove_folder_with_contents(full_folder_working_files)
|
638 |
remove_folder_with_contents(output_audio_directory)
|
639 |
|
640 |
+
if use_custom_model and custom_model_file and custom_config_file and custom_vocab_file:
|
641 |
+
custom_model = {
|
642 |
+
'model': custom_model_file.name,
|
643 |
+
'config': custom_config_file.name,
|
644 |
+
'vocab': custom_vocab_file.name
|
645 |
+
}
|
646 |
if use_custom_model and custom_model_url:
|
647 |
print(f"Received custom model URL: {custom_model_url}")
|
648 |
download_dir = os.path.join(".", "Working_files", "custom_model")
|
|
|
652 |
if rename_vocab_file_if_exists(download_dir):
|
653 |
print("vocab.json file was found and renamed.")
|
654 |
|
|
|
|
|
|
|
|
|
|
|
|
|
655 |
custom_model = {
|
656 |
+
'model': os.path.join(download_dir, 'model.pth'),
|
657 |
+
'config': os.path.join(download_dir, 'config.json'),
|
658 |
+
'vocab': os.path.join(download_dir, 'vocab.json_')
|
659 |
}
|
660 |
|
661 |
try:
|
|
|
663 |
except Exception as e:
|
664 |
print(f"Error updating progress: {e}")
|
665 |
|
|
|
666 |
if not calibre_installed():
|
667 |
return "Calibre is not installed."
|
668 |
|
669 |
+
|
670 |
try:
|
671 |
progress(0.1, desc="Creating chapter-labeled book")
|
672 |
except Exception as e:
|
673 |
print(f"Error updating progress: {e}")
|
674 |
|
|
|
675 |
create_chapter_labeled_book(ebook_file_path)
|
676 |
audiobook_output_path = os.path.join(".", "Audiobooks")
|
677 |
|
|
|
680 |
except Exception as e:
|
681 |
print(f"Error updating progress: {e}")
|
682 |
|
|
|
683 |
if use_custom_model:
|
684 |
convert_chapters_to_audio_custom_model(chapters_directory, output_audio_directory, target_voice, language, custom_model)
|
685 |
else:
|
|
|
690 |
except Exception as e:
|
691 |
print(f"Error updating progress: {e}")
|
692 |
|
|
|
693 |
create_m4b_from_chapters(output_audio_directory, ebook_file_path, audiobook_output_path)
|
694 |
|
695 |
# Get the name of the created M4B file
|
|
|
700 |
progress(1.0, desc="Conversion complete")
|
701 |
except Exception as e:
|
702 |
print(f"Error updating progress: {e}")
|
|
|
703 |
print(f"Audiobook created at {m4b_filepath}")
|
704 |
return f"Audiobook created at {m4b_filepath}", m4b_filepath
|
705 |
|
706 |
|
|
|
707 |
def list_audiobook_files(audiobook_folder):
|
708 |
# List all files in the audiobook folder
|
709 |
files = []
|