雷鋒網按:2020 年 8 月 7 日,全球人工智慧和機器人峰會(CCF-GAIR 2020)正式開幕。CCF-GAIR 2020 峰會由中國計算機學會(CCF)主辦,雷鋒網、香港中文大學(深圳)聯合承辦,鵬城實驗室、深圳市人工智慧與機器人研究院協辦。
從 2016 年的學產結合,2017 年的產業落地,2018 年的垂直細分,2019 年的人工智慧 40 周年,峰會一直致力於打造國內人工智慧和機器人領域規模最大、規格最高、跨界最廣的學術、工業和投資平臺。
8 月 8 日上午,崑山杜克大學大數據研究中心 SMIP 實驗室李明博士為前沿語音專場做了題為《基於深度編碼的聲紋識別及其關聯任務》的主題演講分享。
語音交互日趨成為人機互動的重要入口。語言自帶指令屬性,是人類最自然、最日常的溝通方式之一。從通過按鍵、觸控與機器交互過渡到語音人機互動,無疑是一大飛躍。但只能識別指令內容是不夠的,真正的智能交互產生的基礎是機器能識別、區分人的身份,能像朋友一樣根據你的身份鑑別權限和提供個性化的服務,否則語音交互就只是高配版遙控器,本質還是單向的命令輸出工具——要實現真正智能的交互就需要加上聲紋識別這點料。
在演講中,李明副教授先是從特徵提取,建立模型,魯棒性處理,分類器設計等幾個步驟介紹傳統聲紋方法,並隨後引出基於端到端深度學習框架的聲紋識別網絡設計。
李明副教授提到,基於深度編碼的聲紋識別與傳統的參數化建模方法從結構上有一定的類比性,比如卷積神經網絡用於特徵提取,編碼層網絡用於計算統計量並得到固定維度的特徵向量,全連接網絡用於後端分類等。
在李明副教授看來,基於深度編碼的聲紋識別是在傳統技術上的升級:一方面,基於深度編碼的聲紋識別更準確,效果更好;另一方面,聲紋深度編碼還可以被用於說話人日誌,多說話人合成,特定人變聲,特定人語音分離等一系列關聯任務中。
最後,李明博士也介紹了幾個基於聲紋深度編碼的語音處理關聯任務。
以下為崑山杜克大學李明博士的全部演講內容,雷鋒網作了不改變原意的整理及編輯:
李明:我今天的報告的題目是《基於深度編碼的聲紋識別及其關聯任務》。
我們研究中心包含了很多研究方向,我主要做的是語音處理和多模態行為信號分析。
今天主要講聲紋識別。
聲紋識別是副語言語音屬性識別問題的一個具體任務,它和語種,性別、年齡、情感等標籤的識別任務是一致的,主要的核心技術問題是針對不定長文本無關語音有監督地預測句子級別標籤。
深度學習之前的傳統方法一般有以下幾個步驟:信號預處理、特徵提取、特徵表示,魯棒性處理,以及分類器。
副語言語音屬性識別任務通常都是針對不定長的文本無關語音特徵序列,因為文本內容是不一樣的,所以很難直接進行兩個序列的對比,一般是通過生成模型,把不定長輸入特徵序列的信息轉化到模型的參數向量或投影到模型上得到統計量特徵,得到固定維度特徵向量,以便於後端有監督分類器的建模。
傳統方法我不細講,基本上傳統方法是 GMM 做生成模型,然後迭代GMM模型的均值向量去自適應匹配輸入特徵序列或者把數據投到模型上計算零階及一階二階統計量。傳統方法可以用非監督的方式通過背景數據學習到 GMM 的高斯分量,把特徵投影到各個高斯分量上計算統計量,也可以通過音素識別器,直接把特徵識別到音素單元,在音素單元上計算統計量。
通常需要把不定常的特徵序列轉變成定常、定維度的向量,當我們有固定維度的向量,比如說我們把各個高斯分量或各個音素單元上的統計量並聯排列到一起,它的維度是相當高的,我們的數據量一般不支持直接在高維上建模,這個時候需要降維,一般選用因子分析。也可以投影到不同的正交子空間裡,這樣可以得到多個低緯度向量,比如說 JFA 把信道和空間分開。
之前說 GMM 作為生成模型,是非監督的,也就是說語音裡面可能包含了聲紋、語種、情感和各種各樣的副語言語音屬性信息,都在這幾百維的向量中,通常會有參數化的方法,如LDA,WCCN等,也有非參數化的,比如說 NDA、LSDA等做有監督魯棒性處理,提取我要的信息,抑制其他信息。
由於聲紋識別的訓練集和測試集中的人是不同的,通常我們採用和人臉識別類似的確認任務。我們會檢驗兩條語音是否為同一個人說的,這裡後端一般會用 PLDA 進行打分。
傳統方法裡有特徵提取、特徵表示、魯棒性處理、後端分類器建模等幾個步驟。
今天主要講基於深度學習的聲紋識別,現在我們可以在前端用 CNN、TDNN等網絡結構提取特徵,我們提取到這些特徵之後,可以使用各種池化策略和編碼層設計,變成固定緯度的向量,最後全連接網絡代替了原來的後端分類工作,我們平時說的聲紋深度編碼就是在全連接網絡這裡的瓶頸層向量。
如果做的是語種識別訓練,輸出層對應的就是不同的語種。如果做聲紋任務,訓練時輸出層對應的是訓練數據的說話人標籤,測試的時候要抽出來聲紋深度編碼,把註冊和測試兩個語音對應的深度編碼比一比,看是不是同一個人。
基於深度神經網絡的端到端聲紋識別可以是幀級別的也可以是句子級別的。幀級別建模方法把訓練和測試數據,切成多個短時片斷,把當前幀和前後的幾十幀放在一起做成固定維度的輸入,直接用全連接網絡建模,在測試時,幀級別輸出結果會被整合為句子級別輸出結果。
現在主流的框架是句子級別的建模,輸入是不定長的的語音信號,輸出是整個句子的聲紋標籤,可以輸出深度編碼,用於測試時做說話人確認。代表性的工作像Deep Speaker 和 X-vector。
我們提出在線的 Data Loader,把各個不定長的輸入語音句子進行隨機長度截取,並在內存中直接展開豐富的多種在線數據增強處理,然後壓入隊列中。GPU從這個隊列抽取數據進行訓練。
編碼層的設計有平均池化,注意力池化,LDE池化,循環神經網絡等方法。循環神經網絡通常採用最後一幀的輸出作為固定維度向量。LDE,為可學習字典單元映射,把前端CNN網絡輸出的特徵投影到不同的字典單元上計算池化,而不是全局的的平均池化。我們做文本無關的聲紋識別,希望能把投影單元分解地更細緻一些。現在用得比較多的是注意力池化,如Self-Attentive Pooling,在計算統計量的時候引入權重信息,進行加權平均。
長度歸一化(Length normalization)一般在訓練的時候是沒有加在網絡裡面,是得到深度編碼後再做長度歸一化和PLDA。如果我們做超大量數據或模板的打分,發現是比較慢的,我們能不能打分的時候用一個內積就可以完成操作,提高速度。損失函數(Loss)設計也是非常重要的,由於同是確認問題,聲紋識別任務完全可以直接用人臉識別研究中性能好的 Loss,也是非常實用、管用的方法。
這裡我列一下我們實驗室復現的幾個主流系統在Voxceleb數據集上的性能,供大家參考。第四個Resnet34是我們自己的系統,E-TDNN、F-TDNN、Resnet-BAM,和Ecapa-TDNN都是目前國際主流的方法。
目前來自於智能音響、智能家居的聲紋產品需求量是非常大的,近場做的很好,遠場還有一些問題。比如說我們近期主辦的Interspeech FFSVC20比賽,比賽是涵蓋了文本相關和文本無關的兩個賽道,數據加在一起也有大幾百人的數據是開源的,可以用近場的開源語音大數據,用一些遠場的仿真傳遞函數,或是仿真軟體,把近場的數據增強為遠場的數據訓練一個基本模型,再拿少量幾百人的實際遠場數據做微調(fine tuning),實際效果不錯。同時,我們也再註冊語音的數據增強,多通道以及分布式陣列的聯合建模等方面做了點工作,發表在近期的Interspeech和ICASSP會議上。
下面跟大家分享一下我們組最近的一些聲紋深度編碼的關聯應用。聲紋識別最相關聯的任務就是說話人日誌,就是給你一個涵蓋多個人說話的單通道語音,但是可能混疊的問題沒那麼強,有一些混疊,核心的問題是誰在什麼時間點說了什麼話。首先是模塊化框架,這個方法在去年Dihard比賽中第一、第二名都是這樣的思路,先做語音端點檢測,做完後均勻分段切片,然後每個分段切片上提取聲紋深度編碼。由於是超短時語音的深度編碼,它並不能很好的把音素信息過濾掉,可能要做一些多任務學習,提高魯棒性。後面打分這裡我們展開講,主要講的是打分的策略,打分的方法傳統的是用 PLDA 進行點對點的打分,相似度矩陣裡的某個點(i,j),只反應切片片段i和j之間的相似度,沒有考慮上下文信息。我們這裡引入LSTM和Vector-to-Sequence兩種方法結合上下文來計算相似度矩陣。提高相似度矩陣的準確性。
另外大家可以看到說話人日誌中的端到端方法,還是有很大的潛力的,尤其是在沒有理想的聲音活動檢測的前提下。我們在損失函數上針對PIT Loss做了一些改進,降低了複雜度,可以輕鬆做到十幾個說話人的訓練。在 Dihard2019的Task2測試集上,模塊化框架目前最好的系統結果是 27.1%,而目前端到端方法以及達到32%,未來端到端方法在task2這種實際場景是非常有潛力的。
另外,傳統的多說話人TTS方法比較難控制合成出來的聲音與目標聲音的相似度,我們在傳統的多說話人TTS結構的基礎上,在輸出端額外內嵌一個聲紋網絡,把合成輸出的頻譜特徵的聲紋深度編碼特徵提取出來,然後要求輸出端和輸入的目標說話人編碼需要保持高度一致,這樣可以提高合成語音的目標人相似度,並保持基本一致的聲紋深度編碼信息。我們最近還有一個工作是 Cross-lingual multi-speaker TTS,可以把說不同語言的多個說話人的數據混合在一起訓練多人多語言TTS系統,比如可以讓純中文語料說話人學會合成英文,純英文語料說話人學會合成中文,非常適合混合語言多人及特定人合成任務。
時間關係,我就講到這裡,謝謝大家!