概要
pyaudio有這么幾個功能:
- 提取特征
- 訓練並且使用分類器
- 語音分割功能
- 內容關系可視化
python實現,好處有這么幾個
- 適合做計算分析類型操作(編碼少,效率不低)
- 免費
- 不需要很復雜的搭環境
- 大量的第三方庫可以使用
具體功能
- 特征提取(feature extraction):關於時域信號和頻域信號都有所涉及
- 分類(classification):監督學習,需要用已有的訓練集來進行訓練。交叉驗證也實現了,進行參數優化使用。分類器可以保存在文件中以后使用。
- 回歸(regression):將語音信號映射到一個回歸值。
- 分割(segmenttation):有四個功能被實現了
- [x] 固定大小的分割
- [x] 靜音檢測(silence removal)
- [x] 語音聚類(speaker diarization)
- [x] 語音縮略圖(audio thumbnailing)
- 可視化:給定語音,將內容可視化
特征提取
所有的短時間特征可以見下圖
- 短時間特征(short-term features)
- 時域特征(特征1-3)是直接提取的
- 頻域特征(特征4-34,MFCC除外)是由傅里葉轉換而來
- MFCC特征提取過程已經討論過
過程:語音信號分幀,一幀有34個特征。一般20~100ms
-
中等長度特征(mid-term features)和特別長的特征(long-term features)
- 中等長度的調用短時間的特征,並進行統計運算
- 1-10分鍾左右長度
- long-term調用Mid-term然后做統計運算
-
速度有關的特征
語音分割
pyaudio提供了兩類的語音分割
- 有監督的語音分割:需要有提供一些材料,例如,已經訓練好的分類器。為此,此庫提供了兩種算法:分類的方法和隱馬爾科夫的算法
- 無監督的語音分割:無監督的或者半監督的,不需要提供知識准備,主要的例子是靜音檢測,語音聚類,語音縮略圖
有監督的
- 固定長度的分割算法(fix-sized segmentation)
- audioSegmentation.py的函數mtFileClassfication()是主要的
- 切分一個語音段為一個連續的中等長度的段(mid-term)並且提取min-term features,使用mtFeatureExtraction()
- 使用已經訓練好的模型來進行分類
- 只要兩個段相連並且都是同一個類別,就將兩個段進行合並
- 將數據進行可視化
- 注意事項,一個.segment的文件必須要有
- plotSegmentationResults()用來畫圖可視化數據
- audioSegmentation.py的函數mtFileClassfication()是主要的
-
隱馬爾科夫模型分割算法(HMM-based segmentation)
- 用戶需要提供已經標注過的數據,包括:段開始點,段結束點,段類別
- 一個語音文件配一個標注的配置文件,兩者構成訓練集
- TrainHMM_fromFile()和TrainHMM_fromDir()是兩個訓練的函數
- hmmSegmentation()函數用來使用HMM算法
- plotSegmentationResult()可視化並且計算正確率
無監督的語音分割
-
靜音檢測
- 短時間特征提取
- 訓練SVM,在高能幀和低能幀中,特別的,10%的高能幀和10%的低能幀用在訓練SVM模型
- 將SVM分類器用在全部的語音中,得到一串概率值,對應此幀是個時間幀(audio event)的概率
- 一個動態的閾值被用來探測段是不是活躍的
- 頂
- 0
- 踩