iT邦幫忙

2025 iThome 鐵人賽

DAY 25
0

▋前言


延續昨天的討論,我們已經確定「語者標籤錯位」是由於 embedding 比對排序與 NeMo 輸出順序不一致 所造成。
今天我們要嘗試修正這個邏輯,讓語者標籤在所有輸出檔案中保持一致,並從這次錯誤中歸納出對 AI 系統設計的重要啟發。

▋內容


一、修正方案 1:統一 Speaker Index

若你的目標只是自動生成標籤(不需辨識教師),可直接採用 NeMo 的原始 index:

# 統一標籤命名
for i, spk in enumerate(unique_speakers):
    speaker_mapping[spk] = f"Speaker_{i}"

如此一來,NeMo 的 Speaker 0、Speaker 1 就不會被重新排序。
所有下游檔案(逐字稿、情緒報告)都能一一對應。

二、修正方案 2:保留教師比對,但固定映射表

若你仍希望保留 “teacher/student” 判斷,可新增固定映射:

teacher_id = best_match_speaker
speaker_mapping = {spk: f"Speaker_{i}" for i, spk in enumerate(unique_speakers)}
speaker_mapping[teacher_id] = "teacher"

這樣可以同時兼顧「身份標註」與「index 一致性」。

三、反思:這個錯誤教會我們什麼?

跨模組資料流的穩定性比準確率更重要
在整合多個 AI 模組時(ASR、Diarization、SER),如果中間變數不穩定,結果就難以追蹤。

標籤是一種「資料契約 (data contract)
每個模組的輸入輸出格式、標籤命名,都應該被固定與版本控制。

Embedding 相似度 ≠ 身份映射依據
在小樣本多語者情境中,embedding 距離排序容易受錄音品質、語者情緒影響。

Debug 過程的價值
這次的錯誤讓我們重新審視系統架構,也讓我們意識到日後要加上「語者 ID 對照表」作為輸出的一部分。

▋結論


AI 系統開發不只是模型訓練,更是資料一致性的工程挑戰。
語者標籤這樣的小問題,往往是整體可靠性的關鍵。
透過這次檢討,我們讓系統更穩定、可重現,也讓這個系列的實驗更有真實價值。

▋參考資料


AMI Corpus


上一篇
Day 24 AMI Meeting Corpus 資料應用 - 語者標籤錯位問題的發現與原因分析
下一篇
Day 26 Switchboard 資料應用 - 雙人錄音的挑戰
系列文
AI語音辨識系統:結合聲紋分析與情緒識別27
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言