Niki Zhang commited on
Commit
9434e0e
·
verified ·
1 Parent(s): 5d6e6ff

Create tts.py

Browse files
Files changed (1) hide show
  1. tts.py +50 -0
tts.py ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import sys
3
+ from fastapi import Request
4
+ import gradio as gr
5
+ from TTS.api import TTS
6
+ from TTS.utils.manage import ModelManager
7
+ model_names = TTS().list_models()
8
+ print(model_names.__dict__)
9
+ print(model_names.__dir__())
10
+
11
+ os.environ["COQUI_TOS_AGREED"] = "1"
12
+
13
+ model_name = "tts_models/multilingual/multi-dataset/xtts_v2"
14
+ tts = TTS(model_name, gpu=False)
15
+ tts.to("cuda")
16
+
17
+ def predict(prompt, language, audio_file_pth, mic_file_path, use_mic, agree):
18
+ if agree:
19
+ speaker_wav = mic_file_path if use_mic and mic_file_path else audio_file_pth
20
+
21
+ if not speaker_wav:
22
+ return None, "Please provide a reference audio."
23
+
24
+ if len(prompt) < 2:
25
+ return None, "Please provide a longer text prompt."
26
+
27
+ if len(prompt) > 10000:
28
+ return None, "Text length is limited to 10000 characters. Please try a shorter text."
29
+
30
+ try:
31
+ if language == "fr" and "your" in model_name:
32
+ language = "fr-fr"
33
+ if "/fr/" in model_name:
34
+ language = None
35
+
36
+ tts.tts_to_file(
37
+ text=prompt,
38
+ file_path="output.wav",
39
+ speaker_wav=speaker_wav,
40
+ language=language
41
+ )
42
+ except RuntimeError as e:
43
+ if "device-assert" in str(e):
44
+ return None, "Runtime error encountered. Please try again later."
45
+ else:
46
+ raise e
47
+
48
+ return gr.make_waveform(audio="output.wav"), "output.wav"
49
+ else:
50
+ return None, "Please accept the Terms & Conditions."