using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech.Synthesis;
using System.Speech.Recognition;
using System.Diagnostics;
namespace Voice_Bot_v2
{
public partial class Form1 : Form
{
String[] grammarFile = (File.ReadAllLines(@"C:\Voice Bot\grammar.txt"));
String[] responseFile = (File.ReadAllLines(@"C:\Voice Bot\response.txt"));
SpeechSynthesizer speechSynth = new SpeechSynthesizer();
Boolean wake = true;
Choices grammarList = new Choices();
SpeechRecognitionEngine speechRecognition = new SpeechRecognitionEngine();
public Form1()
{
grammarList.Add(grammarFile);
Grammar grammar = new Grammar(new GrammarBuilder(grammarList));
try
{
speechRecognition.RequestRecognizerUpdate();
speechRecognition.LoadGrammar(grammar);
speechRecognition.SpeechRecognized += rec_speechRecognized;
speechRecognition.SetInputToDefaultAudioDevice();
speechRecognition.RecognizeAsync(RecognizeMode.Multiple);
}
catch { return; }
speechSynth.SelectVoiceByHints(VoiceGender.Female);
InitializeComponent();
}
public void say(String text)
{
speechSynth.SpeakAsync(text);
}
private void rec_speechRecognized(object sender, SpeechRecognizedEventArgs e)
{
String result = e.Result.Text;
int resp = Array.IndexOf(grammarFile, result);
if (result.Contains("wake"))
{
wake = true;
say("activated");
}
if (result.Contains("sleep"))
{
wake = false;
say("deactivated");
}
if (result.Contains("hey"))
{
say("I am here");
wake = true;
System.Threading.Thread.Sleep(10000);
wake = false;
}
if (wake == true)
{
if (responseFile[resp].IndexOf('+') == 0)
{
List<string> responses = responseFile[resp].Replace('+', ' ').Split('/').Reverse().ToList();
Random r = new Random();
say(responses[r.Next(responses.Count)]);
}
else
{
if (responseFile[resp].IndexOf('*') == 0)
{
if (result.Contains("date"))
{
say(DateTime.Now.ToString(@"M/d/yyyy"));
}
if (result.Contains("google"))
{
Process.Start("http://google.com");
}
if (result.Contains("youtube"))
{
Process.Start("https://www.youtube.com");
}
if (result.Contains("open grammar"))
{
Process.Start(@"C:\Voice Bot\grammar.txt");
}
if (result.Contains("open responds"))
{
Process.Start(@"C:\Voice Bot\response.txt");
}
if (result.Contains("time"))
{
say(DateTime.Now.ToString(@"hh\:mm ss"));
}
}
else
{
say(responseFile[resp]);
}
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}