語(yǔ)音識(shí)別原理

成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)浦北,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):13518219792
語(yǔ)音識(shí)別系統(tǒng)的本質(zhì)就是一種模式識(shí)別系統(tǒng),它也包括特征提取、模式匹配、參考模式庫(kù)等基本單元。由于語(yǔ)音信號(hào)是一種典型的非平穩(wěn)信號(hào),加之呼吸氣流、外部噪音、電流干擾等使得語(yǔ)音信號(hào)不能直接用于提取特征,而要進(jìn)行前期的預(yù)處理。預(yù)處理過(guò)程包括預(yù)濾波、采樣和量化、分幀、加窗、預(yù)加重、端點(diǎn)檢測(cè)等。經(jīng)過(guò)預(yù)處理的語(yǔ)音數(shù)據(jù)就可以進(jìn)行特征參數(shù)提取。在訓(xùn)練階段,將特征參數(shù)進(jìn)行一定的處理之后,為每個(gè)詞條得到一個(gè)模型,保存為模板庫(kù)。在識(shí)別階段,語(yǔ)音信號(hào)經(jīng)過(guò)相同的通道得到語(yǔ)音參數(shù),生成測(cè)試模板,與參考模板進(jìn)行匹配,將匹配分?jǐn)?shù)最高的參考模板作為識(shí)別結(jié)果。后續(xù)的處理過(guò)程還可能包括更高層次的詞法、句法和文法處理等,從而最終將輸入的語(yǔ)音信號(hào)轉(zhuǎn)變成文本或命令。
DTW算法原理
DTW是把時(shí)間規(guī)整和距離測(cè)度計(jì)算結(jié)合起來(lái)的一種非線(xiàn)性規(guī)整技術(shù),它尋找一個(gè)規(guī)整函數(shù)im=Ф(in)?,將測(cè)試矢量的時(shí)間軸n非線(xiàn)性地映射到參考模板的時(shí)間軸m上,并使該函數(shù)滿(mǎn)足:
D就是處于最優(yōu)時(shí)間規(guī)整情況下兩矢量的距離。由于DTW不斷地計(jì)算兩矢量的距離以尋找最優(yōu)的匹配路徑,所以得到的是兩矢量匹配時(shí)累積距離最小所對(duì)應(yīng)的規(guī)整函數(shù),這就保證了它們之間存在的最大聲學(xué)相似性。
DTW算法的實(shí)質(zhì)就是運(yùn)用動(dòng)態(tài)規(guī)劃的思想,利用局部最佳化的處理來(lái)自動(dòng)尋找一條路徑,沿著這條路徑,兩個(gè)特征矢量之間的累積失真量最小,從而避免由于時(shí)長(zhǎng)不同而可能引入的誤差。
dtwj 應(yīng)該是自定義的公式。
你進(jìn)入宏編輯器里面查看,里面的代碼,有 function 開(kāi)頭的 自定義函數(shù)。查查。
from math import *
import matplotlib.pyplot as plt
import numpy
def print_matrix(mat) :
print '[matrix] width : %d height : %d' % (len(mat[0]), len(mat))
print '-----------------------------------'
for i in range(len(mat)) :
print mat[i]#[v[:2] for v in mat[i]]
def dist_for_float(p1, p2) :
dist = 0.0
elem_type = type(p1)
if elem_type == float or elem_type == int :
dist = float(abs(p1 - p2))
else :
sumval = 0.0
for i in range(len(p1)) :
sumval += pow(p1[i] - p2[i], 2)
dist = pow(sumval, 0.5)
return dist
def dtw(s1, s2, dist_func) :
w = len(s1)
h = len(s2)
mat = [([[0, 0, 0, 0] for j in range(w)]) for i in range(h)]
#print_matrix(mat)
for x in range(w) :
for y in range(h) :
dist = dist_func(s1[x], s2[y])
mat[y][x] = [dist, 0, 0, 0]
#print_matrix(mat)
elem_0_0 = mat[0][0]
elem_0_0[1] = elem_0_0[0] * 2
for x in range(1, w) :
mat[0][x][1] = mat[0][x][0] + mat[0][x - 1][1]
mat[0][x][2] = x - 1
mat[0][x][3] = 0
for y in range(1, h) :
mat[y][0][1] = mat[y][0][0] + mat[y - 1][0][1]
mat[y][0][2] = 0
mat[y][0][3] = y - 1
for y in range(1, h) :
for x in range(1, w) :
distlist = [mat[y][x - 1][1], mat[y - 1][x][1], 2 * mat[y - 1][x - 1][1]]
mindist = min(distlist)
idx = distlist.index(mindist)
mat[y][x][1] = mat[y][x][0] + mindist
if idx == 0 :
mat[y][x][2] = x - 1
mat[y][x][3] = y
elif idx == 1 :
mat[y][x][2] = x
mat[y][x][3] = y - 1
else :
mat[y][x][2] = x - 1
mat[y][x][3] = y - 1
result = mat[h - 1][w - 1]
retval = result[1]
path = [(w - 1, h - 1)]
while True :
x = result[2]
y = result[3]
path.append((x, y))
result = mat[y][x]
if x == 0 and y == 0 :
break
#print_matrix(mat)
return retval, sorted(path)
def display(s1, s2) :
val, path = dtw(s1, s2, dist_for_float)
w = len(s1)
h = len(s2)
mat = [[1] * w for i in range(h)]
for node in path :
x, y = node
mat[y][x] = 0
mat = numpy.array(mat)
plt.subplot(2, 2, 2)
c = plt.pcolor(mat, edgecolors='k', linewidths=4)
plt.title('Dynamic Time Warping (%f)' % val)
plt.subplot(2, 2, 1)
plt.plot(s2, range(len(s2)), 'g')
plt.subplot(2, 2, 4)
plt.plot(range(len(s1)), s1, 'r')
plt.show()
s1 = [1, 2, 3, 4, 5, 5, 5, 4]
s2 = [3, 4, 5, 5, 5, 4]
s2 = [1, 2, 3, 4, 5, 5]
s2 = [2, 3, 4, 5, 5, 5]
#val, path = dtw(s1, s2, dist_for_float)
display(s1, s2)
我看了一下你的鏈接和程序.
這是你沒(méi)定義dtwOptSet,當(dāng)然dtw和dtwOptSet都是作者自定義的函數(shù),不在matlab的標(biāo)準(zhǔn)庫(kù)里,這個(gè)圖也是明顯用了3個(gè)subplot畫(huà)的
如果你想運(yùn)行這個(gè),請(qǐng)去作者推薦的
(%A6p%A6%F3%A8%FA%B1o%B5{%A6%A1%BDX)
下載example就可以了.
網(wǎng)站欄目:pythondtw函數(shù),python width
本文地址:http://chinadenli.net/article31/dsidesd.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、服務(wù)器托管、App設(shè)計(jì)、網(wǎng)站策劃、微信公眾號(hào)、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)