Um recurso bastante interessante do Windows 7 é a API de reconhecimento de comandos de voz. Com essa tecnologia podemos facilmente criar aplicativos que executem comandos a partir de palavras pré-definidas.

Como introdução a essa tecnologia iremos criar um aplicativo que interprete dois comandos: “Music” e “Yes”.

Vamos ao código. Nesse tutorial eu tenho um projeto WPF, e como primeiro passo preciso adicionar referência a dll System.Speech.Recognition.

Em seguida devo criar duas variáveis:

SpeechRecognizer speechReco = new SpeechRecognizer();
List<string> grammerList = new List<string>();

Agora, posso inicializar meu sistema de reconhecimento de voz. Dessa forma:

public MainWindow()
{
    InitializeComponent();

    grammerList.AddRange(new string[] { "music", "yes" });

    Choices myChoices = new Choices(grammerList.ToArray());
    GrammarBuilder builder = new GrammarBuilder(myChoices);
    Grammar gram = new Grammar(builder);
    speechReco.LoadGrammar(gram);
    speechReco.Enabled = true;
    speechReco.SpeechRecognized += new EventHandler<speechrecognizedeventargs>(speechReco_SpeechRecognized);
}

No código acima, nós usamos a API de reconhecimento de voz para escutar os comandos “music” e “yes”. E quando um desses comandos for capturado, o nosso método speechReco_SpeechRecognized é executado.

Para que você veja os comandos sendo executados. Utilizem esse código:

void speechReco_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
    if (e.Result.Text == "music")
    {
        ImageBrush imgBrush = new ImageBrush();
        imgBrush.ImageSource = new BitmapImage(new Uri(@"D:\wedding.png"));

        this.Background = imgBrush;
    }

    if (e.Result.Text == "yes")
    {
        ImageBrush imgBrush = new ImageBrush();
        imgBrush.ImageSource = new BitmapImage(new Uri(@"D:\yes-verde.png"));

        this.Background = imgBrush;
    }
}

Como ilustração para o código acima, assista o vídeo: