Spaces:
Running
Running
import spaces | |
import torch | |
import gradio as gr | |
from TTS.api import TTS | |
import os | |
from unittest.mock import patch | |
os.environ["COQUI_TOS_AGREED"] = "1" | |
# Function to always return 'y' | |
def always_yes(*args, **kwargs): | |
return 'y' | |
# Patch the input function to always return 'y' | |
with patch('builtins.input', always_yes): | |
device = "cuda:0" if torch.cuda.is_available() else "cpu" | |
tts = TTS(model_name="tts_models/multilingual/multi-dataset/xtts_v2", progress_bar=False).to(device) | |
def generate_voice(text, audio_file_path): | |
# Create a directory if it does not exist | |
output_dir = "/tmp/" | |
if not os.path.exists(output_dir): | |
os.makedirs(output_dir) | |
output_path = os.path.join(output_dir, "cloned_audio.wav") # Using /tmp/ directory | |
tts.tts_to_file( | |
text, | |
speaker_wav=audio_file_path, # Directly use the file path string | |
language="en", # Assuming the language is English | |
file_path=output_path, | |
split_sentences=True, | |
# Assuming the TTS model requires a speaker identifier and '1' is a valid identifier | |
) | |
return output_path | |
import gradio as gr | |
# Define the Gradio interface | |
iface = gr.Interface( | |
fn=generate_voice, | |
inputs=[ | |
gr.Textbox(label="Input Text"), | |
gr.Audio(label="Input Audio", type="filepath") | |
], | |
outputs=gr.Audio(label="Cloned Voice"), | |
title="Voice Cloning TTS" | |
) | |
# Launch the interface | |
iface.launch() |