Ⅰ 如何用MATLAB實現語音識別
matlab有專門用於開發語音識別程序的工具包,不過可能要去網上下載,如果是做語音合成,還可以專門買到一本書講如何用matlab做,好像是機械工業出版社出的,外國人寫的。不過matlab只適合於做試驗,如果想做一個產品,建議還是要用VC++或者C++ Builder 做一個外殼的。
Ⅱ matlab中的特定人語音識別演算法DTW演算法的應用常式
語音識別原理
語音識別系統的本質就是一種模式識別系統,它也包括特徵提取、模式匹配、參考模式庫等基本單元。由於語音信號是一種典型的非平穩信號,加之呼吸氣流、外部噪音、電流干擾等使得語音信號不能直接用於提取特徵,而要進行前期的預處理。預處理過程包括預濾波、采樣和量化、分幀、加窗、預加重、端點檢測等。經過預處理的語音數據就可以進行特徵參數提取。在訓練階段,將特徵參數進行一定的處理之後,為每個詞條得到一個模型,保存為模板庫。在識別階段,語音信號經過相同的通道得到語音參數,生成測試模板,與參考模板進行匹配,將匹配分數最高的參考模板作為識別結果。後續的處理過程還可能包括更高層次的詞法、句法和文法處理等,從而最終將輸入的語音信號轉變成文本或命令。
DTW演算法原理
DTW是把時間規整和距離測度計算結合起來的一種非線性規整技術,它尋找一個規整函數im=Ф(in),將測試矢量的時間軸n非線性地映射到參考模板的時間軸m上,並使該函數滿足:
D就是處於最優時間規整情況下兩矢量的距離。由於DTW不斷地計算兩矢量的距離以尋找最優的匹配路徑,所以得到的是兩矢量匹配時累積距離最小所對應的規整函數,這就保證了它們之間存在的最大聲學相似性。
DTW演算法的實質就是運用動態規劃的思想,利用局部最佳化的處理來自動尋找一條路徑,沿著這條路徑,兩個特徵矢量之間的累積失真量最小,從而避免由於時長不同而可能引入的誤差。

Ⅲ matlab語音識別程序實例
語音游戲大師
非常不錯!
Ⅳ 關於語音識別MATLAB的問題
% 概率密度函數的初始聚類
% 平均分段
for k = 1:K
T = size(samples(k).data,1);
samples(k).segment=floor([1:T/N:T T+1]);
end
%對屬於每個狀態的向量進行K均值聚類,得到連續混合正態分布
for i = 1:N
%把相同聚類和相同狀態的向量組合到一個向量中
vector = [];
for k = 1:K
seg1 = samples(k).segment(i);
seg2 = samples(k).segment(i+1)-1;
vector = [vector ; samples(k).data(seg1:seg2,:)];
end
mix(i) = getmix(vector, M(i));
end
我寫的和你一樣啊,但是floor([1:T/N:T T+1]);是由N+1項的,下面循環for i = 1:N-1應該是for i = 1:N。。。
Ⅳ matlab怎麼運行語音識別程序
我們這學期剛學的凌陽61板,語音程序有A2000,S480,S2403種演算法,我先給個A2000的,還需要的話發消息給我,一起學習啦!
#include "A2000.h"
#define SPEECH_1 0
#define DAC1 1
#define DAC2 2
#define Ramp_UpDn_Off 0
#define Ramp_UpDn_On 3
#define Manual 0
#define Auto 1
#define Full 1
#define Empty 2
#define Mode 1
//===============================================================================================
// 函數: main()
// 描述:主函數
//===============================================================================================
main()
{
extern long RES_WW_24K_SA,RES_WW_24K_EA; //定義語音資源的首末地址標號
long int Addr; //定義地址變數
int Ret = 0; //定義獲取語音數據變數並初始化
if(Mode == 1) //採用自動方式播放
{
SACM_A2000_Initial(1); //自動方式播放初始化
SACM_A2000_Play(SPEECH_1,DAC1,Ramp_UpDn_On); //定義語音索引號、播放通道、允許音量增/減調節
while(1){
F_ClearWatchdog();
SACM_A2000_ServiceLoop();} //獲取語音數據並將其填入解碼隊列
}
if(Mode == 0) //採用非自動方式播放
{
Addr=RES_WW_24K_SA; //送入語音隊列的首址
SACM_A2000_Initial(0); //非自動方式播放的初始化
SACM_A2000_InitDecoder(DAC1); //開始對A2000的語音數據以非自動方式解碼
while(SACM_A2000_TestQueue()!=Full) //測試並獲取語音隊列的狀態
{
Ret=SP_GetResource(Addr); //從資源文件里獲取一個字型語音數據
SACM_A2000_FillQueue(Ret); //獲取語音編碼數據並填入語音隊列等候解碼
Addr++;
}
while(1)
{
if(SACM_A2000_TestQueue()!=Full)
{
Ret =SP_GetResource(Addr);
SACM_A2000_FillQueue(Ret);
Addr++;
}
if(Addr< RES_WW_24K_EA ) //如果該段語音未播完,即未到達末地址時
SACM_A2000_Decoder(); //獲取資源並進行解碼,再通過中斷服務子程序送入DAC通道播放
else
SACM_A2000_Stop(); //否則,停止播放
F_ClearWatchdog(); //清看門狗
}
}
}
Ⅵ 基於MATLAB的語音識別
用matlab的工具箱speech processing可以搞定
Ⅶ 如何用神經網路進行語音識別的matlab代碼
給你一個實例,希望通過該例子對實現神經網路應用有一定的了解。
%x,y分別為輸入和目標向量
x=1:5;
y=[639 646 642 624 652];
%創建一個前饋網路
net=newff(minmax(x),[20,1],{'tansig','purelin'});
%模擬未經訓練的網路net並畫圖
y1=sim(net,x);plot(x,y1,':');
%採用L-M優化演算法
net.trainFcn='trainlm';
%設置訓練演算法
net.trainParam.epochs=500;net.trainParam.goal=10^(-6);
%調用相應演算法訓練BP網路
[net,tr,yy]=train(net,x,y);
%對BP網路進行模擬
y1=sim(net,x);
%計算模擬誤差
E=y-y1;MSE=mse(E)
hold on
%繪制匹配結果曲線
figure;
plot(x,y1,'r*',x,y,'b--')
Ⅷ 語音識別系統都是用matlab做出來的嗎
首先要知道,matlab是一種數學工具,只要能夠用數學表達的問題,基本都能求解。而matlab能完成的,其他語言同樣能夠完成,只是matlab 裡面有許多的工具箱,用於各種場景的特殊應用,所以就變得比較方便。而基於matlab的語音信號的結合的應用比較多,我就做過語音識別,這個發展和matlab無關,主要是語音識別的模型和演算法,我們用matlab只是進行演算法驗證,最後還是要轉化為c語言或匯編程序。因此要談發展程度,只能說語音識別演算法的發展如何。matlab 還可以方便的對語音信號進行處理,如壓縮,濾波,頻率變換,等等等,只要是語音軟體能夠處理的,matlab都可以實現。
Ⅸ 如何利用Matlab完成數字1-9的語音識別
我也自學的數字信號處理,斷斷續續看了一年了,今年畢業設計就是在2000系列的DSP上用FFT設計的FIR,感覺有點入門了,但是做題目還是不會。語音信號處理我也要自學的,我買的書就叫語音信號處理,告訴你,國人寫的這些信號處理的書基本上都是東抄...