Testing classifying gender on LSTM

3 views (last 30 days)
Alfi
Alfi on 19 Jan 2021
Commented: jibrahim on 20 Jan 2021
I tried to recreate gender classification using LSTM Method for deep learning.
On the example, it show the prediction for all training data.
But I still confused on how to test a random sample .wav file fom the test dataset, so that my matlab can give specific prediction ouput of its gender labels.
I tried to add new line below and use predict, but it didn't work.
prediction = classify(net,sample_feature)
Can anyone explain or provide me link on how to test random file and give specific labels ouput?

Accepted Answer

jibrahim
jibrahim on 19 Jan 2021
Alfi,
The second section of this example (Classify Gender with a Pre-Trained Network) addresses this:
  2 Comments
Alfi
Alfi on 20 Jan 2021
Edited: Alfi on 20 Jan 2021
Thank you! I forgot to save the trained-network.
But now I have another problem with Confusion Matrix.
% Testing
load('TestLSTM.mat', 'net', 'M', 'S');
[audioIn, Fs] = audioread('common_voice_en_1720.wav');
sound(audioIn, Fs)
boundaries = detectSpeech(audioIn, Fs);
audioIn = audioIn(boundaries(1):boundaries(2));
extractor = audioFeatureExtractor( ...
"SampleRate",Fs, ...
"Window",hamming(round(0.03*Fs),"periodic"), ...
"OverlapLength",round(0.02*Fs), ...
...
"gtcc",true, ...
"gtccDelta",true, ...
"gtccDeltaDelta",true, ...
...
"SpectralDescriptorInput","melSpectrum", ...
"spectralCentroid",true, ...
"spectralEntropy",true, ...
"spectralFlux",true, ...
"spectralSlope",true, ...
...
"pitch",true, ...
"harmonicRatio",true);
sample_features = extract(extractor, audioIn);
sample_features = (sample_features.' - M)./S;
classify(net, sample_features)
%Confusion Matrix
prediction = classify(net,sample_features);
figure
cm = confusionchart(labelsTrain,prediction,'title','Prediction Accuracy');
cm.ColumnSummary = 'column-normalized';
cm.RowSummary = 'row-normalized';
It says that "Vectors of true and predicted labels must have the same number of observations."
What should I do? Do I need to cross validate?
jibrahim
jibrahim on 20 Jan 2021
In your code, prediction is the predicted label from the speech file you're chekcing. I do not know what labelsTrain is, but I suspect it contains labels from multiple files, rather just one, so you get an error because prediction and labelsTrain have inconsistent sizes. Note that it does not make much sense to generate a confusion matrix for one prediction. A confusion matric would be useful if you classify a large number of files.

Sign in to comment.

More Answers (0)

Products


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!