这段代码是数据预处理部分,主要用于读取语音数据和对应的拼音和汉字,并生成对应的词汇表。具体分析如下:

  • source_init() 函数中,首先根据 self.data_type 的值选择读取哪些数据集的文件,然后循环读取每个文件中的每一行,并提取出音频文件名、对应的拼音和汉字。
  • 然后将这些文件名、拼音和汉字分别存储到 self.wav_lstself.pny_lstself.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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录