Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -22,43 +22,21 @@ language_map = {
|
|
| 22 |
"Mandarin Chinese": "z"
|
| 23 |
}
|
| 24 |
|
| 25 |
-
# Print installation instructions if necessary
|
| 26 |
-
install_messages = {
|
| 27 |
-
"Japanese": "pip install misaki[ja]",
|
| 28 |
-
"Mandarin Chinese": "pip install misaki[zh]"
|
| 29 |
-
}
|
| 30 |
-
|
| 31 |
-
|
| 32 |
|
| 33 |
def update_pipeline(Language):
|
| 34 |
""" Updates the pipeline only if the language has changed. """
|
| 35 |
global pipeline, last_used_language
|
| 36 |
-
|
| 37 |
-
# Print installation instructions if necessary
|
| 38 |
-
if Language in install_messages:
|
| 39 |
-
# raise gr.Error(f"To Use {Language} Install: {install_messages[Language]}",duration=10)
|
| 40 |
-
gr.Warning(f"To Use {Language} Install: {install_messages[Language]}",duration=10)
|
| 41 |
-
# gr.Warning("Reverting to default English pipeline...", duration=5)
|
| 42 |
-
# print(f"To use {Language}, install: {install_messages[Language]}")
|
| 43 |
-
# print("Reverting to default English pipeline...")
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
# Revert to default English and return immediately
|
| 47 |
-
pipeline = KPipeline(lang_code="a")
|
| 48 |
-
last_used_language = "a"
|
| 49 |
-
return
|
| 50 |
-
|
| 51 |
# Get language code, default to 'a' if not found
|
| 52 |
new_lang = language_map.get(Language, "a")
|
| 53 |
|
| 54 |
# Only update if the language is different
|
| 55 |
if new_lang != last_used_language:
|
|
|
|
|
|
|
| 56 |
try:
|
| 57 |
pipeline = KPipeline(lang_code=new_lang)
|
| 58 |
last_used_language = new_lang # Update last used language
|
| 59 |
-
# print(f"Pipeline updated to {Language} ({new_lang})")
|
| 60 |
except Exception as e:
|
| 61 |
-
print(f"Error initializing KPipeline: {e}\nRetrying with default language...")
|
| 62 |
pipeline = KPipeline(lang_code="a") # Fallback to English
|
| 63 |
last_used_language = "a"
|
| 64 |
|
|
@@ -118,15 +96,15 @@ def clean_text(text):
|
|
| 118 |
|
| 119 |
return text
|
| 120 |
|
| 121 |
-
def tts_file_name(text):
|
| 122 |
global temp_folder
|
| 123 |
# Remove all non-alphabetic characters and convert to lowercase
|
| 124 |
text = re.sub(r'[^a-zA-Z\s]', '', text) # Retain only alphabets and spaces
|
| 125 |
text = text.lower().strip() # Convert to lowercase and strip leading/trailing spaces
|
| 126 |
text = text.replace(" ", "_") # Replace spaces with underscores
|
| 127 |
-
|
| 128 |
# Truncate or handle empty text
|
| 129 |
-
truncated_text = text[:20] if len(text) > 20 else text if len(text) > 0 else
|
| 130 |
|
| 131 |
# Generate a random string for uniqueness
|
| 132 |
random_string = uuid.uuid4().hex[:8].upper()
|
|
@@ -162,7 +140,7 @@ def generate_and_save_audio(text, Language="American English",voice="af_bella",
|
|
| 162 |
text=clean_text(text)
|
| 163 |
update_pipeline(Language)
|
| 164 |
generator = pipeline(text, voice=voice, speed=speed, split_pattern=r'\n+')
|
| 165 |
-
save_path=tts_file_name(text)
|
| 166 |
# Open the WAV file for writing
|
| 167 |
timestamps={}
|
| 168 |
with wave.open(save_path, 'wb') as wav_file:
|
|
@@ -586,4 +564,4 @@ last_used_language = "a"
|
|
| 586 |
pipeline = KPipeline(lang_code=last_used_language)
|
| 587 |
temp_folder = create_audio_dir()
|
| 588 |
if __name__ == "__main__":
|
| 589 |
-
main()
|
|
|
|
| 22 |
"Mandarin Chinese": "z"
|
| 23 |
}
|
| 24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
|
| 26 |
def update_pipeline(Language):
|
| 27 |
""" Updates the pipeline only if the language has changed. """
|
| 28 |
global pipeline, last_used_language
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
# Get language code, default to 'a' if not found
|
| 30 |
new_lang = language_map.get(Language, "a")
|
| 31 |
|
| 32 |
# Only update if the language is different
|
| 33 |
if new_lang != last_used_language:
|
| 34 |
+
pipeline = KPipeline(lang_code=new_lang)
|
| 35 |
+
last_used_language = new_lang
|
| 36 |
try:
|
| 37 |
pipeline = KPipeline(lang_code=new_lang)
|
| 38 |
last_used_language = new_lang # Update last used language
|
|
|
|
| 39 |
except Exception as e:
|
|
|
|
| 40 |
pipeline = KPipeline(lang_code="a") # Fallback to English
|
| 41 |
last_used_language = "a"
|
| 42 |
|
|
|
|
| 96 |
|
| 97 |
return text
|
| 98 |
|
| 99 |
+
def tts_file_name(text,language):
|
| 100 |
global temp_folder
|
| 101 |
# Remove all non-alphabetic characters and convert to lowercase
|
| 102 |
text = re.sub(r'[^a-zA-Z\s]', '', text) # Retain only alphabets and spaces
|
| 103 |
text = text.lower().strip() # Convert to lowercase and strip leading/trailing spaces
|
| 104 |
text = text.replace(" ", "_") # Replace spaces with underscores
|
| 105 |
+
language=language.replace(" ", "_").strip()
|
| 106 |
# Truncate or handle empty text
|
| 107 |
+
truncated_text = text[:20] if len(text) > 20 else text if len(text) > 0 else language
|
| 108 |
|
| 109 |
# Generate a random string for uniqueness
|
| 110 |
random_string = uuid.uuid4().hex[:8].upper()
|
|
|
|
| 140 |
text=clean_text(text)
|
| 141 |
update_pipeline(Language)
|
| 142 |
generator = pipeline(text, voice=voice, speed=speed, split_pattern=r'\n+')
|
| 143 |
+
save_path=tts_file_name(text,Language)
|
| 144 |
# Open the WAV file for writing
|
| 145 |
timestamps={}
|
| 146 |
with wave.open(save_path, 'wb') as wav_file:
|
|
|
|
| 564 |
pipeline = KPipeline(lang_code=last_used_language)
|
| 565 |
temp_folder = create_audio_dir()
|
| 566 |
if __name__ == "__main__":
|
| 567 |
+
main()
|