??作者簡(jiǎn)介:熱愛科研的Matlab仿真開發(fā)者,修心和技術(shù)同步精進(jìn),代碼獲取、論文復(fù)現(xiàn)及科研仿真合作可私信。
??個(gè)人主頁:Matlab科研工作室
??個(gè)人信條:格物致知。
更多Matlab完整代碼及仿真定制內(nèi)容點(diǎn)擊??
智能優(yōu)化算法 ? ? ? 神經(jīng)網(wǎng)絡(luò)預(yù)測(cè) ? ? ? 雷達(dá)通信? ? ? ?無線傳感器 ? ? ? ?電力系統(tǒng)
信號(hào)處理 ? ? ? ? ? ? ?圖像處理 ? ? ? ? ? ? ? 路徑規(guī)劃 ? ? ? 元胞自動(dòng)機(jī) ? ? ? ?無人機(jī)
物理應(yīng)用? ? ? ? ? ? ?機(jī)器學(xué)習(xí)
?? 內(nèi)容介紹
聲音自動(dòng)分類是語音識(shí)別領(lǐng)域的一項(xiàng)重要任務(wù),廣泛應(yīng)用于語音交互、語音控制和醫(yī)療診斷等領(lǐng)域。本文提出了一種基于主成分分析(PCA)和最近鄰(KNN)相結(jié)合的聲音自動(dòng)分類方法。PCA用于提取聲音特征的降維表示,KNN用于基于降維特征進(jìn)行分類。實(shí)驗(yàn)結(jié)果表明,該方法在多個(gè)聲音數(shù)據(jù)集上取得了較高的分類精度,證明了其有效性和實(shí)用性。
引言
聲音自動(dòng)分類旨在根據(jù)聲音特征將聲音樣本分類到預(yù)定義的類別中。傳統(tǒng)的聲音自動(dòng)分類方法通常依賴于手工提取的特征,這需要大量的專業(yè)知識(shí)和經(jīng)驗(yàn)。近年來,隨著機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的發(fā)展,基于數(shù)據(jù)驅(qū)動(dòng)的特征提取和分類方法得到了廣泛的關(guān)注。
方法
本文提出的方法包括以下步驟:
-
**特征提?。?*使用梅爾頻譜系數(shù)(MFCC)從聲音樣本中提取特征。MFCC是一種廣泛用于語音識(shí)別領(lǐng)域的特征提取算法,它可以有效地捕捉聲音的頻譜信息。
-
**主成分分析(PCA):**對(duì)MFCC特征進(jìn)行PCA降維。PCA是一種線性變換,它可以將高維特征投影到低維子空間中,同時(shí)保留最大方差的信息。PCA降維可以減少特征的冗余和噪聲,提高分類的效率和準(zhǔn)確性。
-
**最近鄰(KNN):**使用KNN算法對(duì)PCA降維后的特征進(jìn)行分類。KNN是一種非參數(shù)分類算法,它將一個(gè)新的樣本分類為與它最相似的K個(gè)樣本所屬的類別。
結(jié)論
本文提出了一種基于PCA和KNN相結(jié)合的聲音自動(dòng)分類方法。該方法利用PCA降維提取聲音特征的有效表示,并使用KNN進(jìn)行分類。實(shí)驗(yàn)結(jié)果表明,該方法在多個(gè)聲音數(shù)據(jù)集上取得了較高的分類精度,證明了其有效性和實(shí)用性。該方法可以為語音識(shí)別、語音控制和醫(yī)療診斷等領(lǐng)域提供一種有價(jià)值的工具。
?? 部分代碼
clear; clc
?
% ––––––––––––––––––––––––––––– IASPROJECT –––––––––––––––––––––––––––––––
%----AUTHOR: ALESSANDRO-SCALAMBRINO-923216-------
?
% ---MANAGE PATH, DIRECTORIES, FILES--
addpath(genpath(pwd))
fprintf('Extracting features from the audio files...\n\n')
?
coughingFile = dir([pwd,'/Coughing/*.ogg']);
cryingFile = dir([pwd,'/Crying/*.ogg']);
snoringFile = dir([pwd,'/Snoring/*.ogg']);
?
F = [coughingFile; cryingFile; snoringFile];
?
% ---WINDOWS/STEP LENGHT---
windowLength = 0.025;
stepLength = 0.01;
?
% ---FEATURES EXTRACTION---
% ---INITIALIZING FEATURES VECTORS---
allFeatures = [];
coughingFeatures = [];
cryingFeatures = [];
snoringFeatures = [];
?
% ---EXTRACTION---
for i=1:3
for j=1:40
Features = stFeatureExtraction(F(i+j-1).name, windowLength, stepLength);
allFeatures = [allFeatures Features];
if i == 1; coughingFeatures = [coughingFeatures Features]; end
if i == 2; cryingFeatures = [cryingFeatures Features]; end
if i == 3; snoringFeatures = [snoringFeatures Features]; end
end
end
?
?
% ---FEATURES NORMALIZATION----
mn = mean(allFeatures);
st = std(allFeatures);
allFeaturesNorm = (allFeatures - repmat(mn,size(allFeatures,1),1))./repmat(st,size(allFeatures,1),1);
?
?
% ---PCA---
warning('off', 'stats:pca:ColRankDefX')
?
[coeff,score,latent,tsquared,explained] = pca(allFeaturesNorm');
?
disp('The following results are the values of the variance of each coefficient:')
?
explained
?
counter = 0;
?
for p=1:length(explained)
if explained(p) > 80
counter = counter + 1;
end
end
?
disp(['The number of coefficients offering at least 80% of variance is ', mat2str(counter)])
?
fprintf('\n\n')
?
% ---PCA PLOTTING---
S=[]; % size of each point, empty for all equal
C=[repmat([1 0 0],length(coughingFeatures),1); repmat([0 1 0],length(cryingFeatures),1); repmat([0 0 1],length(snoringFeatures),1)];
scatter3(score(:,1),score(:,2),score(:,3),S,C,'filled')
axis equal
title('PCA')
?
?
% –––––––––––––––––––––––TRAIN/TEST DATASET –––––––––––––––––––––––
?
trainPerc = 0.70;
testPerc = 1 - trainPerc;
?
coughingTrain = coughingFile(1:length(coughingFile)*trainPerc);
cryingTrain = cryingFile(1:length(cryingFile)*trainPerc);
snoringTrain = snoringFile(1:length(snoringFile)*trainPerc);
?
FTR = [coughingTrain cryingTrain snoringTrain];
?
TEST DATASET NORMALISATION –––––––––––––––––––––
?
% normalisation in time domain of TEST data
allTestTimeFeatures = allTestTimeFeatures';
allTestTimeFeatures = (allTestTimeFeatures - repmat(mnTime,size(allTestTimeFeatures,1),1))./repmat(stTime,size(allTestTimeFeatures,1),1);
?
% normalisation in frequency domain of TEST data
allTestFreqFeatures = allTestFreqFeatures';
allTestFreqFeatures = (allTestFreqFeatures - repmat(mnFreq,size(allTestFreqFeatures,1),1))./repmat(stFreq,size(allTestFreqFeatures,1),1);
?
% normalisation of both time domain and frequency domain of TEST data
allTestFeatures = allTestFeatures';
allTestFeatures = (allTestFeatures - repmat(mnAll,size(allTestFeatures,1),1))./repmat(stAll,size(allTestFeatures,1),1);
?
?
% –––––––––––––––––––––––––– TRAIN/TEST LABELS ––––––––––––––––––––––––––
?
% TRAIN
labelcoughingTime = repmat(1,length(coughingTrainTimeFeatures),1);
labelcryingTime = repmat(2,length(cryingTrainTimeFeatures),1);
labelsnoringTime = repmat(3, length(snoringTrainTimeFeatures),1);
allTimeLabels = [labelcoughingTime; labelcryingTime; labelsnoringTime];
?
labelcoughingFreq = repmat(1,length(coughingTrainFreqFeatures),1);
labelcryingFreq = repmat(2,length(cryingTrainFreqFeatures),1);
labelsnoringFreq = repmat(3, length(snoringTrainFreqFeatures),1);
allFreqLabels = [labelcoughingFreq; labelcryingFreq; labelsnoringFreq];
?
labelcoughingAll = repmat(1,length(coughingTrainFeatures),1);
labelcryingAll = repmat(2,length(cryingTrainFeatures),1);
labelsnoringAll = repmat(3, length(snoringTrainFeatures),1);
allLabels = [labelcoughingAll; labelcryingAll; labelsnoringAll];
?
% ––––––––––––––––––––––––––– APPLY TEST LABELS ––––––––––––––––––––––––––
?
testLabelcoughingTime = repmat(1,length(coughingTestTimeFeatures),1);
testLabelcryingTime = repmat(2,length(cryingTestTimeFeatures),1);
testLabelsnoringTime = repmat(3, length(snoringTestTimeFeatures),1);
groundTruthTime = [testLabelcoughingTime; testLabelcryingTime; testLabelsnoringTime];
?
testLabelcoughingFreq = repmat(1,length(coughingTestFreqFeatures),1);
testLabelcryingFreq = repmat(2,length(cryingTestFreqFeatures),1);
testLabelsnoringFreq = repmat(3, length(snoringTestFreqFeatures),1);
groundTruthFreq = [testLabelcoughingFreq; testLabelcryingFreq; testLabelsnoringFreq];
?
testLabelcoughingAll = repmat(1,length(coughingTestFeatures),1);
testLabelcryingAll = repmat(2,length(cryingTestFeatures),1);
testLabelsnoringAll = repmat(3, length(snoringTestFeatures),1);
allGroundTruth = [testLabelcoughingAll; testLabelcryingAll; testLabelsnoringAll];
?
?
% –––––––––––––––––––––––––––– KNN –––––––––––––––––––––––––––
fprintf('––––––––––––––––––––––––––– COMPUTING THE KNN ––––––––––––––––––––––––––––\n\n')
?
fprintf('Computing the recognition rate using the following values for k: 1, 2, 3, 5, 7, 8, 10, 15, 20, 50, 100, 200...\n\n')
?
%TIME
KNN_calculation(allTrainTimeFeatures, allTestTimeFeatures, allTimeLabels, groundTruthTime, testLabelcoughingTime, testLabelcryingTime, testLabelsnoringTime, 'TIME DOMAIN', '-pm')
%FREQ
KNN_calculation(allTrainFreqFeatures, allTestFreqFeatures, allFreqLabels, groundTruthFreq, testLabelcoughingFreq, testLabelcryingFreq, testLabelsnoringFreq, 'FREQUENCY DOMAIN', '-pg')
%ALL-TOGETHER
KNN_calculation(allTrainFeatures, allTestFeatures, allLabels, allGroundTruth, testLabelcoughingAll, testLabelcryingAll, testLabelsnoringAll, 'TIME AND FREQUENCY DOMAIN', '-pr')
?
?? 運(yùn)行結(jié)果
?? 參考文獻(xiàn)
[1]王心醉.人臉識(shí)別算法在ATM上的應(yīng)用研究[J].? 2009.DOI:http://159.226.165.120//handle/181722/1057.
?? 部分理論引用網(wǎng)絡(luò)文獻(xiàn),若有侵權(quán)聯(lián)系博主刪除
?? ?關(guān)注我領(lǐng)取海量matlab電子書和數(shù)學(xué)建模資料
?? ?私信完整代碼和數(shù)據(jù)獲取及論文數(shù)模仿真定制
1 各類智能優(yōu)化算法改進(jìn)及應(yīng)用
生產(chǎn)調(diào)度、經(jīng)濟(jì)調(diào)度、裝配線調(diào)度、充電優(yōu)化、車間調(diào)度、發(fā)車優(yōu)化、水庫調(diào)度、三維裝箱、物流選址、貨位優(yōu)化、公交排班優(yōu)化、充電樁布局優(yōu)化、車間布局優(yōu)化、集裝箱船配載優(yōu)化、水泵組合優(yōu)化、解醫(yī)療資源分配優(yōu)化、設(shè)施布局優(yōu)化、可視域基站和無人機(jī)選址優(yōu)化、背包問題、 風(fēng)電場(chǎng)布局、時(shí)隙分配優(yōu)化、 最佳分布式發(fā)電單元分配、多階段管道維修、 工廠-中心-需求點(diǎn)三級(jí)選址問題、 應(yīng)急生活物質(zhì)配送中心選址、 基站選址、 道路燈柱布置、 樞紐節(jié)點(diǎn)部署、 輸電線路臺(tái)風(fēng)監(jiān)測(cè)裝置、 集裝箱船配載優(yōu)化、 機(jī)組優(yōu)化、 投資優(yōu)化組合、云服務(wù)器組合優(yōu)化、 天線線性陣列分布優(yōu)化
2 機(jī)器學(xué)習(xí)和深度學(xué)習(xí)方面
2.1 bp時(shí)序、回歸預(yù)測(cè)和分類
2.2 ENS聲神經(jīng)網(wǎng)絡(luò)時(shí)序、回歸預(yù)測(cè)和分類
2.3 SVM/CNN-SVM/LSSVM/RVM支持向量機(jī)系列時(shí)序、回歸預(yù)測(cè)和分類
2.4 CNN/TCN卷積神經(jīng)網(wǎng)絡(luò)系列時(shí)序、回歸預(yù)測(cè)和分類
2.5 ELM/KELM/RELM/DELM極限學(xué)習(xí)機(jī)系列時(shí)序、回歸預(yù)測(cè)和分類
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU門控神經(jīng)網(wǎng)絡(luò)時(shí)序、回歸預(yù)測(cè)和分類
2.7 ELMAN遞歸神經(jīng)網(wǎng)絡(luò)時(shí)序、回歸\預(yù)測(cè)和分類文章來源:http://www.zghlxwxcb.cn/news/detail-859295.html
2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/長(zhǎng)短記憶神經(jīng)網(wǎng)絡(luò)系列時(shí)序、回歸預(yù)測(cè)和分類
2.9 RBF徑向基神經(jīng)網(wǎng)絡(luò)時(shí)序、回歸預(yù)測(cè)和分類文章來源地址http://www.zghlxwxcb.cn/news/detail-859295.html
2.10 DBN深度置信網(wǎng)絡(luò)時(shí)序、回歸預(yù)測(cè)和分類
2.11 FNN模糊神經(jīng)網(wǎng)絡(luò)時(shí)序、回歸預(yù)測(cè)
2.12 RF隨機(jī)森林時(shí)序、回歸預(yù)測(cè)和分類
2.13 BLS寬度學(xué)習(xí)時(shí)序、回歸預(yù)測(cè)和分類
2.14 PNN脈沖神經(jīng)網(wǎng)絡(luò)分類
2.15 模糊小波神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)和分類
2.16 時(shí)序、回歸預(yù)測(cè)和分類
2.17 時(shí)序、回歸預(yù)測(cè)預(yù)測(cè)和分類
2.18 XGBOOST集成學(xué)習(xí)時(shí)序、回歸預(yù)測(cè)預(yù)測(cè)和分類
方向涵蓋風(fēng)電預(yù)測(cè)、光伏預(yù)測(cè)、電池壽命預(yù)測(cè)、輻射源識(shí)別、交通流預(yù)測(cè)、負(fù)荷預(yù)測(cè)、股價(jià)預(yù)測(cè)、PM2.5濃度預(yù)測(cè)、電池健康狀態(tài)預(yù)測(cè)、用電量預(yù)測(cè)、水體光學(xué)參數(shù)反演、NLOS信號(hào)識(shí)別、地鐵停車精準(zhǔn)預(yù)測(cè)、變壓器故障診斷
2.圖像處理方面
圖像識(shí)別、圖像分割、圖像檢測(cè)、圖像隱藏、圖像配準(zhǔn)、圖像拼接、圖像融合、圖像增強(qiáng)、圖像壓縮感知
3 路徑規(guī)劃方面
旅行商問題(TSP)、車輛路徑問題(VRP、MVRP、CVRP、VRPTW等)、無人機(jī)三維路徑規(guī)劃、無人機(jī)協(xié)同、無人機(jī)編隊(duì)、機(jī)器人路徑規(guī)劃、柵格地圖路徑規(guī)劃、多式聯(lián)運(yùn)運(yùn)輸問題、 充電車輛路徑規(guī)劃(EVRP)、 雙層車輛路徑規(guī)劃(2E-VRP)、 油電混合車輛路徑規(guī)劃、 船舶航跡規(guī)劃、 全路徑規(guī)劃規(guī)劃、 倉儲(chǔ)巡邏
4 無人機(jī)應(yīng)用方面
無人機(jī)路徑規(guī)劃、無人機(jī)控制、無人機(jī)編隊(duì)、無人機(jī)協(xié)同、無人機(jī)任務(wù)分配、無人機(jī)安全通信軌跡在線優(yōu)化、車輛協(xié)同無人機(jī)路徑規(guī)劃
5 無線傳感器定位及布局方面
傳感器部署優(yōu)化、通信協(xié)議優(yōu)化、路由優(yōu)化、目標(biāo)定位優(yōu)化、Dv-Hop定位優(yōu)化、Leach協(xié)議優(yōu)化、WSN覆蓋優(yōu)化、組播優(yōu)化、RSSI定位優(yōu)化
6 信號(hào)處理方面
信號(hào)識(shí)別、信號(hào)加密、信號(hào)去噪、信號(hào)增強(qiáng)、雷達(dá)信號(hào)處理、信號(hào)水印嵌入提取、肌電信號(hào)、腦電信號(hào)、信號(hào)配時(shí)優(yōu)化
7 電力系統(tǒng)方面
微電網(wǎng)優(yōu)化、無功優(yōu)化、配電網(wǎng)重構(gòu)、儲(chǔ)能配置、有序充電
8 元胞自動(dòng)機(jī)方面
交通流 人群疏散 病毒擴(kuò)散 晶體生長(zhǎng) 金屬腐蝕
9 雷達(dá)方面
卡爾曼濾波跟蹤、航跡關(guān)聯(lián)、航跡融合
到了這里,關(guān)于【語音識(shí)別】基于主成分分析PCA結(jié)合最近鄰KNN實(shí)現(xiàn)聲音自動(dòng)分類附matlab代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!