File size: 1,050 Bytes
e527a2b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import subprocess
import os
import uuid

MODEL = "en_US-amy-medium.onnx"
MODEL_PATH = f"./models/en_US/{MODEL}"
CONFIG_PATH = f"./models/en_US/en_US-amy-medium.onnx.json"

# Download model from Hugging Face if not present
if not os.path.exists(MODEL_PATH):
    os.makedirs("./models/en_US", exist_ok=True)
    subprocess.run(["wget", "-O", MODEL_PATH,
                    "https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/amy-medium.onnx"])
    subprocess.run(["wget", "-O", CONFIG_PATH,
                    "https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/en_US-amy-medium.onnx.json"])

def tts_piper(text):
    output_file = f"output_{uuid.uuid4().hex}.wav"
    command = [
        "piper",
        "--model", MODEL_PATH,
        "--config", CONFIG_PATH,
        "--output_file", output_file,
        "--text", text
    ]
    subprocess.run(command)
    return output_file

demo = gr.Interface(fn=tts_piper, inputs="text", outputs="audio", title="Piper TTS - Hugging Face Demo")
demo.launch()