11import torch , io , sys , os , logging , warnings
22from flask import Flask , request , Response , render_template
33from langdetect import detect
4- from torch .serialization import add_safe_globals
54from TTS .api import TTS
6- from TTS .tts .configs .xtts_config import XttsConfig
7- from TTS .tts .models .xtts import XttsAudioConfig , XttsArgs
8- from TTS .config .shared_configs import BaseDatasetConfig
9- add_safe_globals ([XttsConfig , XttsAudioConfig , XttsArgs , BaseDatasetConfig ])
105
11- warnings .simplefilter (action = 'ignore' , category = FutureWarning )
12- sys .stdout = open (os .devnull , 'w' )
13- logging .disable (logging .CRITICAL )
6+ # warnings.simplefilter(action='ignore', category=FutureWarning)
7+ # sys.stdout = open(os.devnull, 'w')
8+ # logging.disable(logging.CRITICAL)
9+
10+ print (f"Python executable(for gebug): { sys .executable } " )
1411
1512device = "cuda" if torch .cuda .is_available () else "cpu"
1613BASE_DIR = os .path .dirname (os .path .abspath (__file__ ))
1916tts = TTS (model_path = MODEL_PATH , config_path = CONFIG_PATH , progress_bar = False )
2017tts .to (device )
2118
22- EN_VOICE = "./Voices/en_voice.wav"
23- ES_VOICE = "./Voices/es_voice.wav"
24- FR_VOICE = "./Voices/fr_voice.wav"
25- DE_VOICE = "./Voices/de_voice.wav"
26- IT_VOICE = "./Voices/it_voice.wav"
27- PT_VOICE = "./Voices/pt_voice.wav"
28- PL_VOICE = "./Voices/pl_voice.wav"
29- TR_VOICE = "./Voices/tr_voice.wav"
30- RU_VOICE = "./Voices/ru_voice.wav"
31- NL_VOICE = "./Voices/nl_voice.wav"
32- CS_VOICE = "./Voices/cs_voice.wav"
33- AR_VOICE = "./Voices/ar_voice.wav"
34- ZH_CN_VOICE = "./Voices/zh_cn_voice.wav"
35- HU_VOICE = "./Voices/hu_voice.wav"
36- KO_VOICE = "./Voices/ko_voice.wav"
37- JA_VOICE = "./Voices/ja_voice.wav"
38- HI_VOICE = "./Voices/hi_voice.wav"
19+ VOICES = {
20+ 'en' : "./Voices/en_voice.wav" ,
21+ 'es' : "./Voices/es_voice.wav" ,
22+ 'fr' : "./Voices/fr_voice.wav" ,
23+ 'de' : "./Voices/de_voice.wav" ,
24+ 'it' : "./Voices/it_voice.wav" ,
25+ 'pt' : "./Voices/pt_voice.wav" ,
26+ 'pl' : "./Voices/pl_voice.wav" ,
27+ 'tr' : "./Voices/tr_voice.wav" ,
28+ 'ru' : "./Voices/ru_voice.wav" ,
29+ 'nl' : "./Voices/nl_voice.wav" ,
30+ 'cs' : "./Voices/cs_voice.wav" ,
31+ 'ar' : "./Voices/ar_voice.wav" ,
32+ 'zh-cn' : "./Voices/zh_cn_voice.wav" ,
33+ 'hu' : "./Voices/hu_voice.wav" ,
34+ 'ko' : "./Voices/ko_voice.wav" ,
35+ 'ja' : "./Voices/ja_voice.wav" ,
36+ 'hi' : "./Voices/hi_voice.wav"
37+ }
38+
3939app = Flask (__name__ )
4040
41+
4142@app .route ('/' )
4243def index ():
4344 return render_template ("index.html" )
@@ -49,43 +50,9 @@ def speak():
4950 lang = detect (text )
5051 except :
5152 lang = "en"
52- if lang not in ['en' , 'es' , 'fr' , 'de' , 'it' , 'pt' , 'pl' , 'tr' , 'ru' , 'nl' , 'cs' , 'ar' , 'zh-cn' , 'hu' , 'ko' , 'ja' , 'hi' ]:
53- lang = "en"
5453
55- if (lang == "en" ):
56- speaker_file = EN_VOICE
57- elif (lang == "es" ):
58- speaker_file = ES_VOICE
59- elif (lang == "fr" ):
60- speaker_file = FR_VOICE
61- elif (lang == "de" ):
62- speaker_file = DE_VOICE
63- elif (lang == "it" ):
64- speaker_file = IT_VOICE
65- elif (lang == "pt" ):
66- speaker_file = PT_VOICE
67- elif (lang == "pl" ):
68- speaker_file = PL_VOICE
69- elif (lang == "tr" ):
70- speaker_file = TR_VOICE
71- elif (lang == "ru" ):
72- speaker_file = RU_VOICE
73- elif (lang == "nl" ):
74- speaker_file = NL_VOICE
75- elif (lang == "cs" ):
76- speaker_file = CS_VOICE
77- elif (lang == "ar" ):
78- speaker_file = AR_VOICE
79- elif (lang == "zh-cn" ):
80- speaker_file = ZH_CN_VOICE
81- elif (lang == "hu" ):
82- speaker_file = HU_VOICE
83- elif (lang == "ko" ):
84- speaker_file = KO_VOICE
85- elif (lang == "ja" ):
86- speaker_file = JA_VOICE
87- elif (lang == "hi" ):
88- speaker_file = HI_VOICE
54+ # Default to English if language not supported
55+ speaker_file = VOICES .get (lang , VOICES ['en' ])
8956
9057 buf = io .BytesIO ()
9158 with torch .inference_mode ():
@@ -101,5 +68,6 @@ def speak():
10168
10269 return Response (data , mimetype = "audio/wav" )
10370
104- if __name__ == "__main__" :
71+
72+ if __name__ == "__main__" :
10573 app .run (port = 7777 , threaded = True )
0 commit comments