在本系列部落格中,跟隨 Seasalt.ai 創建完整現代會議體驗的旅程,從最初的起步,到在不同硬體和模型上的優化,再到整合最先進的 NLP 系統,最終實現 SeaMeet 協作現代會議解決方案。
超越算法
Modern Meetings 是一個很棒的演示,但它始終停留在演示階段。要讓它真正投入生產還有很長的路要走。我們首先使用 Microsoft Azure 技術堆疊成功實現了演示版本。但在認識到軟體的各種缺陷後,我們決定用自己的算法替換,並讓整個體驗更加流暢、輕量且靈活。 Modern Meetings 有四個主要組成部分:
- 麥克風陣列的信號處理,尤其是波束形成
- 說話人分離與識別
- 定制語音識別
- 更好的使用者介面
接下來我們將詳細介紹所有重要組件。

我們用自己的技術堆疊改造了 Modern Meetings 的四大組件:1. 麥克風陣列信號處理;2. 說話人分離與識別;3. 定制語音識別;4. 現代網頁介面。
麥克風陣列的信號處理
與單一近講麥克風相比,麥克風陣列可從 360 度範圍內拾取聲音,距離可達 5 公尺。因此,一個麥克風陣列能夠在 10 公尺 x 10 公尺的中型會議室內收集語音。所有麥克風集中在一個設備上,大大減少了會議室的線纜雜亂,簡化了安裝和維護。 另一方面,使用麥克風陣列的下游目標是為我們的模型提供最佳品質的資料。因此,在自動語音識別之前,我們會先進行多種信號處理算法。預處理管道的核心是波束形成算法。由於我們使用的是圓形多麥克風陣列,可以利用聲音到達各麥克風的微小時間差。波束形成的作用是確定信號的主要特徵(最佳波束),增強這些頻率,同時衰減不需要的聲音。效果是降噪和去混響,使主要信號(語音)更響亮清晰。
許多波束形成算法的最佳性能需要知道聲源(說話人)相對於麥克風的位置。但在實際應用中這幾乎不可能,因此我們首先通過確定聲源方向來計算遠場權重。這個步驟稱為聲源定位,或更具體地說是到達方向(DOA)。我們遇到的主要問題是平滑性。算法能大致給出正確結果,但確定的聲源會在真實方向兩側 30 度範圍內不斷波動,影響波束形成。我們的解決方案是只讓聲源定位算法使用編碼人類語音主要頻率的頻段,並結合平滑技術,保留 DOA 結果的“歷史”進行平均。更可靠的 DOA 結果讓我們能計算遠場權重並確定最佳波束。
在 Kinect DK 上執行的一系列算法:波束形成、降噪、去混響、聲源定位,使我們能夠即時生成清晰增強的人類語音,並大致定位說話人的方向。這將極大幫助下一步的說話人識別。
說話人分離與識別
會議轉錄系統的下一個關鍵組件是自動說話人識別。正如本系列上一部分所述,閱讀沒有說話人資訊的雜亂對話文本令人沮喪,完全失去了系統的意義。這就是說話人識別的作用。
通過這一組件,我們可以自動將轉錄和音訊與說話人姓名對齊。實現方法是使用分離技術,將音訊片段聚類為與錄音中說話人數相同的組。該方法利用語音活動檢測(VAD)系統確定語音片段,從中提取短視窗的向量表示。每個視窗提取的向量稱為話語級 xvector,平均後得到說話人級 xvector。然後將這些 xvector 進行聚類,每個聚類代表屬於同一說話人的語音片段。值得一提的是,聚類算法的選擇極大影響分離性能,我們通過使用閾值親和矩陣並結合歸一化最大特徵間隙(NME)值自動調優的譜聚類算法,實現了最佳分離錯誤率(DER)。最後,需要確定每個聚類代表的說話人。會議前可通過 40 秒錄音提取每位說話人的 xvector,與聚類結果比對以識別對應說話人。
這一流程的靈活性在於:許多會議場景下,提前獲得每位說話人錄音並不現實。比如有 VIP 客戶的商務會議或有 50 位發言人的大型研討會。在這種情況下,跳過註冊步驟,我們的分離系統仍能將語音片段分組。只需人工從每個聚類抽取幾秒音訊即可確定說話人身份。配合專用現代使用者介面,可提供同樣功能但更靈活。
定制語音識別
在了解了微軟會議轉錄器的強大後,我們準備讓系統完全獨立,超越已有的革命性產品。Modern Meetings 及任何轉錄產品的核心是自動語音識別(ASR)模型,因此我們投入了最多的關注。 Azure Cognitive Services 提供了多種語言和方言的模型可選,但不同方言間的性能難以區分。對於英語的不同方言,最主要的努力和資料可能都集中在美式英語模型上,然後再用帶口音的資料微調出各種方言模型。我們希望確保如果提供獨立模型,就要針對特定用例進行調優。這意味著要收集數千小時的在地化音訊和轉錄,並投入數週訓練和微調。但看到模型每個 epoch 都在進步並兌現承諾,令人非常滿足。
有了堅實的基礎模型後,下一步是擴展可用性和定制性。每個行業都有大量專有術語,使 ASR 模型難以區分生僻詞和常見、發音相似的詞。
我們的解決方案是 SeaVoice,它為使用者提供了一個集中平台,方便針對特定需求微調模型。