語音轉文字之後:標點、分段與講者辨識
原始逐字稿幾乎不能直接用。後處理決定了它的實用價值。
語音辨識的輸出常常是一長串沒有標點、沒有分段的文字。直接餵給下游任務,效果會明顯打折。
三個必要的後處理
- 標點還原:多數辨識模型已內建,品質不好時可用語言模型再過一次。
- 分段:依語者變換與停頓長度切段,長段落對摘要與檢索都不利。
- 講者辨識:多人會議必須區分講者,否則摘要會把不同人的意見混為一談。
保留時間戳
[
{"start": 12.4, "end": 18.9, "speaker": "S1",
"text": "這個功能我們預計下個月上線。"},
{"start": 19.2, "end": 25.1, "speaker": "S2",
"text": "時程會不會太趕?測試需要兩週。"}
]時間戳是逐字稿最有價值的欄位之一。有了它,摘要中的每個重點都能跳回原始音檔的位置,可驗證性完全不同。
專有名詞的處理
人名、產品名、專業術語是語音辨識最容易出錯的部分。實務做法是準備一份詞彙表,在辨識時作為提示提供,或在後處理階段做模糊比對修正。
# 後處理:用編輯距離修正已知詞彙
from difflib import get_close_matches
def fix_terms(text, vocab, cutoff=0.8):
for word in set(re.findall(r'[A-Za-z]{3,}', text)):
m = get_close_matches(word, vocab, n=1, cutoff=cutoff)
if m and m[0] != word:
text = text.replace(word, m[0])
return text中文逐字稿要注意繁簡問題。許多辨識模型預設輸出簡體,務必在後處理統一轉成臺灣正體用詞,不只是字形轉換。