EyeSee_chi / tts.py
Niki Zhang
Create tts.py
9434e0e verified
raw
history blame
1.57 kB
import os
import sys
from fastapi import Request
import gradio as gr
from TTS.api import TTS
from TTS.utils.manage import ModelManager
model_names = TTS().list_models()
print(model_names.__dict__)
print(model_names.__dir__())
os.environ["COQUI_TOS_AGREED"] = "1"
model_name = "tts_models/multilingual/multi-dataset/xtts_v2"
tts = TTS(model_name, gpu=False)
tts.to("cuda")
def predict(prompt, language, audio_file_pth, mic_file_path, use_mic, agree):
if agree:
speaker_wav = mic_file_path if use_mic and mic_file_path else audio_file_pth
if not speaker_wav:
return None, "Please provide a reference audio."
if len(prompt) < 2:
return None, "Please provide a longer text prompt."
if len(prompt) > 10000:
return None, "Text length is limited to 10000 characters. Please try a shorter text."
try:
if language == "fr" and "your" in model_name:
language = "fr-fr"
if "/fr/" in model_name:
language = None
tts.tts_to_file(
text=prompt,
file_path="output.wav",
speaker_wav=speaker_wav,
language=language
)
except RuntimeError as e:
if "device-assert" in str(e):
return None, "Runtime error encountered. Please try again later."
else:
raise e
return gr.make_waveform(audio="output.wav"), "output.wav"
else:
return None, "Please accept the Terms & Conditions."