解決本地助理的背景人聲干擾問題

開發者指出,在構建即時語音代理系統時,主要挑戰並非來自大型語言模型(LLM),而是語音轉文字(STT)之前的音訊處理層。

傳統降噪技術無法有效過濾背景人聲,因為其他人說話也被視為語音訊號,導致非目標使用者的聲音進入轉錄結果並觸發錯誤的對話中斷(barge-in)。

Alkove 旨在填補這一缺口,透過在 STT 和 LLM 之前運作,確保只有特定使用者的聲音被處理。

五個模組化模型的功能分工

Lex(1.8 MB)將使用者輸入的文字轉換為可能的發音序列,使得喚醒詞僅需為文字形式,無需錄音或訓練過程。

Spot(2.8 MB)負責監聽這些生成的發音,支援七種語言的喚醒詞偵測。

Timbre(0.74 MB)建立聲紋,使用者只需錄製三次喚醒詞即可生成初始聲紋,並在對話過程中持續學習更新。

Focus(1.1 MB)利用聲紋或距離判斷,僅保留目標使用者的聲音,過濾掉噪音、音樂及其他人聲。

Cue(1.1 MB)以每 30 毫秒的頻率偵測語音活動,結合 Focus 與聲紋後,可作為個人化的語音活動偵測器(VAD),確保對話輪次僅由目標使用者觸發。

技術架構與跨平台執行能力

該系統基於開發者自研的 Rust 推理引擎,而非使用 onnxruntime,編譯後可在 ARM、x86 和 WebAssembly 環境中產生位元級一致的輸出。

在瀏覽器端,模型透過 AudioWorklet 驅動的 workers 執行,無需 COOP/COEP 標頭,推理引擎壓縮後僅佔 134 KB。

原生手機單線程速度測試顯示:Focus 處理每秒音訊需 38.6 毫秒,Spot 為 7.5 毫秒,Cue 為 1.7 毫秒。

支援 npm(瀏覽器與 Node)、pip(Linux、macOS、Windows,僅依賴 numpy)、Android(Kotlin)以及 LiveKit Agents 和 Pipecat 的插件整合。

測試數據與性能表現

在 AMI 會議資料集(使用頭戴式麥克風錄製)的測試中,啟用 Focus 模型並結合聲紋後,非目標說話者進入轉錄的文字量從每分鐘約 17 字大幅降至 0.5 字。

Spot 模型在單一固定詞彙的喚醒詞偵測上,英文環境下每小時一次誤報的條件下召回率為 67%,法文為 90%,葡萄牙文為 85%。

開發者說明,針對單一特定詞彙,專門訓練的模型可能表現更佳,Alkove 的設計重點在於靈活性與通用性。

目前限制與適用場景

該工具專為近距離單人使用設計,適用於手機、耳機或筆電麥克風;若用於遠場會議室中央的麥克風,會連同其他參與者聲音一併過濾。

當兩人同時說話時,Focus 僅能部分分離語音,特別是當兩人的音色音域相似(如兩名男性或兩名女性)時,分離難度顯著增加。

音訊處理頻率為 16 kHz,因此僅涵蓋 8 kHz 以下的語音頻段。

專案目前處於 0.x 版本預覽階段,API 可能變動,開發者歡迎使用者回饋整合需求與 API 設計建議。