Spaces:
Running
on
Zero
Running
on
Zero
Attempt connection to TTS model up to 3 times
Browse files
app.py
CHANGED
@@ -805,51 +805,56 @@ def synthandreturn(text):
|
|
805 |
print("[debug] Using", mdl1, mdl2)
|
806 |
def predict_and_update_result(text, model, result_storage):
|
807 |
print(model)
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
829 |
else:
|
830 |
-
#
|
831 |
-
|
832 |
-
|
833 |
-
end_parameters = _get_param_examples(
|
834 |
-
endpoints['unnamed_endpoints'][str(fn_index)]['parameters']
|
835 |
-
)
|
836 |
-
|
837 |
-
space_inputs = _override_params(end_parameters, model)
|
838 |
-
|
839 |
-
# force text
|
840 |
-
space_inputs[HF_SPACES[model]['text_param_index']] = text
|
841 |
-
|
842 |
-
results = mdl_space.predict(*space_inputs, api_name=api_name, fn_index=fn_index)
|
843 |
-
|
844 |
-
# return path to audio
|
845 |
-
result = results[return_audio_index] if (not isinstance(results, str)) else results
|
846 |
else:
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
raise gr.Error('Unable to call API, please try again :)')
|
853 |
print('Done with', model)
|
854 |
# try:
|
855 |
# doresample(result)
|
@@ -860,9 +865,10 @@ def synthandreturn(text):
|
|
860 |
audio = AudioSegment.from_file(result)
|
861 |
current_sr = audio.frame_rate
|
862 |
if current_sr > 24000:
|
|
|
863 |
audio = audio.set_frame_rate(24000)
|
864 |
try:
|
865 |
-
print('Trying to normalize audio')
|
866 |
audio = match_target_amplitude(audio, -20)
|
867 |
except:
|
868 |
print('[WARN] Unable to normalize audio')
|
|
|
805 |
print("[debug] Using", mdl1, mdl2)
|
806 |
def predict_and_update_result(text, model, result_storage):
|
807 |
print(model)
|
808 |
+
# 3 attempts
|
809 |
+
attempt_count = 0
|
810 |
+
while attempt_count < 3:
|
811 |
+
try:
|
812 |
+
if model in AVAILABLE_MODELS:
|
813 |
+
if '/' in model:
|
814 |
+
# Use public HF Space
|
815 |
+
mdl_space = Client(model, hf_token=hf_token)
|
816 |
+
# assume the index is one of the first 9 return params
|
817 |
+
return_audio_index = int(HF_SPACES[model]['return_audio_index'])
|
818 |
+
endpoints = mdl_space.view_api(all_endpoints=True, print_info=False, return_format='dict')
|
819 |
+
|
820 |
+
api_name = None
|
821 |
+
fn_index = None
|
822 |
+
end_parameters = None
|
823 |
+
# has named endpoint
|
824 |
+
if '/' == HF_SPACES[model]['function'][0]:
|
825 |
+
# audio sync function name
|
826 |
+
api_name = HF_SPACES[model]['function']
|
827 |
+
|
828 |
+
end_parameters = _get_param_examples(
|
829 |
+
endpoints['named_endpoints'][api_name]['parameters']
|
830 |
+
)
|
831 |
+
# has unnamed endpoint
|
832 |
+
else:
|
833 |
+
# endpoint index is the first character
|
834 |
+
fn_index = int(HF_SPACES[model]['function'])
|
835 |
+
|
836 |
+
end_parameters = _get_param_examples(
|
837 |
+
endpoints['unnamed_endpoints'][str(fn_index)]['parameters']
|
838 |
+
)
|
839 |
+
|
840 |
+
space_inputs = _override_params(end_parameters, model)
|
841 |
+
|
842 |
+
# force text
|
843 |
+
space_inputs[HF_SPACES[model]['text_param_index']] = text
|
844 |
+
|
845 |
+
results = mdl_space.predict(*space_inputs, api_name=api_name, fn_index=fn_index)
|
846 |
+
|
847 |
+
# return path to audio
|
848 |
+
result = results[return_audio_index] if (not isinstance(results, str)) else results
|
849 |
else:
|
850 |
+
# Use the private HF Space
|
851 |
+
result = router.predict(text, AVAILABLE_MODELS[model].lower(), api_name="/synthesize")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
852 |
else:
|
853 |
+
result = router.predict(text, model.lower(), api_name="/synthesize")
|
854 |
+
break
|
855 |
+
except:
|
856 |
+
attempt_count++
|
857 |
+
raise gr.Error('Unable to call API, please try again')
|
|
|
858 |
print('Done with', model)
|
859 |
# try:
|
860 |
# doresample(result)
|
|
|
865 |
audio = AudioSegment.from_file(result)
|
866 |
current_sr = audio.frame_rate
|
867 |
if current_sr > 24000:
|
868 |
+
print('Resampling', model)
|
869 |
audio = audio.set_frame_rate(24000)
|
870 |
try:
|
871 |
+
print('Trying to normalize audio', model)
|
872 |
audio = match_target_amplitude(audio, -20)
|
873 |
except:
|
874 |
print('[WARN] Unable to normalize audio')
|