Spaces:
Runtime error
Runtime error
File size: 2,309 Bytes
786ba0f |
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 64 65 66 67 68 69 70 71 72 73 |
import gradio as gr
import torch
# import torchaudio
from transformers import SpeechT5Processor, SpeechT5ForTextToSpeech, SpeechT5HifiGan
from datasets import load_dataset
from transformers import pipeline
def text_to_audio(text):
# 这里是你的文本转音频的算法实现
# 加载处理器和模型
processor = SpeechT5Processor.from_pretrained("/home/tt/speecht5/speecht5_finetuned/checkpoint-19000")
model = SpeechT5ForTextToSpeech.from_pretrained("/home/tt/speecht5/speecht5_finetuned/checkpoint-19000")
# 加载说话者嵌入数据集
embeddings_dataset = load_dataset("Matthijs/cmu-arctic-xvectors", split="validation")
speaker_index = 0
speaker_embeddings = torch.tensor(embeddings_dataset[speaker_index]["xvector"]).unsqueeze(0)
# 处理输入文本
inputs = processor(text=text, return_tensors="pt")
# 加载声码器
vocoder = SpeechT5HifiGan.from_pretrained("microsoft/speecht5_hifigan")
# 生成语音
speech = model.generate_speech(inputs["input_ids"], speaker_embeddings, vocoder=vocoder)
# 调整音频张量的形状以匹配 torchaudio.save 的要求
speech_2d = speech.unsqueeze(0) # 添加一个维度,使其成为二维张量
# 保存音频为 .wav 文件
# torchaudio.save("generated_speech1.wav", speech_2d, 16000)
return speech
def audio_to_text(audio):
sr, audio_array = audio
data_dict = {"array" : audio_array, "sampling_rate" : sr}
device = "cuda:0" if torch.cuda.is_available() else "cpu"
pipe = pipeline(
"automatic-speech-recognition", model="/home/rouvling/temp_lug/gradio/asr/checkpoint-4000-old", device=device
)
result=pipe(data_dict, max_new_tokens=256)
return result['text']
text_to_audio_interface = gr.Interface(
fn=text_to_audio,
inputs="text",
outputs="audio",
title="Text to Audio",
description="输入文字,生成对应音频",
)
audio_to_text_interface = gr.Interface(
fn=audio_to_text,
inputs="audio",
outputs="text",
title="Audio to Text",
description="上传音频,生成对应文字",
)
demo = gr.TabbedInterface(
[text_to_audio_interface, audio_to_text_interface],
["Text to Audio", "Audio to Text"],
)
demo.launch(server_name="0.0.0.0", server_port=8080)
|