import spaces import gradio as gr import torch from TTS.api import TTS import os os.environ["COQUI_TOS_AGREED"] = "1" import gradio as gr import torch from TTS.api import TTS import spaces import os # 1. Initialize the model on CPU first # We do this OUTSIDE the function so it doesn't reload every time you click the button tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2", gpu=False) @spaces.GPU(duration=60) # Give it enough time for voice cloning def clone(text, audio): # 2. Check if CUDA is actually available before moving if torch.cuda.is_available(): tts.to("cuda") # 3. Perform the synthesis tts.tts_to_file( text=text, speaker_wav=audio, language="en", file_path="./output.wav" ) # 4. Move it back to CPU to be a good citizen on ZeroGPU if torch.cuda.is_available(): tts.to("cpu") return "./output.wav" # ... your Gradio Blocks/Interface code ... iface = gr.Interface(fn=clone, inputs=[gr.Textbox(label='Text'),gr.Audio(type='filepath', label='Voice reference audio file')], outputs=gr.Audio(type='filepath'), title='Voice Clone', description=""" by [Tony Assi](https://www.tonyassi.com/) ---