import gradio as gr | |
import torch | |
import soundfile as sf | |
from speechbrain.inference.TTS import Tacotron2 | |
from speechbrain.inference.vocoders import HIFIGAN | |
# モデルのロード | |
hifi_gan = HIFIGAN.from_hparams(source="speechbrain/tts-hifigan-ljspeech", savedir="tmpdir_vocoder") | |
tacotron2 = Tacotron2.from_hparams(source="speechbrain/tts-tacotron2-ljspeech", savedir="tmpdir_tts") | |
# 推論関数の定義 | |
def synthesize_speech(text): | |
# テキストをトークンIDに変換 | |
tokenized = tacotron2.tokenizer(text, phonemize=False) | |
# トークンIDをLong型のテンソルに変換 | |
tokens = torch.LongTensor(tokenized) | |
# Tacotron2でmel spectrogramを生成 | |
mel_output, mel_length, alignment = tacotron2.encode_batch(tokens) | |
# HiFi-GANでmel spectrogramから音声を生成 | |
waveforms = hifi_gan.decode_batch(mel_output) | |
# 音声を .wav 形式で保存 | |
sf.write("speech.wav", waveforms.squeeze().cpu().numpy(), samplerate=hifi_gan.hparams.sample_rate) | |
return "speech.wav" | |
# Gradioインターフェースの作成 | |
iface = gr.Interface( | |
fn=synthesize_speech, | |
inputs=gr.Textbox(lines=5, label="Input Text"), | |
outputs=gr.Audio(label="Output Audio", type="filepath"), | |
title="TTS Demo", | |
description="Enter text to synthesize speech." | |
) | |
iface.launch() | |
# import gradio as gr | |
# import torch | |
# from speechbrain.inference.TTS import Tacotron2 | |
# from speechbrain.inference.vocoders import HIFIGAN | |
# # モデルのロード | |
# hifi_gan = HIFIGAN.from_hparams(source="speechbrain/tts-hifigan-ljspeech", savedir="tmpdir_vocoder") | |
# tacotron2 = Tacotron2.from_hparams(source="speechbrain/tts-tacotron2-ljspeech", savedir="tmpdir_tts") | |
# # 推論関数の定義 | |
# def synthesize_speech(text): | |
# # Tacotron2でmel spectrogramを生成 | |
# # テキストを直接入力として、LongTensorでラップする | |
# mel_output, mel_length, alignment = tacotron2.encode_batch([text]) | |
# # HiFi-GANでmel spectrogramから音声を生成 | |
# waveforms = hifi_gan.decode_batch(mel_output) | |
# # torch tensorをwavfileとして保存 | |
# torch.save(waveforms, "speech.pt") | |
# return "speech.pt" | |
# # Gradioインターフェースの作成 | |
# iface = gr.Interface( | |
# fn=synthesize_speech, | |
# inputs=gr.Textbox(lines=5, label="Input Text"), | |
# outputs=gr.Audio(label="Output Audio", type="filepath"), | |
# title="TTS Demo", | |
# description="Enter text to synthesize speech." | |
# ) | |
# iface.launch() | |