项目介绍:tts-hifigan-ljspeech
项目背景
tts-hifigan-ljspeech项目是一个基于HiFIGAN语音合成模型的项目,该模型利用了LJSpeech数据集进行训练。HiFIGAN是一种用于语音合成的神经网络模型,能够将声谱图转换为可听的波形。这种技术通常用在文本转语音(Text-to-Speech, TTS)系统中,作为将输入文本转换为声谱图后的后处理步骤。
使用说明
工具安装
项目依赖于SpeechBrain工具包进行开发和使用。安装方法如下:
pip install speechbrain
更多关于SpeechBrain的使用教程和详细信息,可以访问SpeechBrain官方网站。
基本使用方法
项目提供了将声谱图转换为波形的基础功能,使用简便。以下是Python代码示例:
import torch
from speechbrain.inference.vocoders import HIFIGAN
# 加载预训练的HiFIGAN模型
hifi_gan = HIFIGAN.from_hparams(source="speechbrain/tts-hifigan-ljspeech", savedir="pretrained_models/tts-hifigan-ljspeech")
mel_specs = torch.rand(2, 80, 298) # 随机生成用于示例的声谱图
waveforms = hifi_gan.decode_batch(mel_specs) # 解码为波形
高级用法:声谱图到波形的转换
import torchaudio
from speechbrain.inference.vocoders import HIFIGAN
from speechbrain.lobes.models.FastSpeech2 import mel_spectogram
# 加载训练好的HiFIGAN声码器
hifi_gan = HIFIGAN.from_hparams(source="speechbrain/tts-hifigan-ljspeech", savedir="pretrained_models/tts-hifigan-ljspeech")
# 加载音频文件
signal, rate = torchaudio.load('speechbrain/tts-hifigan-ljspeech/example.wav')
# 计算梅尔声谱图
spectrogram, _ = mel_spectogram(
audio=signal.squeeze(),
sample_rate=22050,
hop_length=256,
n_mels=80,
n_fft=1024,
f_min=0.0,
f_max=8000.0
)
# 将声谱图转换为波形
waveforms = hifi_gan.decode_batch(spectrogram)
# 保存生成的音频波形
torchaudio.save('waveform_reconstructed.wav', waveforms.squeeze(1), 22050)
完整的TTS使用流程
import torchaudio
from speechbrain.inference.TTS import Tacotron2
from speechbrain.inference.vocoders import HIFIGAN
# 初始化语音合成模型(Tacotron2)和声码器(HiFIGAN)
tacotron2 = Tacotron2.from_hparams(source="speechbrain/tts-tacotron2-ljspeech", savedir="pretrained_models/tts-tacotron2-ljspeech")
hifi_gan = HIFIGAN.from_hparams(source="speechbrain/tts-hifigan-ljspeech", savedir="pretrained_model/tts-hifigan-ljspeech")
# 运行文本转语音
mel_output, mel_length, alignment = tacotron2.encode_text("Mary had a little lamb")
# 将声谱图转换为波形
waveforms = hifi_gan.decode_batch(mel_output)
# 保存波形为音频文件
torchaudio.save('example_TTS.wav', waveforms.squeeze(1), 22050)
GPU推理
如果需要在GPU上进行推理,可以在调用from_hparams
方法时添加参数run_opts={"device":"cuda"}
。
模型训练
该模型使用SpeechBrain进行训练。要从头开始训练模型,请按照以下步骤操作:
- 克隆SpeechBrain代码库:
git clone https://github.com/speechbrain/speechbrain/
- 安装所需依赖:
cd speechbrain
pip install -r requirements.txt
pip install -e .
- 运行训练脚本:
cd recipes/LJSpeech/TTS/vocoder/hifi_gan/
python train.py hparams/train.yaml --data_folder /path/to/LJspeech
训练结果(包括模型和日志等)可以通过此链接获取。
备注
此项目中的HiFIGAN模型是基于单一说话者声音训练的,它在一些不同说话者的情况下也能表现良好,但对多说话者语音合成需求,可考虑使用多说话者版本的声码器,例如LibriTTS数据集训练的模型。