實時犯罪警報:且看深度學習如何保護你的安危
本文轉載自公眾號“讀芯術”(ID:AI_Discovery)。
在美國各大主要城市,市民一天24小時會切到數(shù)千個公共第一響應者無線電波,這些信息用于給500多萬用戶提供火災、搶劫和失蹤等突發(fā)事件的實時安全警報。每天人們收聽音頻的總時長會超過1000小時,這給需要開發(fā)新城市的公司帶來了挑戰(zhàn)。
因此,我們構建了一個機器學習模型,它可以從音頻中捕捉到重大安全事故的信息。

定制的軟件適用無線電(SDR)會捕捉大范圍內的無線電頻率(RF),將優(yōu)化后的音頻片段發(fā)送到ML模型進行標記。標記后的片段會被發(fā)送至操作分析員,他們將在app中記錄事件,最后通知事故地點附近的用戶。
安全警報工作流程(圖自作者)
為適應問題領域,調整一個公共語音轉文本引擎
運用公共語音轉文本引擎的剪輯分類器 (圖自作者)
依據(jù)單詞錯誤率(WER),我們將從一個性能最好的語音轉文本引擎著手。很多警察使用的特殊代碼都不是白話,例如,紐約警察局官員會發(fā)送“信號13”來請求后備部隊。
我們使用語音上下文定制詞匯表。為適應領域,我們還擴充了一些詞匯,例如,“assault”并不通俗,但常見于領域中,模型應檢測出“assault”而不是“a salt”。
調整參數(shù)之后,我們能夠在一些城市獲得相對準確的轉錄。接下來,我們要使用音頻片段的轉錄數(shù)據(jù),找出哪些與市民相關。
基于轉錄和音頻特征的二值分類器
我們建立了一個二進制分類問題的模型,其中轉錄作為輸入,置信水平作為輸出,XGBoost算法為數(shù)據(jù)集提供了最好的性能。
我們從一位前執(zhí)法部門工作人員處了解到,在重大事件的無線電廣播之前,一些城市會發(fā)出特殊警報音以引起當?shù)鼐降淖⒁?。這個“額外”的特征使我們的模型更加可靠,尤其是在轉錄出錯的情況下。其他一些有用的特征是警察頻道和傳輸ID。
我們在操作流程中對ML模型進行了測試。運行了幾天后,我們注意到在事件中,那些只使用帶了模型標記的片段的分析員未出差錯。
我們在幾個城市推出了這種模式。現(xiàn)在一個分析師可以同時處理多個城市的音頻,這在以前是不可能的。隨著投入運營的閑置產(chǎn)能增多,我們得以開發(fā)新的城市。
模型的推出顯著減少了分析員的音頻量(圖自作者)
超越公共語音轉文本引擎
這個模型并不是解決所有問題的靈丹妙藥,我們只能在少數(shù)幾個音質好的城市使用它。公共語音轉文本引擎是按照聲學剖面不同于收音機的音素模型訓練的,因此,轉錄的質量有時是不可靠的。對于那些非常嘈雜的老式模擬系統(tǒng)來說,轉錄是完全不可用的。
我們嘗試了多個來源的多個模型,但沒有一個是按照與數(shù)據(jù)集相似的聲學剖面訓練的,全都無法處理嘈雜的音頻。
我們試著用在保證管道其他部分不變的情況下由數(shù)據(jù)訓練出的語音轉文本引擎,替換原語音轉文本引擎。然而,為了音頻,我們需要幾百小時的轉錄數(shù)據(jù),而生成這些數(shù)據(jù)耗時耗財。
我們還有個優(yōu)化過程的選擇,就是只抄寫詞匯表中定義為“重要”的單詞,并為不相關的單詞添加空格,但這仍然只是在逐步減少工作量而已。最后,我們決定為問題領域建立一個定制的語音處理管道。
用于關鍵詞識別的卷積神經(jīng)網(wǎng)絡
因為我們只關心關鍵字,所以并不需要知道單詞正確的順序,由此可簡化問題為關鍵字識別。這就簡單多了,我們決定使用在數(shù)據(jù)集上訓練的卷積神經(jīng)網(wǎng)絡(CNN)。
在循環(huán)神經(jīng)網(wǎng)絡(RNNs)或長短期記憶(LSTM)模型之上使用卷積神經(jīng)網(wǎng)絡(CNN)意味著我們可以更快地訓練和重復。我們評估了Transformer模型,其大致相同,但需要大量硬件才能運行。
由于我們只在音頻段之間尋找短期的依賴關系來檢測單詞,計算簡單的CNN似乎優(yōu)于Transformer模型,同時它能騰出硬件空間,從而可以通過超參數(shù)調整更加靈活。
用于識別關鍵字并運用了卷積神經(jīng)網(wǎng)絡的剪輯標記模型(圖自作者)
音頻片段會被分成固定時長的子片段。如果詞匯表中的一個單詞出現(xiàn)了,該子片段會被加上一個正標簽。然后,如果在某個片段中發(fā)現(xiàn)任何這樣的子片段,該音頻片段會被標記為有用。
在訓練過程中,我們嘗試改變子片段的時長以判斷其如何影響融合性能。長的片段讓模型更難確定片段的哪個部分會有用,也讓模型更難調試。短片段意味著部分單詞會出現(xiàn)在多個剪輯中,這使得模型更難識別出它們。調整這個超參數(shù)并找到一個合理的時長是能做到的。
對于每個子片段,我們將音頻轉換成梅爾倒譜系數(shù)(MFCC),并添加一階和二階導數(shù),特征以25ms的幀大小和10ms的步幅生成。然后,通過Tensorflow后端輸入到基于Keras序列模型的神經(jīng)網(wǎng)絡中。
第一層是高斯噪聲,這使得模型耐得住不同無線信道之間的噪聲差異。我們嘗試了另一種方法,人為地將真實的噪音疊加到片段上,但這大大放緩了訓練,卻沒有顯著的性能提升。
然后,我們添加了Conv1D、BatchNormalization和MaxPooling1D三個后續(xù)層。批處理規(guī)范化有助于模型收斂,最大池化有助于使模型耐得住語音和信道噪聲的細微變化。另外,我們試著增加了脫落層,但這些脫落層并未有效改進模型。
最后,添加一個密集連接的神經(jīng)網(wǎng)絡層,將其注入到一個有著sigmoid函數(shù)激活的單一輸出密集層。
生成標記數(shù)據(jù)
音頻剪輯的標記過程(圖自作者)
為了標記訓練數(shù)據(jù),我們把問題領域的關鍵字列給了注釋者,并要求他們如果有詞匯表里的單詞出現(xiàn),必須為片段標記好開始和結束位置和單詞標簽。
為了確保注釋的可靠性,我們在注釋器之間有10%的重疊,并計算了它們在重疊片段上的表現(xiàn)。一旦有了大約50小時的標記數(shù)據(jù)就會啟動訓練,我們會在重復訓練的過程中不斷收集數(shù)據(jù)。
由于詞匯表中的一些單詞比另一些單詞更為常見,模型針對于普通單詞來說表現(xiàn)正常,但是對于僅有較少示例的單詞卻遇到了困難。
我們試圖將單字發(fā)音覆蓋在其他片段中,借以人為制造示例。然而,性能的提升與這些單詞的實際標記量不相稱。最終,模型對于常用詞等會更加敏感,我們在未被標記的音頻片段上運行該模型,并消除掉那些含有已習得單詞的片段,這有助于減少未來標記時多余的詞語。
模型的發(fā)行
經(jīng)過幾次重復的數(shù)據(jù)收集和超參數(shù)調整,我們已能訓練出一個對詞匯表里的詞語具有高查全率和精準捕捉能力的模型。高查全率對于捕捉關鍵的安全警報非常重要。標記的片段會在發(fā)送警報之前被收聽,因此誤報不是一個大問題。
我們在紐約市的一些區(qū)對這個模型進行了測試,該模型能夠將音頻音量降低50–75%(取決于頻道),它明顯超越了我們在公共語音轉文本引擎上訓練的模型,因為紐約由于模擬系統(tǒng)有非常嘈雜的音頻。
令人驚訝的是,盡管模型是根據(jù)紐約市的數(shù)據(jù)訓練的,但它也可以很好地切換到芝加哥的音頻。在收集了幾個小時的芝加哥片段之后,從紐約市模型中學到的東西轉移到芝加哥,該模型也表現(xiàn)良好。
圖源:unsplash
語音處理管道與定制的深度神經(jīng)網(wǎng)絡廣泛適用于來自美國主要城市的警察音頻。它從音頻中發(fā)現(xiàn)了重大的安全事故,使全國范圍的市民能夠迅速向城市廣播,履行保護社區(qū)安全的使命。
在RNN、LSTM或Transformer中選擇計算簡單的CNN架構,以及簡化標記過程,這些都是重大的突破,使我們能在限時限材的情況下超越公共語音轉文本模型。