import os import gradio as gr import torch from TTS.api import TTS import spaces # Ensure this is the correct module for your environment # Agree to Coqui TOS os.environ["COQUI_TOS_AGREED"] = "1" # Determine the device device = "cuda" if torch.cuda.is_available() else "cpu" # Initialize TTS model without the 'device' parameter tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2") tts.to(device) @spaces.GPU() # Removed enable_queue=True since it's now always True def clone(text, audio): output_path = "./output.wav" tts.tts_to_file(text=text, speaker_wav=audio, language="en", file_path=output_path) return output_path # Define the UI using Gradio Blocks with enhanced styling with gr.Blocks(title="Advanced Voice Clone", theme=gr.themes.Soft(primary_hue="teal")) as demo: gr.Markdown( """ # 🎤 Voice Clone **by Vortex** This application uses the **xtts_v2** model for voice cloning. *Non-commercial use only.* [Coqui Public Model License](https://coqui.ai/cpml) | --- """ ) # Inject custom CSS using Markdown and """ ) with gr.Row(): with gr.Column(scale=1): text_input = gr.Textbox( label="Enter Text", placeholder="Type the text you want to clone...", lines=4 ) audio_input = gr.Audio( type="filepath", label="Upload Reference Voice", elem_id="audio_upload" ) clone_button = gr.Button("Clone Voice", variant="primary") with gr.Column(scale=1): output_audio = gr.Audio( type="filepath", label="Cloned Voice Output", interactive=False ) gr.Markdown( """ --- ❤️ If you find this tool useful, please consider giving it a thumbs up! """ ) # Connect the button to the function clone_button.click( clone, inputs=[text_input, audio_input], outputs=output_audio, queue=True ) # Launch the app demo.launch(server_name="0.0.0.0", server_port=7860)