From 322a8a00796885eed09ac2155ebc60ca441537a3 Mon Sep 17 00:00:00 2001 From: yemaozi88 <428968@gmail.com> Date: Sun, 3 Feb 2019 13:54:37 +0100 Subject: [PATCH] label files are extracted. hcompv_scp is made. --- .vs/acoustic_model/v15/.suo | Bin 107520 -> 101376 bytes acoustic_model/fame_hmm.py | 118 ++++++++++++++-------------- acoustic_model/phoneset/fame_asr.py | 2 +- 3 files changed, 62 insertions(+), 58 deletions(-) diff --git a/.vs/acoustic_model/v15/.suo b/.vs/acoustic_model/v15/.suo index 45e0fe26cbf1e65248b4054b2288526087176549..31f158bb3209b110d57c809a568e48e0cea57a27 100644 GIT binary patch delta 3883 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 diff --git a/acoustic_model/fame_hmm.py b/acoustic_model/fame_hmm.py index 9ce920b..d8da964 100644 --- a/acoustic_model/fame_hmm.py +++ b/acoustic_model/fame_hmm.py @@ -4,6 +4,7 @@ os.chdir(r'C:\Users\Aki\source\repos\acoustic_model\acoustic_model') import tempfile import shutil +import glob #import configparser #import subprocess import time @@ -30,8 +31,9 @@ dataset_list = ['devel', 'test', 'train'] # procedure extract_features = 0 -make_lexicon = 1 -make_mlf = 0 +make_lexicon = 0 +make_dictionary = 0 # 4800 sec +make_htk_files = 1 combine_files = 0 flat_start = 0 train_model = 0 @@ -92,11 +94,6 @@ if extract_features: fame_functions.make_hcopy_scp_from_filelist_in_fame(default.fame_dir, dataset, feature_dir_, hcopy_scp.name) pyhtk.wav2mfc(default.config_hcopy, hcopy_scp.name) - # a script file for HCompV - print(">>> making a script file for HCompV... \n") - hcompv_scp = os.path.join(tmp_dir, dataset + '.scp') - fh.make_filelist(feature_dir_, hcompv_scp, '.mfc') - os.remove(hcopy_scp.name) @@ -124,23 +121,11 @@ if make_lexicon: fame_functions.fix_single_quote(lexicon_htk) -## ======================= make phonelist ======================= -#phonelist_txt = os.path.join(default.htk_dir, 'config', 'phonelist.txt') -#pyhtk.create_phonelist_file(fame_asr.phoneset_htk, phonelist_txt) -#sentence = 'ien fan de minsken fan it deiferbliuw sels brúntsje visser' -#log_txt = os.path.join(default.htk_dir, 'config', 'log.txt') -#dictionary_file = os.path.join(default.htk_dir, 'config', 'test.dic') -#pyhtk.create_dictionary( -# sentence, global_ded, log_txt, dictionary_file, lexicon_htk) -#pyhtk.create_dictionary_without_log( -# sentence, global_ded, dictionary_file, lexicon_htk) - - -## ======================= make label file ======================= -if make_mlf: +## ======================= make dic files ======================= +if make_dictionary: for dataset in dataset_list: timer_start = time.time() - print("==== generating word level transcription on dataset {}\n".format(dataset)) + print("==== generating HTK dictionary files on dataset {}\n".format(dataset)) #hcompv_scp = output_dir + '\\scp\\' + dataset + '.scp' #hcompv_scp2 = output_dir + '\\scp\\' + dataset + '_all_words_in_lexicon.scp' @@ -161,25 +146,22 @@ if make_mlf: filename_ = line.split(' ')[0] filename = '_'.join(filename_.split('_')[1:]) sentence = ' '.join(line.split(' ')[1:]) + sentence_htk = fame_functions.word2htk(sentence) wav_file = os.path.join(wav_dir, filename + '.wav') - if len(re.findall(r'[\w]+[âêûô\'ú]+[\w]+', sentence))==0: - try: - sentence_ascii = bytes(sentence, 'ascii') - except UnicodeEncodeError: - print(sentence) - #if os.path.exists(wav_file): - # #dictionary_file = os.path.join(wav_dir, filename + '.dic') - # if pyhtk.create_dictionary_without_log( - # sentence, global_ded, dictionary_file, lexicon_htk) == 0: - # # when the file name is too long, HDMan command does not work. - # # therefore first temporary dictionary_file is made, then renamed. - # shutil.move(dictionary_file, os.path.join(wav_dir, filename + '.dic')) - # label_file = os.path.join(wav_dir, filename + '.lab') - # pyhtk.create_label_file(sentence, label_file) - # else: - # os.remove(dictionary_file) + if os.path.exists(wav_file): + #dictionary_file = os.path.join(wav_dir, filename + '.dic') + if pyhtk.create_dictionary_without_log( + sentence, global_ded, dictionary_file, lexicon_htk) == 0: + # when the file name is too long, HDMan command does not work. + # therefore first temporary dictionary_file is made, then renamed. + shutil.move(dictionary_file, os.path.join(wav_dir, filename + '.dic')) + label_file = os.path.join(wav_dir, filename + '.lab') + pyhtk.create_label_file(sentence, label_file) + else: + os.remove(dictionary_file) print("elapsed time: {}".format(time.time() - timer_start)) + # lexicon #lexicon_htk = pd.read_table(lex_htk, names=['word', 'pronunciation']) @@ -244,8 +226,30 @@ if make_mlf: # fscp.close() # fmlf.close() +## ======================= make other required files ======================= +if make_htk_files: + ## phonelist + phonelist_txt = os.path.join(default.htk_dir, 'config', 'phonelist.txt') + pyhtk.create_phonelist_file(fame_asr.phoneset_htk, phonelist_txt) + + ## hcomp_v.scp + print(">>> making a script file for HCompV... \n") + for dataset in dataset_list: + #timer_start = time.time() + + wav_dir = os.path.join(default.fame_dir, 'fame', 'wav', dataset) + + listdir = glob.glob(os.path.join(wav_dir, '*.dic')) + filelist = [filename.replace(wav_dir, feature_dir).replace('.dic', '.fea') for filename in listdir] + + hcompv_scp = os.path.join(tmp_dir, dataset + '.scp') + with open(hcompv_scp, 'wt', newline='\r\n') as f: + f.write('\n'.join(filelist)) + + +## hcomp_scp +# a script file for HCompV - ## generate phone level transcription # print("generating phone level transcription...\n") # mkphones = output_dir + '\\label\\mkphones0.txt' # subprocessStr = r"HLEd -l * -d " + lex_htk_ + ' -i ' + mlf_phone + ' ' + mkphones + ' ' + mlf_word @@ -253,29 +257,29 @@ if make_mlf: ## ======================= combined scps and mlfs ======================= -if combine_files: - print("==== combine scps and mlfs ====\n") +#if combine_files: +# print("==== combine scps and mlfs ====\n") - fscp = open(hcompv_scp, 'wt') - fmlf = open(combined_mlf, 'wt') +# fscp = open(hcompv_scp, 'wt') +# fmlf = open(combined_mlf, 'wt') - for dataset in dataset_list: - fmlf.write("#!MLF!#\n") - for dataset in dataset_list: - each_mlf = output_dir + '\\label\\' + dataset + '_phone.mlf' - each_scp = output_dir + '\\scp\\' + dataset + '_all_words_in_lexicon.scp' +# for dataset in dataset_list: +# fmlf.write("#!MLF!#\n") +# for dataset in dataset_list: +# each_mlf = output_dir + '\\label\\' + dataset + '_phone.mlf' +# each_scp = output_dir + '\\scp\\' + dataset + '_all_words_in_lexicon.scp' - with open(each_mlf, 'r') as fin: - lines = fin.read() - lines = lines.split('\n') - fmlf.write('\n'.join(lines[1:])) +# with open(each_mlf, 'r') as fin: +# lines = fin.read() +# lines = lines.split('\n') +# fmlf.write('\n'.join(lines[1:])) - with open(each_scp, 'r') as fin: - lines = fin.read() - fscp.write(lines) +# with open(each_scp, 'r') as fin: +# lines = fin.read() +# fscp.write(lines) - fscp.close() - fmlf.close() +# fscp.close() +# fmlf.close() ## ======================= flat start monophones ======================= diff --git a/acoustic_model/phoneset/fame_asr.py b/acoustic_model/phoneset/fame_asr.py index a9f47a7..22e9d65 100644 --- a/acoustic_model/phoneset/fame_asr.py +++ b/acoustic_model/phoneset/fame_asr.py @@ -110,7 +110,7 @@ phoneset_htk = [translation_key_asr2htk.get(i, i) for i in phoneset_short] # 'ä', 'ë', 'ï', 'ö', 'ü' #] translation_key_word2htk = { - '\'': '\\\'', + #'\'': '\\\'', 'í':'i1', 'é':'e1', 'ú':'u1', 'ć':'c1', 'à':'a2', 'è':'e2', 'â':'a3', 'ê':'e3', 'ô':'o3', 'û':'u3',