Merhaba arkadaşlar bugün sizlere birlikte kendi Siri'mizi nasıl yaparız onu öğreneceğiz.
Bugünlerde ses tanıma olayı (recognize) bankalarda ,şirketlerde ,özel servislerde ... sıkça karşımıza çıkmakta.
Konuşmaları tanıyorlar ve programsal olarak kendi otomatik cevap sistemlerini geliştiriyorlar.
Söylediğimiz kelimeler arasında belli bir zaman boşluğu vardır ve konuşurken belli bir kurala göre belli bir düzende konuşuruz. Kelimeyi söylediğimizde kelime içindeki sözcüğün vurgusu ,kelimenin ses dalgasının en yüksek seviyesini yani peak değerini oluşturur. Söylediğimiz tüm kelimeler paket paket ses dalgalarından oluşur ,çünkü kelimeleri oluşturan bütün hecelerin belli bir tonlaması vardır. Konuşmalarımız matematiksel ve elektriksel olarak modellendiğinde 4 evre olduğu söylenir ve bu modellemeye ADSR(attack,decay,sustain,release) ismi veriliyor.
i
Bu ses dalgalarını programsal olarak modellemek çok da zor bir iş değildir . Oluşan ses dalgalarından saniyenin milyonda biri süresince örnek alınır ve bu örnekler dijital değere yani bir sayıya dönüştürülür. Bu şekilde tüm kelimelerin ve sözcüklerin sayısal bir karşılığını çıkararak bilgisayara bunları tanıttığınızda bilgisayar artık istenilen sözcükleri tanır.
Bu işin içine bir de programı kattığımızda artık bir çok işletim sisteminde de olduğu gibi asistanlar
(Siri ,Google Asistan ...vs) yapabilmemiz mümkün oluyor.
Biz de Visual Studionun hazırlamış olduğu speech recognize kütüphanesini kullanarak kendi Siri'mizi yapacağız.
Bunun için projemizin "references" bölümüne system.speech.dll kütüphane dosyasını ekliyoruz:

using System.Speech.Synthesis;
programımıza istenilen kütüphane kodlarını ekliyoruz.
SpeechSynthesizer okuyucu= new SpeechSynthesizer();
bu kodla program içinde okuyucu isminde okuyucu oluşturuyoruz ve son olarak
okuyucu.SpeakAsync("Hello yazilimtoplulugu.com ");
Böylece tırnak içerisindeki yazıyı okutmuş oluyoruz.
Konuşmamızı text e çevirmek için ise şu yolları izliyoruz:
using System.Speech.Recognition;//konuşmayı text e çevirmek için
using System.Threading;
using System.Globalization;
kütüphane kodlarını ekliyoruz.
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");//Kodları ile dil seçmeniz gerekiyor.
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");//Burada United Kingdom ingilizcesi seçili
SpeechRecognitionEngine rg = new SpeechRecognitionEngine(new CultureInfo("en-GB")); // recognizer oluşturuluyor
Choices sList = new Choices(); // Recognize edilecek kelimeler yükleniyor
sList.Add(new String[] { "hello", "how are you", "what is your name", "thank you" }); // recognize edilecek kelimeler
Grammar gr = new Grammar(new GrammarBuilder(sList)); // kelimeler grammer oluşturularak recognizer a tanıtılıyor
GrammarBuilder gb = new GrammarBuilder();
rg.RequestRecognizerUpdate();
rg.LoadGrammar(gr);
rg.SpeechRecognized += rcog_SpeechRecognized;
rg.SetInputToDefaultAudioDevice(); // defoult olarak tanımlanan mikrofon cihazı seçiliyor
rg.RecognizeAsync(RecognizeMode.Multiple); // çoklu kelime algılama özelliği seçiliyor
rg.SpeechRecognitionRejected += rcog_SpeechRecognitionRejected; // Tanımlanan kelimelerin herhangi
// biri algılanırsa aşağıda oluşturulan fonksiyona gitmesi sağlanıyor
button1.BackColor = Color.Red;
}
void rcog_SpeechRecognitionRejected(object sender, SpeechRecognitionRejectedEventArgs e)
{
okuyucu.SpeakAsync("I didn't understand Mr Printer"); // eğer konuşmayı anlayamazsa
}
void rcog_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
if (e.Result.Text.ToString() == "how are you") // eğer konuşmada 'How are you' der isem
{
okuyucu.SpeakAsync("I am fine mr Printer");
Thread.Sleep(10);
okuyucu.SpeakAsync("and you");
Thread.Sleep(10);
}
if (e.Result.Text.ToString() == "what is your name")
{
okuyucu.SpeakAsync("I am cleaning robot mr Printer"); // 'what is your name' dersem
Thread.Sleep(10);
okuyucu.SpeakAsync("My name is Supuro");
Thread.Sleep(10);
okuyucu.SpeakAsync("you made me");
Thread.Sleep(10);
}
if (e.Result.Text.ToString() == "hello") // 'hello' der isem
{
okuyucu.SpeakAsync("hello mr Printer");
Thread.Sleep(10);
okuyucu.SpeakAsync("How are you");
Thread.Sleep(10);
okuyucu.SpeakAsync("ı hope, you are good");
Thread.Sleep(10);
}