File size: 1,533 Bytes
f41d3a4
c05c224
0bcf9d7
a1e273e
88a9a72
 
4f47fc6
 
c05c224
a1e273e
 
55d6b51
a1e273e
 
 
55d6b51
a1e273e
 
0bcf9d7
c05c224
4f47fc6
f41d3a4
f86b0c1
774ebda
f41d3a4
774ebda
 
 
 
f41d3a4
 
f6fc20c
 
f41d3a4
 
 
 
 
774ebda
 
f41d3a4
 
 
774ebda
f41d3a4
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import os
import torch
import gradio as gr
from TTS.tts.configs.xtts_config import XttsConfig  # ✅ Required for deserialization
from TTS.api import TTS

# ✅ Accept Coqui License Automatically
os.environ["COQUI_TOS_AGREED"] = "1"

# ✅ Allow `XttsConfig` in PyTorch's safe globals
torch.serialization.add_safe_globals([XttsConfig])

# ✅ Force full checkpoint deserialization
def safe_load_checkpoint(model_path):
    return torch.load(model_path, map_location="cpu", weights_only=False)  # ✅ Fix PyTorch 2.6 issue

# ✅ Initialize XTTS Model (CPU-only)
tts = TTS(model_name="tts_models/multilingual/multi-dataset/xtts_v2").to("cpu")





def generate_cloned_voice(text, reference_audio, language):
    output_path = "output.wav"

    # Generate cloned speech with language specification
    tts.tts_to_file(text=text, speaker_wav=reference_audio, file_path=output_path, language=language)

    return output_path

print(tts.languages)

# Create the Gradio interface
interface = gr.Interface(
    fn=generate_cloned_voice,
    inputs=[
        gr.Textbox(label="Enter Translated Text"),
        gr.Audio(label="Upload Reference Audio", type="filepath"),
        gr.Dropdown(["en", "fr", "de", "es", "it"], label="Select Target Language", value="en")
    ],
    outputs=gr.Audio(label="Generated Cloned Voice"),
    title="Free Voice Cloning API",
    description="Upload a sample voice and input text. Select a language, and the system will generate the text in the same voice."
)

# Launch the Gradio app
interface.launch()