语音数据预处理: 读取数据、生成词汇表
这段代码是数据预处理部分,主要用于读取语音数据和对应的拼音和汉字,并生成对应的词汇表。具体分析如下:
- 在
source_init()函数中,首先根据self.data_type的值选择读取哪些数据集的文件,然后循环读取每个文件中的每一行,并提取出音频文件名、对应的拼音和汉字。 - 然后将这些文件名、拼音和汉字分别存储到
self.wav_lst、self.pny_lst和self.han_lst列表中。 - 如果指定了
self.data_length,则只取前self.data_length个数据。 - 接下来分别调用
mk_am_vocab()、mk_lm_pny_vocab()和mk_lm_han_vocab()函数生成声学词汇表、拼音词汇表和汉字词汇表。这些词汇表是用于模型训练和推理的重要组成部分。
总的来说,这段代码是用于将原始数据处理成模型所需的格式,包括读取数据、分离音频和拼音/汉字、生成词汇表等。
def source_init(self):
print('获取源代码列表...')
read_files = []
if self.data_type == 'train':
if self.thchs30 == True:
read_files.append('thchs_train.txt')
# if self.aishell == True:
# read_files.append('aishell_train.txt')
# if self.prime == True:
# read_files.append('prime.txt')
# if self.stcmd == True:
# read_files.append('stcmd.txt')
elif self.data_type == 'dev':
if self.thchs30 == True:
read_files.append('thchs_dev.txt')
# if self.aishell == True:
# read_files.append('aishell_dev.txt')
elif self.data_type == 'test':
if self.thchs30 == True:
read_files.append('thchs_test.txt')
# if self.aishell == True:
# read_files.append('aishell_test.txt')
# 音频
self.wav_lst = []
# 拼音
self.pny_lst = []
# 汉字
self.han_lst = []
for file in read_files:
print('load ', file, ' data...')
sub_file = 'data/' + file
with open(sub_file, 'r', encoding='utf8') as f:
data = f.readlines()
for line in tqdm(data):
wav_file, pny, han = line.split(' ')
self.wav_lst.append(wav_file)
self.pny_lst.append(pny.split(' '))
self.han_lst.append(han.strip('
'))
if self.data_length:
self.wav_lst = self.wav_lst[:self.data_length]
self.pny_lst = self.pny_lst[:self.data_length]
self.han_lst = self.han_lst[:self.data_length]
print('make am vocab...') # 声学词汇
self.am_vocab = self.mk_am_vocab(self.pny_lst)
print('make lm pinyin vocab...') # 打印语言拼音词汇
self.pny_vocab = self.mk_lm_pny_vocab(self.pny_lst)
print('make lm hanzi vocab...') # 打印语言汉字词汇
self.han_vocab = self.mk_lm_han_vocab(self.han_lst)
原文地址: https://www.cveoy.top/t/topic/nBpX 著作权归作者所有。请勿转载和采集!