文章目录
- FastSpeech 代码解析 —— ljspeech.py
- 简介
- 函数解析
- build_from_path
- _process_utterance
简介
本项目一个基于 FastSpeech 模型的语音转换项目它是使用 PyTorch 实现的(项目地址)。 FastSpeech 基于 Transformer 的前馈网络用于并行生成 TTS 梅尔谱图。 FastSpeech 模型与自回归 Transformer TTS 相比梅尔谱图生成速度加快了 270 倍端到端语音合成速度加快了 38 倍。(详情请参阅 FastSpeech 的详细介绍)。 由于 FastSpeech 项目较大代码较多为了方便学习与整理对主要代码进行依次介绍。 本文将介绍项目中的 ljspeech.py 文件 LJSpeech 数据集处理。
函数解析
build_from_path
该函数的作用是 为 LJSpeech 数据集制作 mel 谱图并返回语音文本列表。
输入参数
in_dir:LJSpeech数据集路径out_dir:mel谱图输出路径
输出参数
texts:LJSpeech数据集语音文本列表
代码详解
def build_from_path(in_dir, out_dir):# 计数器index 1# 语音文本列表texts []# 根据输入的 LJSpeech 数据集所在路径打开 metadata.csv 文件with open(os.path.join(in_dir, metadata.csv), encodingutf-8) as f:# 按行读取语音文本内容for line in f.readlines():# 每处理 100 个文件打印进度if index % 100 0:print("{:d} Done".format(index))# 删除前后空格后进行分段parts line.strip().split(|)# 第一段为语音路径wav_path os.path.join(in_dir, wavs, %s.wav % parts[0])# 第三段为语音文本text parts[2]# 处理音频文件保存转换的 mel 谱图添加语音文本至列表texts.append(_process_utterance(out_dir, index, wav_path, text))# 计数器更新index index 1# 返回语音文本列表return texts
_process_utterance
该函数的作用是
输入参数
out_dir:mel谱图输出路径index:计数器wav_path:音频文件路径text:文本内容
输出参数
texts:LJSpeech数据集语音文本列表
代码详解
def _process_utterance(out_dir, index, wav_path, text):# 将语音波形转换为 mel 频谱图:mel_spectrogram audio.tools.get_mel(wav_path).numpy().astype(np.float32)# 将 mel 频谱图保存至文件mel_filename ljspeech-mel-%05d.npy % indexnp.save(os.path.join(out_dir, mel_filename),mel_spectrogram.T, allow_pickleFalse)# 返回文本内容return text