コード例 #1
0
def decode_dataset(params):

    global decoder, saved_output, references, labels

    lm_alpha, lm_beta = params
    decoder.reset_params(lm_alpha, lm_beta)
    hypothesis = ctc_beam_decode_batch(saved_output, decoder, labels)
    wer = get_wer(references, hypothesis)
    return [lm_alpha, lm_beta, wer * 100]
コード例 #2
0
def merge_transcripts(params):

    global data, labels, utterances, references, args

    th, service_weight, blank_conf = params
    th_blank = 10 * th
    new_probs_list = []
    for utt in utterances:

        ds2_probs = data[utt]['ds2_probs']
        ctc_alignment = data[utt]['alignment']
        word_confs = data[utt]['word_confs']
        frame_confs = get_frame_lvl_cnfs(ctc_alignment, word_confs, labels,
                                         blank_conf)
        new_probs = fine_merge(ds2_probs, ctc_alignment, frame_confs, th,
                               th_blank, service_weight, labels.index('_'))
        new_probs_list.append(new_probs)

    new_transcipts = ctc_beam_decode(new_probs_list, labels, args.lm_path,
                                     labels.index('_'), args.lm_alpha,
                                     args.lm_beta, args.beam_width)

    wer = get_wer(references, new_transcipts)
    return th, service_weight, blank_conf, wer
コード例 #3
0
# Initialize dataloader
eval_cfg_dict = dict(type="audio,transcription",
                    audio=feats_config,
                    transcription=transcripts_config,
                    manifest_filename=eval_manifest,
                    macrobatch_size=be.bsz,
                    minibatch_size=be.bsz)
eval_set = DataLoader(backend=be, config=eval_cfg_dict)
eval_set = data_transform(eval_set)

# Load the model
model = Model(args.model_file)

# Process data and compute stats
wer, sample_size, results = get_wer(model, be, eval_set,
                                    beam_decoder,
                                    nout,
                                    use_wer=args.use_wer)

print("\n" + "-" * 80)
if args.use_wer:
    print("wer = {}".format(wer))
else:
    print("cer = {}".format(wer))
print("-" * 80 + "\n")

if args.inference_file:
    # Save results in args.inference_file
    with open(args.inference_file, 'wb') as f:
        pkl.dump((results, wer), f, protocol=0)
    print("Saved inference results to {}".format(args.inference_file))
コード例 #4
0
eval_manifest = args.manifest['val']
if not os.path.exists(eval_manifest):
    raise IOError("Manifest file {} not found".format(eval_manifest))

# Setup required dataloader parameters
nbands = 13
max_utt_len = 30
max_tscrpt_len = 1300
eval_set = make_loader(eval_manifest, alphabet, nbands, max_tscrpt_len,
                       max_utt_len, backend_obj=be)

# Load the model
model = Model(args.model_file)

# Process data and compute stats
wer, sample_size, results = get_wer(model, be, eval_set, argmax_decoder, nout,
                                    use_wer=args.use_wer, print_examples=args.print_examples)

print("\n" + "-" * 80)
if args.use_wer:
    print("wer = {}".format(wer))
else:
    print("cer = {}".format(wer))
print("-" * 80 + "\n")

if args.inference_file:
    # Save results in args.inference_file
    with open(args.inference_file, 'wb') as f:
        pkl.dump((results, wer), f)
    print("Saved inference results to {}".format(args.inference_file))