Skip to content

使用论文中提到的方法计算WER不准确 #15

Description

@CJY1018

首先感谢您的精彩工作和开源精神!

在复现您的论文的过程中,我发现您在TABLE 1中提到的GrondTruth WER是0.047 ± 0.005。请问这里的GrondTruth指的是用Whisper-medium.en对READEDIT的310条原始音频做ASR,和原始文本做WER得到的吗?

我使用您论文提到的Whisper-medium.en库,计算代码如下:

import os
import torch
import pandas as pd
from datasets import Dataset, Audio
from transformers import WhisperForConditionalGeneration, WhisperProcessor
from evaluate import load


input_wav_dir = 'RealEdit_audio/RealEdit_audio'
text_path = 'RealEdit_audio/RealEdit.txt'

# 读取文本
text_df = pd.read_csv(text_path, sep='\t', header=0)[['wav_fn', 'orig_transcript']]

# 构建音频路径
text_df['audio'] = text_df['wav_fn'].apply(lambda x: os.path.join(input_wav_dir, x))
text_df['text'] = text_df['orig_transcript']

realedit_dataset = Dataset.from_dict({
    'audio': text_df['audio'].tolist(),
    'text': text_df['text'].tolist()
})

realedit_dataset = realedit_dataset.cast_column('audio', Audio())

# 计算WER
processor = WhisperProcessor.from_pretrained("openai/whisper-medium.en")
model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-medium.en").to("cuda")

def map_to_pred(batch):
    audio = batch["audio"]
    input_features = processor(audio["array"], sampling_rate=audio["sampling_rate"], return_tensors="pt").input_features
    batch["reference"] = processor.tokenizer._normalize(batch['text'])

    with torch.no_grad():
        predicted_ids = model.generate(input_features.to("cuda"))[0]
    transcription = processor.decode(predicted_ids)
    batch["prediction"] = processor.tokenizer._normalize(transcription)
    return batch

result = realedit_dataset.map(map_to_pred)

wer = load("wer")
print(100 * wer.compute(references=result["reference"], predictions=result["prediction"])) # 17.921440261865794

计算出WER为0.179,与您论文中提到的0.047 ± 0.005相差甚远。我怀疑是文本正则化的问题,但编写代码进行文本正则化处理后的WER仍为0.08左右,故想请教一下您是如何计算得到这个指标的,能否提供或开源一下评估代码,可以联系我的邮箱:1310825002@qq.com

感谢您耐心阅读,期待您的回复!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions