Speech recognition Coding
    6 views (last 30 days)
  
       Show older comments
    
somebody please tell me how do i go about speech recognition coding.
4 Comments
Answers (8)
  Raviteja
      
 on 4 Feb 2011
        First you need fundamentals of speech processing. Witch includes speech signal basic sounds and features. DSP techniques like, FFT, Windowing,STFT.
Some basic signal processing tasks like finding energy, spectrum of speech, autocorrelation, zero crossing detection, silence speech removal techniques etc. Then feature extraction from speech signals.
Feature extraction (LPC,MFCC). Then classification process of feature vectros by VQ.
Then statistical modelling like HMM, GMM.
You need to go following books "Digital processing of speech signals" by Rabinar "Fundamentals of speech recognition" by Rabinar And good books for DSP.
Mostly you read IEEE papers.
0 Comments
  Michelle Hirsch
    
 on 4 Feb 2011
        Is your goal to have speech recognition running in MATLAB, or to actually learn how to implement the algorithm?
If you just want to be able to use speech recognition in MATLAB, and you are running on Windows, you can pretty easily just incorporate the existing Windows capabilities using the MATLAB interface to .NET.
Here's some code my friend Jiro happened to pass around just the other day for this exact task. (Paste into a file in the editor and save).
function rec = speechrecognition
% Add assembly
NET.addAssembly('System.Speech');
% Construct engine
rec = System.Speech.Recognition.SpeechRecognitionEngine;
rec.SetInputToDefaultAudioDevice;
rec.LoadGrammar(System.Speech.Recognition.DictationGrammar);
% Define listener callback
addlistener(rec, 'SpeechRecognized', @recognizedFcn);
% Start recognition
rec.RecognizeAsync(System.Speech.Recognition.RecognizeMode.Multiple);
% Callback
function recognizedFcn(obj, e)
% Get text
txt = char(e.Result.Text);
% Split into words
w = regexp(txt, '\s', 'split');
if length(w) > 1
    % Look for the occurrence of the phrase "search for"
    idx = find(strcmp(w(1:end-1), 'search') & ...
        strcmp(w(2:end), 'for'), 1, 'first');
    if ~isempty(idx) && length(w) >= idx+2
        % The words after are the search terms
        searchTerm = sprintf('%s+', w{idx+2:end});
        searchTerm(end) = '';
          % Search on the web
          web(['http://www.google.com/search?q=', searchTerm]);
          fprintf(2, 'search for "%s"\n', strrep(searchTerm, '+', ' '));
      else
          %disp(txt)
      end
  elseif length(w) == 1 && strcmpi(w{1}, 'stop')
      obj.RecognizeAsyncStop;
      obj.delete;
      %disp(txt);
      disp('Stopping Speech Recognition. Thank you for using!');
  else
      %disp(txt);
  end
3 Comments
  Frandy
 on 15 Apr 2012
				Hello I'm working on a project that involves using speech recognition. Now I tried to use your code but I am not sure on the actual process in which to have the code actually work. Do you mind explain?
  Steven Dakin
 on 10 Jan 2021
				Some operational example code that uses this approach would be vey useful!
  Nada Gamal
 on 20 Apr 2011
        Hi Raviteja , I made all steps of speech recognition except of classification because i used Elcudien Distance and calculate the minium distance to the templates .And i have a problem now in how can i implement Hidden Markove model in speech recognition . i don't understand this algrothim . Thanks a lot :) Best Regards, Nada Gamal
  veni 
 on 24 Aug 2016
        how to write the speech recognisation in matlab coding? how to record the speech in matlab?
1 Comment
  Walter Roberson
      
      
 on 25 Aug 2016
				See audiorecorder() to record the speech. http://www.mathworks.com/help/matlab/ref/audiorecorder.html
  Neha Tonpe
 on 25 Nov 2022
        
      Edited: Walter Roberson
      
      
 on 25 Nov 2022
  
      function rec = speechrecognition
% Add assembly
NET.addAssembly('System.Speech');
% Construct engine
rec = System.Speech.Recognition.SpeechRecognitionEngine;
rec.SetInputToDefaultAudioDevice;
rec.LoadGrammar(System.Speech.Recognition.DictationGrammar);
% Define listener callback
addlistener(rec, 'SpeechRecognized', @recognizedFcn);
% Start recognition
rec.RecognizeAsync(System.Speech.Recognition.RecognizeMode.Multiple);
% Callback
function recognizedFcn(obj, e)
% Get text
txt = char(e.Result.Text);
% Split into words
w = regexp(txt, '\s', 'split');
if length(w) > 1
    % Look for the occurrence of the phrase "search for"
    idx = find(strcmp(w(1:end-1), 'search') & ...
        strcmp(w(2:end), 'for'), 1, 'first');
    if ~isempty(idx) && length(w) >= idx+2
        % The words after are the search terms
        searchTerm = sprintf('%s+', w{idx+2:end});
        searchTerm(end) = '';
        % Search on the web
        web(['http://www.google.com/search?q=', searchTerm]);
        fprintf(2, 'search for "%s"\n', strrep(searchTerm, '+', ' '));
    else
        %disp(txt)
    end
elseif length(w) == 1 && strcmpi(w{1}, 'stop')
    obj.RecognizeAsyncStop;
    obj.delete;
    %disp(txt);
    disp('Stopping Speech Recognition. Thank you for using!');
else
    %disp(txt);
end
0 Comments
  Lavuri
 on 26 Dec 2022
        function rec = speechrecognition
% Add assembly
NET.addAssembly('System.Speech');
% Construct engine
rec = System.Speech.Recognition.SpeechRecognitionEngine;
rec.SetInputToDefaultAudioDevice;
rec.LoadGrammar(System.Speech.Recognition.DictationGrammar);
% Define listener callback
addlistener(rec, 'SpeechRecognized', @recognizedFcn);
% Start recognition
rec.RecognizeAsync(System.Speech.Recognition.RecognizeMode.Multiple);
% Callback
function recognizedFcn(obj, e)
% Get text
txt = char(e.Result.Text);
% Split into words
w = regexp(txt, '\s', 'split');
if length(w) > 1
    % Look for the occurrence of the phrase "search for"
    idx = find(strcmp(w(1:end-1), 'search') & ...
        strcmp(w(2:end), 'for'), 1, 'first');
    if ~isempty(idx) && length(w) >= idx+2
        % The words after are the search terms
        searchTerm = sprintf('%s+', w{idx+2:end});
        searchTerm(end) = '';
        % Search on the web
        web(['http://www.google.com/search?q=', searchTerm]);
        fprintf(2, 'search for "%s"\n', strrep(searchTerm, '+', ' '));
    else
        %disp(txt)
    end
elseif length(w) == 1 && strcmpi(w{1}, 'stop')
    obj.RecognizeAsyncStop;
    obj.delete;
    %disp(txt);
    disp('Stopping Speech Recognition. Thank you for using!');
else
    %disp(txt);
end
0 Comments
  pathakunta
 on 26 Jan 2024
        First you need fundamentals of speech processing. Witch includes speech signal basic sounds and features. DSP techniques like, FFT, Windowing,STFT. Some basic signal processing tasks like finding energy, spectrum of speech, autocorrelation, zero crossing detection, silence speech removal techniques etc. Then feature extraction from speech signals. Feature extraction (LPC,MFCC). Then classification process of feature vectros by VQ. Then statistical modelling like HMM, GMM. You need to go following books "Digital processing of speech signals" by Rabinar "Fundamentals of speech recognition" by Rabinar And good books for DSP. Mostly you read IEEE papers.
0 Comments
  Praveen
 on 8 Oct 2024
        function rec = speechrecognition
% Add assembly
NET.addAssembly('System.Speech');
% Construct engine
rec = System.Speech.Recognition.SpeechRecognitionEngine;
rec.SetInputToDefaultAudioDevice;
rec.LoadGrammar(System.Speech.Recognition.DictationGrammar);
% Define listener callback
addlistener(rec, 'SpeechRecognized', @recognizedFcn);
% Start recognition
rec.RecognizeAsync(System.Speech.Recognition.RecognizeMode.Multiple);
% Callback
function recognizedFcn(obj, e)
% Get text
txt = char(e.Result.Text);
% Split into words
w = regexp(txt, '\s', 'split');
if length(w) > 1
    % Look for the occurrence of the phrase "search for"
    idx = find(strcmp(w(1:end-1), 'search') & ...
        strcmp(w(2:end), 'for'), 1, 'first');
    if ~isempty(idx) && length(w) >= idx+2
        % The words after are the search terms
        searchTerm = sprintf('%s+', w{idx+2:end});
        searchTerm(end) = '';
        % Search on the web
        web(['http://www.google.com/search?q=', searchTerm]);
        fprintf(2, 'search for "%s"\n', strrep(searchTerm, '+', ' '));
    else
        %disp(txt)
    end
elseif length(w) == 1 && strcmpi(w{1}, 'stop')
    obj.RecognizeAsyncStop;
    obj.delete;
    %disp(txt);
    disp('Stopping Speech Recognition. Thank you for using!');
else
    %disp(txt);
end
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!