Spaces:
Runtime error
Runtime error
File size: 2,018 Bytes
3f53728 a13c70d 11fdcf5 820c332 29f6b1d 820c332 11fdcf5 a13c70d 3f53728 a13c70d 820c332 b416379 820c332 29f6b1d b416379 29f6b1d 820c332 d3b49fc 29f6b1d b416379 820c332 d3b49fc 820c332 a13c70d 006f2a8 |
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
import spaces
import gradio as gr
import torch
from TTS.api import TTS
import os
import json
import scipy.io.wavfile as wavfile
import numpy as np
os.environ["COQUI_TOS_AGREED"] = "1"
device = "cuda"
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device)
@spaces.GPU(enable_queue=True)
def clone(text, audio):
# Generowanie mowy
result = tts.tts(text=text, speaker_wav=audio, language="pl", return_dict=True)
# Konwersja do numpy array i zapisanie jako plik WAV
wav_np = np.array(result['wav'])
wavfile.write("./output.wav", 24000, (wav_np * 32767).astype(np.int16))
# Przygotowanie informacji o fonemach
phonemes_data = []
cumulative_duration = 0
if 'phonemes' in result and 'durations' in result:
for phoneme, duration in zip(result['phonemes'], result['durations']):
start_time = cumulative_duration
end_time = start_time + duration
phonemes_data.append({
"phoneme": phoneme,
"start": float(start_time),
"end": float(end_time),
"duration": float(duration)
})
cumulative_duration = end_time
else:
phonemes_data.append({"error": "Brak informacji o fonemach"})
# Zapisywanie informacji o fonemach do pliku JSON
with open("./phonemes_info.json", "w", encoding="utf-8") as f:
json.dump(phonemes_data, f, ensure_ascii=False, indent=2)
return "./output.wav", "./phonemes_info.json"
# Interfejs Gradio
iface = gr.Interface(
fn=clone,
inputs=[
gr.Textbox(label='Tekst do syntezy'),
gr.Audio(type='filepath', label='Plik audio z głosem referencyjnym')
],
outputs=[
gr.Audio(type='filepath', label='Zsyntezowana mowa'),
gr.File(label='Informacje o fonemach (JSON)')
],
title='Klonowanie Głosu z Informacjami o Fonemach',
theme=gr.themes.Base(primary_hue="teal", secondary_hue="teal", neutral_hue="slate")
)
iface.launch() |