【機器學習PAI實踐十二】機器學習實現男女聲音識別分類(含語音特徵提取資料和程式碼)

李博Garvin發表於2017-09-27

背景

隨著人工智慧的演算法發展,對於非結構化資料的處理能力越來越受到重視,這裡面的關鍵一環就是語音資料的處理。目前,許多關於語音識別的應用案例已經影響著我們的生活,例如一些智慧音響中利用語音傳送指令,一些搜尋工具利用語音輸出文字代替鍵盤錄入。

本文我們將針對語音識別中最簡單的案例“男女聲音”識別,結合本地的R工具以及機器學習PAI,為大家進行介紹。通過本案例,可以將任何使用者的語音資料標記出性別,並且保持高準確率。我們把整個實驗流程切分為兩部分,第一部分是聲音訊號的特徵提取,通過R的訊號處理工具實現;第二部分通過機器學習PAI實現男女聲音分類模型的訓練,本實驗需要事先積累男女聲音的錄音資料,本文已經提供處理好的3000條語音資料,文章末尾提供下載。

聲音訊號特徵提取

語音資料與影象資料以及文字資料不同,如果經常使用K歌軟體或者是語音合成軟體,不難理解語音資料通常成訊號狀分佈。

為了有效的通過演算法處理這種波形資料,需要首先通過訊號處理工具對語音訊號進行處理。本文我們選用的是R語言的warbleR包,warbleR包含大量的頻譜處理工具,可以通過其中的頻譜處理函式提取出關於聲音的以下特徵資訊,因為男生和女生在聲音訊率、振幅的方面一定有很大區別,所以要通過提取以下特徵幫助我們進行分類:

接下來會講解如何提取這些聲音訊號的特徵:

1.安裝R

首先安裝R語言包,warbleR需要R的版本是3.2以上,這裡強烈建議大家使用3.3.3版本(博主在使用3.4的時候遇到錯誤)。具體R的安裝方式網上有很多介紹,這裡就不詳細介紹了。

2.安裝warbleR

安裝完R之後,進入R命令列,需要通過以下命令安裝warbleR:

install.packages("warbleR")  

library(warbleR)  

這裡需要注意的是映象最好使用美國的預設映象服務,需要翻*,不然很有可能會安裝不成功,因為國內的映象會缺少某些依賴包。

3.特徵提取

首先把需要處理的錄音資料(必須是wav格式)按照男聲、女聲分裝在male和female兩個資料夾中,然後執行筆者提供的R指令碼程式碼(文末提供了下載連結)。需要將程式碼中以下兩個檔案路徑改為自己建立的male以及female檔案路徑即可:

執行這個R指令碼,就會將wav格式的聲音檔案轉化為結構化資料,資料會儲存為一個CSV檔案。檔案部分截圖:

PAI訓練男女聲音分類模型

1.匯入資料

將通過R處理後的資料匯入PAI平臺,也可以直接將文末提供的處理好的資料匯入。具體方法可以看:https://help.aliyun.com/video_detail/54945.html

資料匯入後,可以看到有20個特徵以及1列label列,

2.建立分類模型

通過拖拉PAI平臺的元件搭建實驗,實驗流程圖:

  • voice_classify:為資料讀入源
  • 拆分:將資料集拆分為訓練集以及預測集
  • 線性支援向量機:通過SVM演算法訓練生成模型
  • 預測元件:通過模型對預測集預測
  • 混淆矩陣:用來評估

這是一個比較簡單的二分類場景,具體也可以參看之前的一些文章:https://yq.aliyun.com/articles/54260

3.評估

最終“混淆矩陣”元件會顯示如下圖的分類評估:

通過混淆矩陣,可以看到男女聲音的分類還是非常精準的。

總結

本文通過使用R指令碼以及機器學習PAI實現了男女聲音分類的案例,最終的準確率達到百分之九十八左右。在實際使用過程中,使用者需要執行以下幾步:
(1)首先積累需要分類的聲音檔案,資料越多越好,儲存為wav格式。
(2)然後通過R指令碼對打標好的聲音檔案進行特徵提取。
(3)將處理後的資料上傳PAI,建立分類模型即可。

PAI地址:https://data.aliyun.com/product/learn
企業服務諮詢:https://survey.aliyun.com/survey/AMgL8_Pm5
資料下載(程式碼及資料來自warbleR社群開源提供):https://github.com/jimenbian/PAI_voice_classify
與作者討論可以關注我的微信公眾號“凡人機器學習”:

相關文章