今天國慶連假的第一天,看來要小心一下發文進度
我今天是用志祺七七他們這支影片作為音檔來源
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 語音詐騙的案例...變得那麼猖狂呢?
赫然發現我沒有下載非常重要的 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 來計算 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
成功補完!