+ Post New Thread
Page 1 of 2 1 2 LastLast
Results 1 to 20 of 25
  1. #1
    Full Member level 1
    Points: 2,027, Level: 10

    Join Date
    Feb 2007
    Posts
    95
    Helped
    4 / 4
    Points
    2,027
    Level
    10

    matlab code for speech recognition

    Hi to all..
    I am doing my project on hardware control using Speech Recognition system..for this i required a matlab code for Speech Recognition (not identification)..Means i want to varify a stored character (or word if possible) speek by ANY speaker.. When ever a particular word or character is varified, then i should get high output on parallel port..so that using this output i can control a specific hardware..
    If accurate code is available in C/C++ then also its allowable for me..
    please help me [/quote]

  2. #2
    Full Member level 5
    Points: 3,262, Level: 13

    Join Date
    Jun 2004
    Posts
    278
    Helped
    10 / 10
    Points
    3,262
    Level
    13

    speech recognition code

    Vista!!! Windows Vista has Speech Recognition support.

    Added after 9 minutes:

    Sorry... You meant hardware!

    Well have a look at Microchip's dsPIC. They provide library for Speech Recognition and a free compiler in the form of Student Edition.



  3. #3
    Full Member level 1
    Points: 2,027, Level: 10

    Join Date
    Feb 2007
    Posts
    95
    Helped
    4 / 4
    Points
    2,027
    Level
    10

    matlab code speech recognition

    Hi Hill..
    actually i want to do all my coding in matlab .. I just want to get output pin of parallel port high when ever any chacter will recognized.. nothing else..If i get output for only one character(any from a to z) then also its good for me. i donot want more than one character. But it should be strickly detect only one pre stored character..



  4. #4
    Junior Member level 1
    Points: 1,205, Level: 7
    snoopfan's Avatar
    Join Date
    Sep 2006
    Posts
    16
    Helped
    1 / 1
    Points
    1,205
    Level
    7

    speech recognition matlab code

    Hello,

    Did u try to do it on matlab???


    1 members found this post helpful.

  5. #5
    Newbie level 6
    Points: 965, Level: 7
    payate's Avatar
    Join Date
    Sep 2007
    Posts
    11
    Helped
    0 / 0
    Points
    965
    Level
    7

    speech recognition code using matlab

    hii..im also have problem in speech recognition..
    now im only have solution form waveread, and fft..then what should i do after that..?
    how to do feature extraction and match with the trained data?
    and one more problem..how to implement Neural Network?training using back propagation?



    •   AltAdvertisment

        
       

  6. #6
    Member level 5
    Points: 1,632, Level: 9

    Join Date
    Jul 2007
    Posts
    80
    Helped
    10 / 10
    Points
    1,632
    Level
    9

    speech recognition code matlab

    Don't look for it....write it...have you tried it...??
    And yes...google ....u will get it...it is there on net...



  7. #7
    Member level 3
    Points: 1,417, Level: 8

    Join Date
    Sep 2007
    Location
    india
    Posts
    54
    Helped
    11 / 11
    Points
    1,417
    Level
    8

    matlab speech recognition code

    hey payate...

    i dont have a good idea abt neural nets but aa for the feature extraction is concerned in the normal dsp techniques like HMM or DWT, the genaral tendency is to use linear predictive coeff or cepstarl coeff...followed by vector quantization.
    let me tell u a few advantages of this ...
    1. this will make the signal independent of the speaker as u r not usin the freq...the main diff between 2 speakers.
    2. the amount of data to be stored will be significantly less...

    these are just a few....
    the output of this would be a vector of quantized values...
    if u think that this kind of a data is useful for u, then i can help u further....
    regards,
    rakesh



    •   AltAdvertisment

        
       

  8. #8
    Newbie level 6
    Points: 965, Level: 7
    payate's Avatar
    Join Date
    Sep 2007
    Posts
    11
    Helped
    0 / 0
    Points
    965
    Level
    7

    matlab program for speech recognition

    dear rakesh..

    can u help me on that..im try to get the vectors..but i dont know how to do that...

    this is my code..can u please check it :


    function matlab_tools()

    % function matlab_tools
    % =====================
    %
    % Some basic tools / functions from matlab which are important
    % for speech processing.


    % Graphical intialization
    % -----------------------

    figure(1);
    set(gcf,'position',[150 150 500 500]) % Bigger window than default


    % Read a *.wav signal
    % -------------------

    [x,fs] = wavread('one.wav');

    % Play the signal
    % ---------------

    sound(x,fs);


    % Preepmhasis filter
    % ------------------
    %
    % It is common practice to use a preemphasis filter in speech recognition
    % tasks. It is a simple hight pass filter. One effect is thus that it removes
    % a bias from the signal.
    % If you listen to the signal after the preemphasis filter, you will hear
    % that it sounds differently.
    % You can comment the preemphasis filter out to see if there is a difference
    % in the oscillogram.

    precoeff = -0.9;
    x = [x(1)*(1+precoeff);x(2:end)+precoeff*x(1:end-1)];

    % Plot the oscillogram
    % --------------------
    %
    % Basically it is possible to type just plot(x) which displays the
    % oscillogram of the signal. In this case the units on the x-axis
    % would be samples. It is preferrable though to have the units on
    % the x-axis in seconds. Therefore the plot function is called with
    % two arguments:
    % 1st arg: array with the sampling times
    % since the sampling frequcency is 'fs', the sampling period is 1/fs.
    % i.e. the time between two samples is 1/fs.
    % 2nd arg: array with the corresponding function values

    subplot(3,1,1);
    plot([0:length(x)-1]/fs,x);
    xlim([0 0.7]);
    xlabel('time [s]');


    % Plot the Spectrogram
    % --------------------
    %
    % This an easy way to perfrom a short-term analysis of a speech
    % signal. The spectrogram function can be called with specgram(x).
    % Then the scaling of time and frequency axes is not in Second or Hertz.
    % With some more arguments the function has Seconds / Hertz as units and is
    % more flexible:
    % 1st arg: signal in time domain
    % 2nd arg: number of fft points (can be chose same as the window-size)
    % 3rd arg: sampling frequency
    % 4th arg: window-size
    % 5th arg: window-shift

    % In this first version of the spectrogram the window-size is quite big.
    % Therefore the resultion in the frequency domain is high, the resolution
    % in the time domain is low however.

    subplot(3,1,2);
    winSize = 300;
    winShift = 100;
    specgram(x,winSize,fs,winSize,winShift);

    % Now in the second version we don't care so much about the frequency
    % resolution any more but want to have a better resolution in the time-domain
    % Terefore the winow-size is chosen smaller.

    subplot(3,1,3);
    winSize = 100;
    winShift = 50;
    specgram(x,winSize,fs,winSize,winShift);


    % FFT
    % ---
    %
    % Now we will do a fft (just for one frame) without the specgram function.

    figure(2);
    set(gcf,'position',[150 150 500 500]) % Bigger window than default

    winSize = 300;

    %-- Select a time-slice for which the fft has to be plotted.

    xx = x(1001:1000+winSize);

    %-- Plot in the time domain

    subplot(3,1,1);
    plot([0:winSize-1]/fs,xx);

    % Often the FFT is not performed on the signal directly but the
    % signal is windowed for example with a hamming window. This is
    % done to remove discontinuities at the frame border which would
    % introduce higher frequency components.

    subplot(3,1,2);
    win = hamming(winSize)/0.54;
    xx = xx .* win;
    plot([0:winSize-1]/fs,xx);

    subplot(3,1,3);

    % Do the FFT and plot the frame in the frequency domain.
    % The frequceny resolution is fs/winSize.
    % This plots the frequcency from 0 up to the sampling frequency fs.

    X = abs(fft(xx));
    plot([0:winSize-1]*fs/winSize,X);
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % Demonstration code for "Independent component analysis: A Tutorial Introduction"
    % JV Stone, MIT Press, September 2004.
    % Copyright: 2005, JV Stone, Psychology Department, Sheffield University, Sheffield, England.
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    % Basic Bell-Sejnowski ICA algorithm demonstrated on 2 speech signals.
    % The default value of each parameter is given in [] brackets.

    % [0] Set to 1 to hear signals.
    listen=0; % set to 1 if have audio.

    % [1] Set random number seed.
    seed=9; rand('seed',seed); randn('seed',seed);

    % [2] M = number of source signals and signal mixtures.
    M = 2;
    % [1e4] N = number of data points per signal.
    N = 1e4;

    % Load data, each of M=2 columns contains a different source signal.
    % Each column has N rows (signal values).

    % Load standard matlab sounds (from MatLab's datafun directory)
    % Set variance of each source to unity.
    load one; s1=x(1:N); s1=s1/std(s1);
    load one; s2=x(1:N); s2=s2/std(s2);

    % Combine sources into vector variable s.
    s=[s1,s2];

    % Make new mixing matrix.
    A=randn(M,M);

    % Listen to speech signals ...
    % [10000] Fs Sample rate of speech.
    Fs=10000;
    if listen soundsc(s(:,1),Fs); soundsc(s(:,2),Fs);end;

    % Plot histogram of each source signal -
    % this approximates pdf of each source.
    figure(3);hist(s(:,1),50); drawnow;
    figure(4);hist(s(:,2),50); drawnow;

    % Make M mixures x from M source signals s.
    x = s*A;

    % Listen to signal mixtures signals ...
    if listen soundsc(x(:,1),Fs); soundsc(x(:,2),Fs); end;

    % Initialise unmixing matrix W to identity matrix.
    W = eye(M,M);

    % Initialise y, the estimated source signals.
    y = x*W;

    % Print out initial correlations between
    % each estimated source y and every source signal s.
    r=corrcoef([y s]);
    fprintf('Initial correlations of source and extracted signals\n');
    rinitial=abs(r(M+1:2*M,1:M))

    maxiter=100; % [100] Maximum number of iterations.
    eta=1; % [0.25] Step size for gradient ascent.

    % Make array hs to store values of function and gradient magnitude.
    hs=zeros(maxiter,1);
    gs=zeros(maxiter,1);

    % Begin gradient ascent on h ...
    for iter=1:maxiter
    % Get estimated source signals, y.
    y = x*W; % wt vec in col of W.
    % Get estimated maximum entropy signals Y=cdf(y).
    Y = tanh(y);
    % Find value of function h.
    % h = log(abs(det(W))) + sum( log(eps+1-Y(:).^2) )/N;
    detW = abs(det(W));
    h = ( (1/N)*sum(sum(Y)) + 0.5*log(detW) );
    % Find matrix of gradients @h/@W_ji ...
    g = inv(W') - (2/N)*x'*Y;
    % Update W to increase h ...
    W = W + eta*g;
    % Record h and magnitude of gradient ...
    hs(iter)=h; gs(iter)=norm(g(:));
    end;

    % Plot change in h and gradient magnitude during optimisation.
    figure(3);plot(hs);title('Function values - Entropy');
    xlabel('Iteration');ylabel('h(Y)');
    figure(4);plot(gs);title('Magnitude of Entropy Gradient');
    xlabel('Iteration');ylabel('Gradient Magnitude');

    % Print out final correlations ...
    r=corrcoef([y s]);
    fprintf('FInal correlations between source and extracted signals ...\n');
    rfinal=abs(r(M+1:2*M,1:M))

    % Listen to extracted signals ...
    if listen soundsc(y(:,1),Fs); soundsc(y(:,2),Fs);end;
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%



  9. #9
    Member level 3
    Points: 1,417, Level: 8

    Join Date
    Sep 2007
    Location
    india
    Posts
    54
    Helped
    11 / 11
    Points
    1,417
    Level
    8

    vqlsfspectralindex

    hey payate....
    i am so sorry i have no idea abt the algo u r usin....i can actually i have no clue wat it is. if u can explain a bit to me....i may try to help u....like wat kind of vectors u want n wat is ur algo for the recognition system is....

    regards,
    rakesh



  10. #10
    Newbie level 6
    Points: 965, Level: 7
    payate's Avatar
    Join Date
    Sep 2007
    Posts
    11
    Helped
    0 / 0
    Points
    965
    Level
    7

    matlab program for speech recognition

    hey rakesh..

    actually this matlab code is not for the recognition...this is just to create a spectrogram and find the FFT of the signal..from this, we can find some vector..but i don.t understand with that vector...
    i already try used that vector in NN backpropagation code..but it didn't use...

    if u have any idea about my speech recognition just tell me...or u have any sample or example on that...
    im really need ur help...

    Added after 1 minutes:

    hey rakesh..

    actually this matlab code is not for the recognition...this is just to create a spectrogram and find the FFT of the signal..from this, we can find some vector..but i don.t understand with that vector...
    i already try used that vector in NN backpropagation code..but it didn't use...

    if u have any idea about my speech recognition just tell me...or u have any sample or example on that...
    im really need ur help...



    •   AltAdvertisment

        
       

  11. #11
    Member level 3
    Points: 1,417, Level: 8

    Join Date
    Sep 2007
    Location
    india
    Posts
    54
    Helped
    11 / 11
    Points
    1,417
    Level
    8

    speech recognition code in word format

    hey payate....

    i am sendin u a MATLAB code whose output is a vector quantized output. i dont know whether this is the way ppl do for NN. i have no good idea abt it.

    thecode goes like this....
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %speech recognition
    signal=open('C:\MATLAB7\work\testsound.wav');

    %signal representation (or) signal preprocessing
    t=length(signal.data)./signal.fs;
    s=t*8000;
    for i=1:s
    j=i*signal.fs/8000;
    j=uint16(j);
    x(i)=signal.data(j);
    end

    t1=0;
    k=0;
    while t1 <= (t-0.03)
    t2=t1+0.03;
    s1=t1*8000;
    s2=t2*8000;
    if s1==0
    s1=1;
    end

    for i=1:s2-s1
    exx=uint16(s1+i-1);
    temp(i)=x(exx);
    end
    l=lpc(temp,12);
    k=[k l]
    t1=t1+0.01;
    end

    %vector quantization
    [c,p,dh]=vqsplit(k,128);

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    the function that r to eb used in this are lpc(linear predictive codin is an inbuilt matlab code....and vqsplit(); is a user defined function which i included as an attachment with this post.

    the program that i am doin is something like this...

    the signal is split into parts of 30ms of frames n the linear predictive codes of order 12 for each are taken with gap between each frame as 10ms, i.e, u will have 20ms of overlappin among the corresponding frames. now this give u the predictive coeff. of the signal, with 12 values each representin one frame of the actual signal.
    so, here itself as u an is there is a lot of compression in the data.

    now to further compress it we use vector quantization(VQ). here i used( actually got a code from somebody) k-mean algorithm for the VQ. in this as u give the LPC coeff of all the frame in one vector as an input, it will quantize them into some given no. of values dependin on the centroid value of the i/p values.

    the output here is the vector which is ur desired o/p.

    for knowin abt the signal processin usin statistical signal processin go through "fundamentals of speech recognition" by rabiner. i dont have an e-book of this but i have a paper on this which i am sendin along with this....

    hope this will help u...

    rakesh



  12. #12
    Member level 3
    Points: 1,417, Level: 8

    Join Date
    Sep 2007
    Location
    india
    Posts
    54
    Helped
    11 / 11
    Points
    1,417
    Level
    8

    matlab code for speech recognition using hmm

    sorry here is the vpsplit(); fucntion...

    function [m, p, DistHist]=vqsplit(X,L)
    % Vector Quantization: K-Means Algorithm with Spliting Method for Training
    % NOT TESTED FOR CODEBOOK SIZES OTHER THAN POWERS OF BASE 2, E.G. 256, 512, ETC
    % (Saves output to a mat file (CBTEMP.MAT) after each itteration, so that if
    % it is going too slow you can break it (CTRL+C) without losing your work
    % so far.)
    % [M, P, DH]=VQSPLIT(X,L)
    %
    % or
    % [M_New, P, DH]=VQSPLIT(X,M_Old) In this case M_Old is a codebook and is
    % retrained on data X
    %
    % inputs:
    % X: a matrix each column of which is a data vector
    % L: codebook size (preferably a power of 2 e.g. 16,32 256, 1024) (Never
    % tested for other values!
    %
    % Outputs:
    % M: the codebook as the centroids of the clusters
    % P: Weight of each cluster the number of its vectors divided by total
    % number of vectors
    % DH: The total distortion history, a vector containing the overall
    % distortion of each itteration
    %
    % Method:
    % The mean vector is split to two. the model is trained on those two vectors
    % until the distortion does not vary much, then those are split to two and
    % so on. until the disired number of clusters is reached.
    % Algorithm:
    % 1. Find the Mean
    % 2. Split each centroid to two
    % 3. Assign Each Data to a centroid
    % 4. Find the Centroids
    % 5. Calculate The Total Distance
    % 6. If the Distance has not changed much
    % if the number of Centroids is smaller than L2 Goto Step 2
    % else Goto 7
    % Else (the Distance has changed substantialy) Goto Step 3
    % 7. If the number of Centroids is larger than L
    % Discard the Centroid with (highest distortion OR lowest population)
    % Goto 3
    % 8. Calculate the Variances and Cluster Weights if required
    % 9. End
    %
    % Esfandiar Zavarehei, Brunel University
    % May-2006

    e=.01; % X---> [X-e*X and X+e*X] Percentage for Spliting
    eRed=0.75; % Rate of reduction of split size, e, after each spliting. i.e. e=e*eRed;
    DT=.005; % The threshold in improvement in Distortion before terminating and spliting again
    DTRed=0.75; % Rate of reduction of Improvement Threshold, DT, after each spliting
    MinPop=0.10; % The population of each cluster should be at least 10 percent of its quota (N/LC)
    % Otherwise that codeword is replaced with another codeword


    d=size(X,1); % Dimension
    N=size(X,2); % Number of Data points
    isFirstRound=1; % First Itteration after Spliting

    if numel(L)==1
    M=mean(X,2); % Mean Vector
    CB=[M*(1+e) M*(1-e)]; % Split to two vectors
    else
    CB=L; % If the codebook is passed to the function just train it
    L=size(CB,2);
    e=e*(eRed^fix(log2(L)));
    DT=DT*(DTRed^fix(log2(L)));
    end

    LC=size(CB,2); % Current size of the codebook

    Iter=0;
    Split=0;
    IsThereABestCB=0;
    maxIterInEachSize=20; % The maximum number of training itterations at each
    % codebook size (The codebook size starts from one
    % and increases thereafter)
    EachSizeIterCounter=0;
    while 1
    %Distance Calculation
    [minIndx, dst]=VQIndex(X,CB); % Find the closest codewords to each data vector

    ClusterD=zeros(1,LC);
    Population=zeros(1,LC);
    LowPop=[];
    % Find the Centroids (Mean of each Cluster)
    for i=1:LC
    Ind=find(minIndx==i);
    if length(Ind)<MinPop*N/LC % if a cluster has very low population just remember it
    LowPop=[LowPop i];
    else
    CB(:,i)=mean(X(:,Ind),2);
    Population(i)=length(Ind);
    ClusterD(i)=sum(dst(Ind));
    end
    end
    if ~isempty(LowPop)
    [temp MaxInd]=maxn(Population,length(LowPop));
    CB(:,LowPop)=CB(:,MaxInd)*(1+e); % Replace low-population codewords with splits of high population codewords
    CB(:,MaxInd)=CB(:,MaxInd)*(1-e);

    %re-train
    [minIndx, dst]=VQIndex(X,CB);

    ClusterD=zeros(1,LC);
    Population=zeros(1,LC);

    for i=1:LC
    Ind=find(minIndx==i);
    if ~isempty(Ind)
    CB(:,i)=mean(X(:,Ind),2);
    Population(i)=length(Ind);
    ClusterD(i)=sum(dst(Ind));
    else %if no vector is close enough to this codeword, replace it with a random vector
    CB(:,i)=X(:,fix(rand*N)+1);
    disp('A random vector was assigned as a codeword.')
    isFirstRound=1;% At least another iteration is required
    end
    end
    end
    Iter=Iter+1;
    if isFirstRound % First itteration after a split (dont exit)
    TotalDist=sum(ClusterD(~isnan(ClusterD)));
    DistHist(Iter)=TotalDist;
    PrevTotalDist=TotalDist;
    isFirstRound=0;
    else
    TotalDist=sum(ClusterD(~isnan(ClusterD)));
    DistHist(Iter)=TotalDist;
    PercentageImprovement=((PrevTotalDist-TotalDist)/PrevTotalDist);
    if PercentageImprovement>=DT %Improvement substantial
    PrevTotalDist=TotalDist; %Save Distortion of this iteration and continue training
    isFirstRound=0;
    else%Improvement NOT substantial (Saturation)
    EachSizeIterCounter=0;
    if LC>=L %Enough Codewords?
    if L==LC %Exact number of codewords
    disp(TotalDist)
    break
    else % Kill one codeword at a time
    [temp, Ind]=min(Population); % Eliminate low population codewords
    NCB=zeros(d,LC-1);
    NCB=CB(:,setxor(1:LC,Ind(1)));
    CB=NCB;
    LC=LC-1;
    isFirstRound=1;
    end
    else %If not enough codewords yet, then Split more
    CB=[CB*(1+e) CB*(1-e)];
    e=eRed*e; %Split size reduction
    DT=DT*DTRed; %Improvement Threshold Reduction
    LC=size(CB,2);
    isFirstRound=1;
    Split=Split+1;
    IsThereABestCB=0; % As we just split this codebook, there is no best codebook at this size yet
    disp(LC)
    end
    end
    end
    if ~IsThereABestCB
    BestCB=CB;
    BestD=TotalDist;
    IsThereABestCB=1;
    else % If there is a best CB, check to see if the current one is better than that
    if TotalDist<BestD
    BestCB=CB;
    BestD=TotalDist;
    end
    end
    EachSizeIterCounter=EachSizeIterCounter+1;
    if EachSizeIterCounter>maxIterInEachSize % If too many itterations in this size, stop training this size
    EachSizeIterCounter=0;
    CB=BestCB; % choose the best codebook so far
    IsThereABestCB=0;
    if LC>=L %Enough Codewords?
    if L==LC %Exact number of codewords
    disp(TotalDist)
    break
    else % Kill one codeword at a time
    [temp, Ind]=min(Population);
    NCB=zeros(d,LC-1);
    NCB=CB(:,setxor(1:LC,Ind(1)));
    CB=NCB;
    LC=LC-1;
    isFirstRound=1;
    end
    else %Split
    CB=[CB*(1+e) CB*(1-e)];
    e=eRed*e; %Split size reduction
    DT=DT*DTRed; %Improvement Threshold Reduction
    LC=size(CB,2);
    isFirstRound=1;
    Split=Split+1;
    IsThereABestCB=0;
    disp(LC)
    end
    end
    disp(TotalDist)
    p=Population/N;
    save CBTemp CB p DistHist
    end
    m=CB;

    p=Population/N;

    disp(['Iterations = ' num2str(Iter)])
    disp(['Split = ' num2str(Split)])

    function [v, i]=maxn(x,n)
    % [V, I]=MAXN(X,N)
    % APPLY TO VECTORS ONLY!
    % This function returns the N maximum values of vector X with their indices.
    % V is a vector which has the maximum values, and I is the index matrix,
    % i.e. the indices corresponding to the N maximum values in the vector X

    if nargin<2
    [v, i]=max(x); %Only the first maximum (default n=1)
    else
    n=min(length(x),n);
    [v, i]=sort(x);
    v=v(end:-1:end-n+1);
    i=i(end:-1:end-n+1);
    end

    function [I, dst]=VQIndex(X,CB)
    % Distance function
    % Returns the closest index of vectors in X to codewords in CB
    % In other words:
    % I is a vector. The length of I is equal to the number of columns in X.
    % Each element of I is the index of closest codeword (column) of CB to
    % coresponding column of X

    L=size(CB,2);
    N=size(X,2);
    LNThreshold=64*10000;

    if L*N<LNThreshold
    D=zeros(L,N);
    for i=1:L
    D(i,:)=sum((repmat(CB(:,i),1,N)-X).^2,1);
    end
    [dst I]=min(D);
    else
    I=zeros(1,N);
    dst=I;
    for i=1:N
    D=sum((repmat(X(:,i),1,L)-CB).^2,1);
    [dst(i) I(i)]=min(D);
    end
    end

    function [I, dist]=VQLSFSpectralIndex(X,CB,W)
    % If your codewords are LSF coefficients, You can use this function instead of VQINDEX
    % This is for speech coding
    % I=VQLSFSPECTRALINDEX(X,CB,W)
    % Calculates the nearest set of LSF coefficients in the codebook CB to each
    % column of X by calculating their LP spectral distances.
    % I is the index of the closest codeword, X is the set of LSF coefficients
    % (each column is a set of coefficients) CB is the codebook, W is the
    % weighting vector, if not provided it is assumed to be equal to ones(256,1)
    % Esfandiar Zavarehei
    % 9-Oct-05

    if nargin<3
    L=256;
    W=ones(L,1);
    else
    if isscalar(W)
    L=W;
    W=ones(L,1);
    elseif isvector(W)
    W=W(:);
    L=length(W);
    else
    error('Invalid input argument. W should be either a vector or a scaler!')
    end
    end

    NX=size(X,2);
    NCB=size(CB,2);

    AX=lsf2lpc(X);
    ACB=lsf2lpc(CB);


    D=zeros(NCB,1);

    w=linspace(0,pi,L+1);
    w=w(1:end-1);
    N=size(AX,2)-1;
    WFZ=zeros(N+1,L);
    IMAGUNIT=sqrt(-1);
    for k=0:N
    WFZ(k+1,:)=exp(IMAGUNIT*k*w);
    end

    SCB=zeros(L,NCB);
    for i=1:NCB
    SCB(:,i)=(1./abs(ACB(i,:)*WFZ));
    end

    I=zeros(1,NX);
    dist=zeros(1,NX);
    for j=1:NX
    SX=(1./abs(AX(j,:)*WFZ))';
    for i=1:NCB
    D(i)=sqrt(sum(((SX-SCB(:,i)).^2).*W));
    end
    [dist(j), I(j)]=min(D);
    end



  13. #13
    Newbie level 6
    Points: 965, Level: 7
    payate's Avatar
    Join Date
    Sep 2007
    Posts
    11
    Helped
    0 / 0
    Points
    965
    Level
    7

    speech recognition matlab codes

    dear rakesh...

    from the code..there some error":

    Undefined command/function 'signal'.

    ??? Error: File: F:\MATLAB\work\vpsplit.m Line: 209 Column: 1
    Function definitions are not permitted at the prompt or in scripts.



  14. #14
    Member level 3
    Points: 1,417, Level: 8

    Join Date
    Sep 2007
    Location
    india
    Posts
    54
    Helped
    11 / 11
    Points
    1,417
    Level
    8

    matlab codes for speech recognition

    hey....

    r u suree 'coz Im not gettin any error while run the program. it is showin all fine and good.

    plz kindly check it again....just as the way i gave it to u. if u r usin it in some other program i may not know the error. n i did it in MATLAB 7...



  15. #15
    Newbie level 6
    Points: 965, Level: 7
    payate's Avatar
    Join Date
    Sep 2007
    Posts
    11
    Helped
    0 / 0
    Points
    965
    Level
    7

    extract the lpc coefficients matlab code

    owhh..is that in matlab7..
    currently im still using matlab 6..
    ok..i/ll try to use matlab 7



  16. #16
    yagneshrevar
    Guest

    matlab and speech recognition tutorial

    In rakesh_vnit's SPeech Recognition Code , I got Smiley at some places, I replaced them by ":)". Then also MAtlab is giving error like "The expression to the left is not the valid target for the assignment".[/quote][/GVideo][/youtube]

    Added after 1 minutes:

    In rakesh_vnit's SPeech Recognition Code , I got Smiley at some places, I replaced them by ":) Then also MAtlab is giving error like "The expression to the left is not the valid target for the assignment".

    Added after 2 minutes:

    In rakesh_vnit's SPeech Recognition Code , I got Smiley at some places, I replaced them by ": and ) ". Then also MAtlab is giving error like "The expression to the left is not the valid target for the assignment".



  17. #17
    Member level 3
    Points: 1,417, Level: 8

    Join Date
    Sep 2007
    Location
    india
    Posts
    54
    Helped
    11 / 11
    Points
    1,417
    Level
    8

    speech recoginition code using c

    hey yagneshreva,

    that error comes when the variable u r assigning the final value of the function is not matching in type of the matlab. so, make sure that the variable u r assigning to in your actual program is same as that of the one used in the function.

    regards,

    rakesh



  18. #18
    Newbie level 3
    Points: 894, Level: 6

    Join Date
    Jan 2008
    Posts
    3
    Helped
    0 / 0
    Points
    894
    Level
    6

    using specgram for voice recognition

    Hello!
    i need some help regarding a project. the aim of our project is to implement speech recognition of only 4 words.we our quite confused that which approach would do well. we have used co-relation plus LPC techniques but it was in vain... our success rate is not very high.....
    kindly guide us with some approach to it in addition to a code.....we'll be gratefulll.......waiting badly 4 ur help...
    thanking u in anticipation..........fatima

    Added after 4 minutes:

    i need help with recognition of four words....



  19. #19
    Newbie level 3
    Points: 894, Level: 6

    Join Date
    Jan 2008
    Posts
    3
    Helped
    0 / 0
    Points
    894
    Level
    6

    fundamentals of speech recognition+matlab

    anybody having any idea about this project????? plz help :(



  20. #20
    Newbie level 1
    Points: 950, Level: 6

    Join Date
    Aug 2007
    Posts
    1
    Helped
    0 / 0
    Points
    950
    Level
    6

    speech recognition matlab ebook

    Quote Originally Posted by FATIMA AJMAL
    anybody having any idea about this project????? plz help :(
    Hi Fatima
    u can go in for mfcc technique for feature extraction..........



    •   AltAdvertisment

        
       

--[[ ]]--