基於DTW自學習的非特定人語音識別

2021-10-22 15:24:36 字數 1124 閱讀 1095

最近需要在cortexm4是做一套非特定人孤立詞識別演算法,研究了一下語音識別演算法,目前較為廣泛的是dtw、hmm和ann,由於mcu算力有限,演算法較為簡單的dtw顯然是不二之選。

dtw(dynamic timewarping)

演算法是一種模式匹配經典演算法,它使用動態規劃(

dp)的方法成功解決了語音頻號特徵引數序列時間對準的問題,演算法較為簡單,有效,對處理器效能要求不高,在孤立詞語音識別中獲得了廣泛應用。

dtw演算法對於特定人孤立詞識別準確度較高,但是對於非特定人,其特徵引數於模型庫有時候會存在較大區別,從而導致識別率不高的現象。

為解決該問題,本文嘗試採用自學習方式更新模板庫,從而提高裝置的識別率。

步驟如下:

1、獲取當前語音的特徵引數後,與預置的標準特徵對比。預置兩種匹配度:最低匹配及高度匹配。

2、如果標準特徵匹配通過,先輸出匹配成功,去執行相應動作以提高響應速度。如果不通過,則開始使用者特徵匹配。

3、如果是高度匹配標準特徵,則程式返回,否則開始使用者特徵匹配。

4、如果使用者特徵是高度匹配,則程式返回,否則開始臨時特徵匹配。

5、如果臨時特徵庫不存在,則儲存當前特徵為臨時特徵。

6、如果臨時特徵為高度匹配,則臨時特徵匹配變數++。否則把當前輸入儲存為臨時特徵。

7、如果臨時特徵匹配變數大於預設值,意味著是同一使用者語音輸入,把臨時特徵儲存為使用者特徵。

通過上述操作,可以自動更新經常使用該裝置使用者的語音特徵,提高裝置識別率。

模板定義:

特徵模板

說明模板1

同一孤立詞訓練挑選的3個不通模組

模板2模板3

使用者模板1

兩個使用者模組,預設為空

使用者模板2

臨時模板

用於儲存最後一次特徵引數

#define feature_lib_num   3

#define user_lib_num 2

typedef struct dtw_feature_struct

dtwfraturelib;

程式流程:

python自學習筆記

求冪 3 5 3的5次方 求餘數 7 2 1 7 2 3 字串轉換成浮點型 a 87.3 b float a a 87.3 b 87.3 輸入字串 這裡輸入的是字串 some raw input 12 some 12 a 1.3 print a,type a 可以多個輸出後面直接接逗號分開 sequ...

石頭剪刀布自學習人工智慧

先點關注,不迷路 前一段靈光一現,想出了這個演算法 不知道以前有沒有人寫過 應該是有的 不過我覺得我還是可以大概說一下我的想法 還是那句話,講得不好勿噴 詳解 既然是自學習,那肯定是得學習的 石頭剪刀布這個遊戲本身可能是沒什麼可學的,隨機數就可以獲得不錯的勝率 由於勝負是由兩個人的決策決定的,只能通...

無監督學習之自學習與半監督學習

有兩種常見的無監督特徵學習方式,區別在於有什麼樣的未標註資料。自學習 self taught learning 是其中更為一般的 更強大的學習方式,它不要求未標註資料和已標註資料來自同樣的分布。另外一種帶限制性的方式也被稱為半監督學習,它要求未標註資料和已標註資料服從同樣的分布。這個例子裡,未標註資...