C# Ses ile Komut Kullanımı

C# Sesli Komut

C# Ses ile Komut Kullanımı

C# İle projelerinizde sesli komut özelliğinden faydalanabilirsiniz.
Daha açıklayıcı olmak gerekir ise C# ile yazı yazmadan ses ile programınızın çalışmasını ve özelliklerini yerine getirmesini sağlayabilirsiniz.

Gelelim bunu nasıl yapacağımıza. Aşağıda yazanları sırası ile yapmanız gerekiyor.

Kütüphaneyi Kullanmak

Menüden "Proje > Başvuru Ekle > FrameWork " yolunu izleyin ve "System.Speech" kütüphanesini projenize ekleyin. Ardından aşağıdaki kodu yazın.

using System.Speech.Recognition;


Nesne Tanımlaması ve Ayarlar

Kullanacağımız nesneleri tanımlayacağız ve form_load gibi olayların olmasını sağlayacağız.

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);
}


Sesin Algılanması

Yazdığımız projede kullanıcının sesinin algılanması ve ses ile işlem yapılması olayı.

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 ve Çözümleri

No recognizer installed ya da tanımlı olmayan dil gibi bir hata alırsanız sisteminizin dili türkçe olmasından ve ingilizce dil paketlerinin yüklü olmamasından kaynaklıdır.
İşletim sisteminizin dilini İngilizce yaparak bu hatalardan kurtulabilirsiniz.