Speech recognition Coding

somebody please tell me how do i go about speech recognition coding.

4 commentaires

Sourav Newatia
Sourav Newatia le 21 Sep 2020
Search on google
SUHAS
SUHAS le 11 Nov 2022
Déplacé(e) : DGM le 12 Nov 2022
i need the matlab coding for speech recogniton

Connectez-vous pour commenter.

Réponses (8)

Raviteja
Raviteja le 4 Fév 2011

3 votes

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.
Michelle Hirsch
Michelle Hirsch le 4 Fév 2011

2 votes

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 commentaires

Benjamin Škafar
Benjamin Škafar le 3 Avr 2011
Hello. Do you know on which version of OS and .NET whas this code written? I have this error using Jiro's code:
Error using ==> speechrecognition at 8
Message: Cannot find the requested data item, such as a data key or value.
Source: System.Speech
HelpLink:
Running on windows 7, .NET Framework 4
Thanks for your time.
B.Š.
Frandy
Frandy le 15 Avr 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
Steven Dakin le 10 Jan 2021
Some operational example code that uses this approach would be vey useful!

Connectez-vous pour commenter.

Nada Gamal
Nada Gamal le 20 Avr 2011

0 votes

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
veni le 24 Août 2016

0 votes

how to write the speech recognisation in matlab coding? how to record the speech in matlab?
Neha Tonpe
Neha Tonpe le 25 Nov 2022
Modifié(e) : Walter Roberson le 25 Nov 2022

0 votes

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
Lavuri
Lavuri le 26 Déc 2022

0 votes

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
pathakunta
pathakunta le 26 Jan 2024

0 votes

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.
Praveen
Praveen le 8 Oct 2024

0 votes

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

Community Treasure Hunt

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

Start Hunting!

Translated by