iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0
自我挑戰組

深度學習的學習 & ASR 中文語音辨識系列 第 22

【Day 22】CER 的使用方法

  • 分享至 

  • xImage
  •  

今天國慶連假的第一天,看來要小心一下發文進度

模型準備

我今天是用志祺七七他們這支影片作為音檔來源

  • levels:同樣用 small, medium 的 Whisper model 去轉錄
  • path = 'scam.mp3':原本影片過長,所以我只取影片 1:51 - 3:11 這 80s 的語音來測試
  • init:initial prompt 則是用其他相似影片的開場白
import whisper

levels = ['small', 'medium']
path  = 'scam.mp3'
results = []
init = "大家沒想到的是,這些 AI 工具不只幫到一般人也幫到了詐騙集團。這幾個月 AI 語音詐騙在國外的案件量大增"

接著丟進去

for level in levels:
    model = whisper.load_model(level)
    result = model.transcribe(path, fp16=False, initial_prompt=init)
    results.append(result)

印出來結果:

for elem, level in zip(results, levels):
    print( level, ':', elem['text'] )
small : 【阿里桑那州】最近幾個月,在北美地區開出現了不少 AI 語音詐騙案例...變得那麼慘狂呢?
medium : 【電話納頭】最近幾個月,在北美地區開始出現不少 AI 語音詐騙的案例...變得那麼猖狂呢?

Reference 準備

赫然發現我沒有下載非常重要的 pandas 所以迅速下載一下
這行可以直接丟在 jupyter 裡面執行

!pip install pandas

資料數目多的時候會比較方便存取,因此我把正確文本(Reference)存在 reference.csv

ref_path = 'reference.csv'
refer_file = pd.read_csv(ref_path)
ref = refer_file['ref'][0]
ref
'最近幾個月,在北美地區開始出現了不少「AI 語音詐騙」的案例!...變得那麼猖狂呢?'

準備好了就可以開始計算 CER

jiwer

我們可以用 jiwer 來計算 CER/WER

!pip install jiwer

這邊可以做個簡單的測試

from jiwer import wer

reference = "hello world"
hypothesis = "hello duck"

error = wer(reference, hypothesis)

error 算出來就是 0.5

接著實際套用在我們的程式

from jiwer import cer

small_cer = cer(ref, results[0]['text'])
medium_cer = cer(ref, results[1]['text'])

print("small CER: ", small_cer)
print("medium CER: ", medium_cer)
small CER:  0.16317991631799164
medium CER:  0.13389121338912133

就能算出我們模型結果的 CER 了!
用表格來看

small medium
CER 16% 13%

大約都有八成的準確度,但仔細查看裡面的 Hypothesis 會發現有很多奇形怪狀的文字夾在其中,而且標點符號其實也被納入計算了
因此為了把 CER 降得更低,我們要來對模型進行 Fine-tuned

小心得

成功補完!

Ref


上一篇
【Day 21】WER/CER 簡單介紹
下一篇
【Day 23】Fine-tuning 的一些準備 - huggingface
系列文
深度學習的學習 & ASR 中文語音辨識30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言