C# Speech Kütüphanesi— Yapay Zeka

Sercan Deniz Bayramoğlu
3 min readJun 22, 2021

--

Google ve bir çok sesli arama, sesli komut verme özelliği olan sitelerin veya arama motorlarının bir dünya kadar Gramer Veri Tabanı vardır. Siz Google’da sesli arama özelliğini kullandığınızda arka planda Google dediğinizi alır Gramer ile karşılaştırarak dediğinizi oraya yazar. C# da ise mantık aynı bu şekilde çalışmaktadır fakat Gramer bilgisayarın kendisinden alınmaktadır. Bilgisayarınızda İngilizce dil paketi yüklü ise C# Speech kütüphanesini kullanarak bir çok şeyi yapabilirsiniz.

C# Speech Recognition Mantığı

Söylediğiniz her kelime bir string/text türüne dönüştürülür ve if, switch kullanılarak bilgisayara komut verebilirsiniz.

Mantığını öğrendik şimdi iş kodlamasında, ben bunun için basit bir Form arayüzü tasarladım tabi ki siz daha güzelini tasarlarsınız :)

C# Sesli Asistan — #1

Kullanıcı mikrofona basacak sonrasında programımız onun default yani varsayılan mikrofonundan onu dinleyecek ve dediği komutu bir string/text’e dönüştürecek ve biz içine koyduğumuz belirli komutlarla onun emrini çalıştıracağız.

Örnek Komutlar ne olabilir?

Open Chrome

Shut down the computer // CMD komut gönderme (shutdown -p)

Open YouTube

Translate Text #EN, TR vb.

Çeviri olayını merak edenler için konuyu biraz daha açayım Google Translate web sitesine WebRequest atarsanız programın çeviri yapmasını sağlayabilirsiniz. İleriki zamanlarda belki C# ile bunu yapmayı gösteririm, belki.

Şimdi asistanımızın bizi duyması için Speech kütüphanesini projemize dahil edelim, Başvurular > Başvuru Ekle > Speech daha sonrasında tıkladıktan sonra tamam butonuna basınız.

C# Sesli Asistan — #2

Kütüphaneyi projemize dahil edelim,

using System.Speech.Recognition;

Mikrofon butonunun içine sırasıyla kodlarımı yazıyorum.

Öncelikle yeni bir konuşma motoru oluşturduğumuzu programımıza belirtiyoruz.

SpeechRecognitionEngine spmed = new SpeechRecognitionEngine();

Bundan sonrası Gramer ihtiyacımızı karşılamak olacak bunun için Windows bilgisayarınıza İngilizce dil paketi yükleyip görüntüleme dilini İngilizce yapmanız olacaktır.

Grammar inggr = new DictationGrammar();

Başta bir konuşma motoru oluşturmuştuk işte söylediğimiz kelime burada tutulacağı için grammar (Gramer) ile karşılaştırmamız lazım yada daha doğrusu dediğimiz kelimeyi programın anlaması için Grammar’a yüklememiz lazım.

spmed.LoadGrammar(inggr);

Kullanıcının sesini almak için default (varsayılan) mikrofonu dinlemesini istiyorum.

spmed.SetInputToDefaultAudioDevice();

Şimdi kullanıcının dediği kelimeyi bir Text’e çevirmemiz lazım if veya switch kullanabilmek için.

RecognitionResult kelimetext = spmed.Recognize();

Eğer program kullanıcının ne dediğini anlamadığında hata bilgilendirme mesajı döndürmesini istiyorsanız Try Catch kullanabilirsiniz.

Şimdi kullanıcının dediği komutu karşılaştırmak için bir if bloğu yazıyorum.

if (kelimetext.Text == “Open Chrome”)

{

System.Diagnostics.Process.Start(@”C:\Program Files\Google\Chrome\Application\chrome.exe”);

}

Eğer Program kullanıcının ne dediğini anlamazsa MessageBox ile bilgilendirme yapmasını istedim.

MessageBox.Show(“Hata dediğiniz anlaşılmadı.”, “Hata”, MessageBoxButtons.OK, MessageBoxIcon.Warning);

Program neden Türkçe değilde İngilizce komut alıyor derseniz kütüphanede ingilizce grammar yüklü olmasıdır. Türkçe grammar dosyası bulursanız onlada çalışabilirsiniz.

C# Sesli Asistan — #3

Programımızın yapısı genel olarak bu kadardır fakat Speech kütüphanesi ile isterseniz daha farklı şeyler yapabilirsiniz örneğin yazdığınız bir şeyi programa okutmak gibi… Bundan sonrası kendinize göre programı düzenlemektir ben şimdi kendi isteğime göre bazı özellikler getireceğim programın son halinin resmini aşağıya koyarım.

C# Sesli Asistan — Son

İyi günler dilerim.

--

--

Sercan Deniz Bayramoğlu
0 Followers

17 Yaşında Siber Güvenlik ve Yazılım Geliştirme üzerine çalışan kendi halinde birisi, boş vakitlerimde postlar paylaşacağım. Mail: sercandenizbtr@outlook.com