為什麼即時音高會跳:信賴度、掉音與穩定顯示

螢幕上的一條音高線,看起來像是麥克風直接「看見」了音符。實際上,每一個點都必須在極短的時間窗中,從噪音、泛音與不穩定的起音裡做出選擇。

即時偵測是在短時間窗裡不斷重新估算

持續發出一個母音時,波形也不會完全重複。呼吸、聲帶的細微變化、房間反射與麥克風自動增益都會進入取樣。時間窗太短,反應快但證據不足;時間窗太長,數字更穩卻跟不上滑音與起音。即時產品必須在「及時」與「可信」之間取捨,而不是追求一條永遠不移動的假直線。

軌跡跳動常見於四種情況

  • 聲音剛開始:起音包含氣流與暫態,週期結構尚未穩定。
  • 音量太低:環境噪音在時間窗中的佔比變大時,演算法可能會追蹤到錯誤的週期。
  • 泛音更突出:基頻較弱時,結果可能暫時跳到高一倍或低一倍的位置。
  • 聲音正在換音:真實音高本來就在移動,過度平滑反而會把變化藏起來。

因此,「回傳一個數字」還不夠。每一幀都需要進一步做品質判斷,以決定它能不能推動挑戰進度、只拿來顯示,或應該暫時捨棄。

FrostNote 如何使用信賴度

FrostNote 只有在音量達到門檻、週期證據可靠,而且音高落入合格區時,才會增加保持進度。短暫掉音不會立刻清空已累積的進度,明顯離開目標則會停止增加。目標附近的顯示會平滑聚焦,但不會為了好看,把唱高或唱低的資料硬拉回中心。

第一次進行舒適音域引導時,不會直接採用使用者發聲的第一個數字,而是收集一段較穩定的基頻,再以中位數推薦相鄰音域。中位數可以降低少量八度誤判與起音異常對推薦的影響,但它仍只是這次發聲的起點,不是永久聲域認證。

穩定的介面不等於竄改測量

工程上可以把「偵測結果」與「顯示視窗」分開處理:前者保留真實估算,後者則用固定節奏平滑調整範圍。FrostNote 一開始顯示較寬的音域,捕捉到穩定音高後再縮小到目標附近;失聲或長時間不穩定時則重新放寬。這樣既看得到整體位置,也不會讓座標軸跟著每一幀抖動。

練習建議在安靜的環境中固定麥克風距離,先用自然音量發出穩定的母音,再觀察中段的軌跡。不要只用第一個點或最後一個點來評價整次發聲。

為什麼這項偵測留在瀏覽器本機

即時訓練需要低延遲,卻不需要長期保存聲音。FrostNote 會在瀏覽器內完成麥克風收音與基頻估算;伺服器端統計不會接收原始錄音、聲紋或逐幀音高軌跡。挑戰回放只保存在目前頁面的記憶體中,重新整理或離開後不會作為帳戶資料保留。