iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0
生成式 AI

30 天 Vibe Coding:全端 × 機器學習的實作挑戰系列 第 28

Day 28|30 天 Vibe Coding:文字加聲音雙保險,心情判斷更靠譜

  • 分享至 

  • xImage
  •  

到目前為止,情緒日記系統已經能同時處理文字情緒分析與語音情緒分析
然而單一路徑總是有盲點:

  • 文字輸入能理解語意,但無法捕捉聲音裡的情緒張力
  • 語音輸入能反映聲調與情感強度,但缺少語境線索
    因此今天的目標是:將兩個模態融合在一起,讓系統更全面地理解心情

做法

新增一個 Fusion Gateway API,負責接收文字與音檔,分別呼叫兩個後端,再將結果合併

API 流程

  1. 前端送出文字與音檔
  2. Gateway 同時呼叫:
    文字 API → 回傳 {"pos":0.6,"neu":0.3,"neg":0.1}
    語音 API → 回傳 {"pos":0.4,"neu":0.4,"neg":0.2}
  3. 透過加權平均(Late Fusion):
    Pfusion = α⋅Ptext + (1−α)⋅Paudio
  • 預設 α = 0.75,文字佔比多一點,因為我發現語音輸入時通常語氣比較平淡,這時語音模型就容易判為中立或是負向
  • α 越大 → 越相信文字;α 越小 → 越依賴語音
    舉例來說,有一次文字模型判斷「正向 94%」,語音模型卻是「負向 100%」。如果單看語音,就會誤以為心情非常差,但融合後的結果變成「正向 70%、負向 27%、中立 3%」,更符合實際語境。這證明加權平均能有效緩和極端誤判
  1. Gateway 回傳融合結果與各模態分數

前端介面

  1. 顯示三組數據:文字、語音、融合
  2. 最終結果以 Top-1 情緒呈現

在實驗過程中我也發現一些限制。語音模型在面對日常語氣時往往傾向於判斷為負向,這很可能與訓練時使用的資料集有關。由於該資料集的錄音多半帶有強烈、誇張的情緒表達(例如大聲、生氣或激動),因此當使用者的語音輸入較為平淡時,模型便誤以為是消極的情緒。此外,目前的融合方法仍僅停留在單純的線性加權,尚未能處理語境中的複雜互動;當文字與語音出現明顯衝突時,也缺乏更細緻的決策邏輯來判斷最貼近真實心情的結果/images/emoticon/emoticon02.gif


明日預告

明天的計畫是加入隱私控制,讓使用者能決定是否保留音檔,或僅存加密後的文字與特徵,讓系統不只是準確,也能令人安心~


上一篇
Day 27|30 天 Vibe Coding:錄一段話,系統就幫你算情緒分數
下一篇
Day 29|30 天 Vibe Coding:我的心情我決定,要不要保留音檔我說了算
系列文
30 天 Vibe Coding:全端 × 機器學習的實作挑戰30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言