Effacer les filtres
Effacer les filtres

Sir, i tried to run my code but it showing error .how to fix the error.

1 vue (au cours des 30 derniers jours)
Suchithra K S
Suchithra K S le 3 Fév 2019
Commenté : Stephan le 5 Fév 2019
The code is given below. and the error is like this "Attempt to execute SCRIPT hamming as a function:
C:\Users\Acer\Desktop\mfcc checking\hamming.m
Error in Untitled2 (line 55)
hamm=hamming(960)';
"
clear all;
close all;
% Step 0: Reading the File & initializing the Time and Freq.code
[x,fs]=audioread('Rumble C2312431.wav');
ts=1/fs;
N=length(x);
Tmax=(N-1)*ts;
fsu=fs/(N-1);
t=(0:ts:Tmax);
f=(-fs/2:fsu:fs/2);
figure, subplot(411),plot(t,x),xlabel('Time'),title('Original Speech');
subplot(412),plot(f,fftshift(abs(fft(x)))),xlabel('Freq (Hz)'),title('Frequency Spectrum');
% Step 1: Pre-Emphasis
a=[1];
b=[1 -0.95];
y=filter(b,a,x);
subplot(413),plot(t,y),xlabel('Time'),title('Signal After High Pass Filter - Time Domain');
subplot(414),plot(f,fftshift(abs(fft(y)))),xlabel('Freq (Hz)'),title('Signal After High Pass Filter - Frequency Spectrum');
% Step 2: Frame Blocking
frameSize=960;
% frameOverlap=128;
% frames=enframe(y,frameSize,frameOverlap);
% NumFrames=size(frames,1);
frame_duration=0.02;
frame_len = frame_duration*fs;
framestep=0.01;
framestep_len=framestep*fs;
% N = length (x);
num_frames =floor(N/frame_len);
% new_sig =zeros(N,1);
% count=0;
% frame1 =x(1:frame_len);
% frame2 =x(frame_len+1:frame_len*2);
% frame3 =x(frame_len*2+1:frame_len*3);
frames=[];
for j=1:num_frames
frame=x((j-1)*framestep_len + 1: ((j-1)*framestep_len)+frame_len);
% frame=x((j-1)*frame_len +1 :frame_len*j);
% identify the silence by finding frames with max amplitude less than
% 0.025
max_val=max(frame);
if (max_val>0.025)
% count = count+1;
% new_sig((count-1)*frame_len+1:frame_len*count)=frames;
frames=[frames;frame];
end
end
% Step 3: Hamming Windowing
NumFrames=size(frames,1);
hamm=hamming(960)';
for i=1:NumFrames
windowed(i,:)=frames(i,:).*hamm;
end
% Step 4: FFT
% Taking only the positive values in the FFT that is the first half of the frame after being computed.
for i=1:NumFrames
ft(i,:)=abs(fft((windowed(i,:)),480));
plot(ft(i,:))
end
% Step 5: Mel Filterbanks
Lower_Frequency = 100;
Upper_Frequency = fs/2;
% With a total of 22 points we can create 20 filters.
Nofilters=20;
lowhigh=[300 fs/2];
%Here logarithm is of base 'e'
lh_mel=1125*(log(1+lowhigh/700));
mel=linspace(lh_mel(1),lh_mel(2),Nofilters+2);
melinhz=700*(exp(mel/1125)-1);
%Converting to frequency resolution
fres=floor(((frameSize)+1)*melinhz/fs);
%Creating the filters
for m =2:length(mel)-1
for k=1:frameSize/2
if k<fres(m-1)
H(m-1,k) = 0;
elseif (k>=fres(m-1)&&k<=fres(m))
H(m-1,k)= (k-fres(m-1))/(fres(m)-fres(m-1));
elseif (k>=fres(m)&&k<=fres(m+1))
H(m-1,k)= (fres(m+1)-k)/(fres(m+1)-fres(m));
elseif k>fres(m+1)
H(m-1,k) = 0;
end
end
end
%H contains the 20 filterbanks, we now apply it to the
%processed signal.
for i=1:NumFrames
for j=1:Nofilters
bankans(i,j)=sum((ft(i,:).*H(j,:)).^2);
end
end
% Step 6: Nautral Log and DCT
% pkg load signal
%Here logarithm is of base '10'
logged=log10(bankans);
for i=1:NumFrames
mfcc(i,:)=dct2(logged(i,:));
end
%plotting the MFCC
figure
hold on
for i=1:NumFrames
plot(mfcc(i,1:13));
end
hold off
% save c5 mfcc
i= mfcc;
save i i
load i.mat
X=i;
k=1;
[IDXi,ci] = kmeans(X,k);
save c41i ci
mfcccombined.m
Displaying mfcccombined.m.

Réponse acceptée

Stephan
Stephan le 3 Fév 2019
Hi,
hamming is a built in function. Do not name your scripts with names of built in functions, because your script shadows the original function, which will not be executed in this case. Easy solution: rename your script.
Best regards
Stephan
  3 commentaires
Suchithra K S
Suchithra K S le 5 Fév 2019
i have one more problem while running this code. It taking toomuch time and it not showing any output. It always showing running. Is it the problem with my code or not?? Can you tell me what's the problem.
Stephan
Stephan le 5 Fév 2019
Sorry, i do not have access to Signal Processing Toolbox. Because of this fact i can not run your code and can not try to find out if there is a problem with it. The problem you had about the error message is an issue that happens pretty often, so i do not need the code to run for suggestions.
I recommend to ask a new question which has the relevant informations. Maybe someone can help.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by