File size: 1,289 Bytes
7b74407
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from flask import jsonify, send_file, request
from main import *
import torch, torchaudio, io, base64, uuid, os

def xtts_clone_func(text, audio_sample_path, output_path="output_xtts_audio.wav"):
    if xtts_model is None: return {"error": "XTTS model not initialized."}
    language = "en"; speaker_id = 0
    try:
        with torch.no_grad(): wav = xtts_model.inference(text=text, language_id=language, speaker_id=speaker_id, voice_sample=audio_sample_path, temperature=0.7, length_penalty=1.0)
    except Exception as e: return {"error": f"XTTS inference failed: {e}"}
    torchaudio.save(output_path, wav, 24000); return output_path

def xtts_api(inputs):
    text = inputs[0]; audio_sample_filepath = inputs[1]
    temp_audio_path = f"temp_audio_{uuid.uuid4()}.wav"; os.rename(audio_sample_filepath, temp_audio_path)
    output = xtts_clone_func(text, temp_audio_path); os.remove(temp_audio_path)
    if isinstance(output, dict) and "error" in output: return {"error": output["error"]}
    output_file = output
    with open(output_file, 'rb') as f: audio_content = f.read()
    audio_base64 = base64.b64encode(audio_content).decode('utf-8'); os.remove(output_file); return {"audio_base64": audio_base64, "mimetype": "audio/wav"}
--- END OF FILE xtts_api.py ---