Click here to Skip to main content
15,889,116 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I am using .NET 4 and c#
what i want is to pause the recognizing event when synthesis is running.
so that app can give voice output.
and then resume the recognizing so that app listens to the user voice input.
Its a Windows Form app on WIN 8.1

data.txt contains "present"

What I have tried:

using System;
using System.Windows.Forms;
using System.IO;
using System.Speech.Recognition;
using System.Speech.Synthesis;
using System.Threading;
namespace VoiceRecogApp
{
public partial class Form1 : Form
{
public string[] res = File.ReadAllLines("data.txt");
public string str = "roll number ";
public int i = 1;
public SpeechRecognitionEngine recEngine = new SpeechRecognitionEngine();
public SpeechSynthesizer speak = new SpeechSynthesizer();
public bool recogd = false;
public Form1()
{
InitializeComponent();
}
private void btnEnable_Click(object sender, EventArgs e)
{
recEngine.RecognizeAsync(RecognizeMode.Multiple);
btnDisable.Enabled =true;
btnEnable.Enabled = false;
}

private void Form1_Load(object sender, EventArgs e)
{
Choices commands = new Choices();
commands.Add(res);
GrammarBuilder gBuilder = new GrammarBuilder();
gBuilder.Append(commands);
Grammar grammar = new Grammar(gBuilder);
recEngine.LoadGrammarAsync(grammar);
recEngine.SetInputToDefaultAudioDevice();
recEngine.SpeechRecognized += RecEngine_SpeechRecognized;
recEngine.SpeechRecognitionRejected += RecEngine_SpeechRecognitionRejected;
speak.SpeakCompleted += Speak_SpeakCompleted;

}

private void RecEngine_SpeechRecognitionRejected(object sender, SpeechRecognitionRejectedEventArgs e)
{
richText.Text += "\nCan't Recognize";
}

private void RecEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
if(!recogd)
richText.Text += "\n"+Convert.ToString(i)+" is " + e.Result.Text;
recogd = true;
recEngine.RecognizeAsyncCancel();
}

private void btnDisable_Click(object sender, EventArgs e)
{
recEngine.RecognizeAsyncStop();
btnDisable.Enabled = false;
btnEnable.Enabled = true;
}

private void clr_log_Click(object sender, EventArgs e)
{
richText.Text = "-Log-";
}

private void Start_Click(object sender, EventArgs e)
{
i = 1;

speak.Volume = (Int32)100;
speak.Rate = (Int32)1;
speak.SetOutputToDefaultAudioDevice();
while (i<4)
{
btnDisable_Click(sender, e);
speak.Speak(Convert.ToString(i));
i++;
btnEnable_Click(sender, e);
}
}

private void Speak_SpeakCompleted(object sender, SpeakCompletedEventArgs e)
{
speak.SpeakAsyncCancelAll();
recogd = false;
}
}
}
Posted
Comments
Sergey Alexandrovich Kryukov 27-Feb-16 0:40am    
Unfortunately, the microphone of the computer "hears" the synthesized voice, too, so you have to isolate synthesis from generated speech, do one activity at a time. Basically, that's all.
—SA

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900