C# ile oluşturduğumuz projelerde mikrofondan alınan sesi yazıya çevirerek, gelen sese göre işlem yaptırabiliriz. Bunun için System.Speech kütüphanesini kullanacağız.

Kütüphaneyi Kullanma
Önce menüden “Project > Add Reference..” yolunu izleyerek System.Speech kütüphanesini projeye dahil edelim. Ardından gerekli isim alanını ekleyelim:

using System.Speech.Recognition;

Nesne Tanımlaması ve Ayarlar
Kullanacağımız nesneyi sınıf seviyesinde tanımlayıp Form_Load olayında gerekli ayarlamaları yapalım.

SpeechRecognitionEngine speechEngine = new SpeechRecognitionEngine();

private void Form1_Load(object sender, System.EventArgs e)
{
// varsayılan ses alıcı aygıtını kullan
speechEngine.SetInputToDefaultAudioDevice();

// algılanacak kelime gurubunu belirle
Choices choises = new Choices("yes", "no");

// tanımladığımız kelimeleri gramer haline getirelim
GrammarBuilder grammarBuilder = new GrammarBuilder(choises);

// yeni bir grammar nesnesi oluştur
Grammar grammar = new Grammar(grammarBuilder);

// oluşturulan grameri speechEngine nesnesine yükle
speechEngine.LoadGrammar(grammar);

// belirlenen kelimelerden biri algılandığında
speechEngine.SpeechRecognized += speechEngine_Event;

// speechEngine nesnesi kelimeleri asenkron ve çoklu olarak algılasın
speechEngine.RecognizeAsync(RecognizeMode.Multiple);
}


Ses Algılandığında
SpeechEngine nesnesi belirlediğimiz kelimelerden birini algıladığında tetiklenecek method:

void speechEngine_Event(object sender, SpeechRecognizedEventArgs e)
{
// algılanan kelimeler içinde
foreach (RecognizedWordUnit words in e.Result.Words)
{
// kelimeye göre işlem
if (words.Text.Equals("yes"))
{
MessageBox.Show("Evet!");
}
else if (words.Text.Equals("no"))
{
MessageBox.Show("Hayır!");
}
else
{
MessageBox.Show("Söylenilen sözcük algılanamadı!");
}
}
}


Hatalar
Eğer No recognizer is installed ya da Yüklü tanıyıcı yok hatası alıyorsanız muhtemelen işletim sisteminin dili Türkçe olduğu içindir. Hatayı engellemek için ya Windows dili İngilizce olmalı ya da dil paketi bilgisayarda kurulu olmalı.

Kaynak: C# | Sesle komut işleme (Speech Recognition)