唇語識別系統使用機器視覺技術,從圖像中連續識別出人臉,判斷其中正在說話的人,提取此人連續的口型變化特征,隨即將連續變化的特征輸入到唇語識別模型中,識別出講話人口型對應的發音,隨后根據識別出的發音,計算出可能性最大的自然語言語句。
唇語識別并非最近才出現的技術,早在 2003 年,Intel 就開發了唇語識別軟件 Audio Visual Speech Recognition(AVSR),開發者得以能夠研發可以進行唇語識別的計算機;2016 年 Google DeepMind 的唇語識別技術就已經可以支持 17500 個詞,新聞測試集識別準確率達到了 50% 以上。
大家一定很好奇唇語識別系統要怎么實現。Amirsina Torfi 等人實現了使用 3D 卷積神經網絡的交叉視聽識別技術進行唇語識別,并將代碼托管到 GitHub 上開源:
傳送門:
https://github.com/astorfi/lip-reading-deeplearning
接下來就為大家介紹如何使用 3D 卷積神經網絡的交叉視聽識別技術進行唇語識別,完整的論文可參閱:
https://ieeexplore.ieee.org/document/8063416
下面是進行唇語識別的簡單實現方法。
用戶需要按照格式準備輸入數據。該項目使用耦合 3D 卷積神經網絡實現了視聽匹配(audio-visual matching)。唇語識別就是這個項目的具體應用之一。
概況
當音頻損壞時,視聽語音識別(Audio-visual recognition,AVR)被認為是完成語音識別任務的另一種解決方案,同時,它也是一種在多人場景中用于驗證講話人的視覺識別方法。AVR 系統的方法是利用從某種模態中提取的信息,通過填補缺失的信息來提高另一種模態的識別能力。
▌問題與方法
這項工作的關鍵問題是找出音頻和視頻流之間的對應關系。我們提出了一種耦合 3D 卷積神經網絡架構,該架構可以將兩種模式映射到一個表示空間中,并使用學到的多模態特征來判斷視聽流間的對應關系。
▌如何利用 3D 卷積神經網絡
我們提出的該架構將結合時態信息和空間信息,來有效地發現不同模態的時態信息之間的相關性。我們的方法使用相對較小的網絡架構和更小的數據集,并在性能上優于現有的視聽匹配方法,而現有方法主要使用 CNN來表示特征。我們還證明了有效的對選擇(pair selection)方法可以顯著提高性能。
代碼實現
輸入管道須由用戶提供。其余部分的實現包含基于話語的特征提取的數據集。
▌唇語識別
就唇語識別來講,必須將視頻作為輸入。首先,使用 cd 命令進入相應的目錄:
運行專用的python file如下:
運行上述腳本,通過保存每個幀的嘴部區域來提取唇部動作,并在畫框圈出嘴部區域來創建新的視頻,以便進行更好的可視化。
所需的arguments由以下 Python 腳本定義,VisualizeLip.py文件中已定義該腳本:
一些已定義的參數有其默認值,它們并不需要進一步的操作。
▌處理
視覺部分,視頻通過后期處理,使其幀率相等,均為 30f/s。然后,使用 dlib 庫跟蹤視頻中的人臉和提取嘴部區域。最后,所有嘴部區域都調整為相同的大小,并拼接起來形成輸入特征數據集。數據集并不包含任何音頻文件。使用 FFmpeg 框架從視頻中提取音頻文件。數據處理管道如下圖所示:
▌輸入管道
我們所提出的架構使用兩個不相同的卷積網絡(ConvNet),輸入是一對語音和視頻流。網絡輸入是一對特征,表示從 0.3 秒的視頻中提取的唇部動作和語音特征。主要任務是確定音頻流是否與唇部運動視頻在所需的流持續時間內相對應。在接下來的兩個小節中,我們將分別講解語音和視覺流的輸入。
語音網絡(Speech Net)
在時間軸上,時間特征是非重疊的 20ms 窗口,用來生成局部的頻譜特征。語音特征輸入以圖像數據立方體的形式表示,對應于頻譜圖,以及 MFEC 特征的一階導數和二階導數。這三個通道對應于圖像深度。從一個 0.3 秒的視頻剪輯中,可以導出 15 個時態特征集(每個都形成 40 個 MFEC 特征),這些特征集形成了語音特征立方體。一個音頻流的輸入特征維數為 15x40x3。如下圖所示:
語音特征使用 SpeechPy 包進行提取。
要了解輸入管道是如何工作的,請參閱:
code/speech_input/input_feature.py
視覺網絡(Visual Net)
在這項工作中使用的每個視頻剪輯的幀率是 30 f/s。因此,9 個連續的圖像幀形成 0.3 秒的視頻流。網絡的視頻流的輸入是大小為 9x60x100 的立方體,其中 9 是表示時態信息的幀數。每個通道是嘴部區域的 60x100 灰度圖像。
架構
該架構是一個耦合 3D 卷積神經網絡,其中必須訓練具有不同權重的兩個網絡。在視覺網絡中,唇部運動的空間信息和時態信息相結合,以此來利用時間相關性。在音頻網絡中,提取的能量特征作為空間維度,堆疊的音頻幀構成了時間維度。在我們提出的 3D 卷積神經網絡架構中,卷積運算是在連續的時間幀上對兩個視聽流執行的。
訓練 / 評估
首先,克隆存儲庫。然后,用 cd 命令進入專用目錄:
最后,必須執行train.py文件:
對于評估階段,必須執行類似腳本:
▌運行結果
下面的結果表明了該方法對收斂準確度和收斂速度的影響。
最好的結果,也就是最右邊的結果,屬于我們提出的方法。
所提出的在線對選擇方法的效果如上圖所示。
分析到這,希望大家可以到 Github 上找到源碼,開始練起!附上作者給的代碼演示。
DEMO 演示地址
1.Training/Evaluation :
https://asciinema.org/a/kXIDzZt1UzRioL1gDPzOy9VkZ
2.Lip Tracking:
https://asciinema.org/a/RiZtscEJscrjLUIhZKkoG3GVm
-
神經網絡
+關注
關注
42文章
4765瀏覽量
100568 -
機器視覺
+關注
關注
161文章
4348瀏覽量
120134 -
識別技術
+關注
關注
0文章
202瀏覽量
19687
原文標題:唇語識別技術的開源教程,聽不見聲音我也能知道你說什么!
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論