C# ile .NET içindeki ses tanıma (Speech Recognition) kütüphanesini kullanarak mikrofondan aldığımız komutlara göre işlem yapabilir ya da tanıdığımız kelimeleri kaydedebiliriz.
Bu Yazının İçeriği
Ses tanıma kütüphanesini projenizde kullanmak istiyorsanız Visual Studio içinde üst menüden Project > Add Reference...yolunu izleyin. Ardından açılan pencerede soldaki menüden Assemblies altındaki Framework seçeneğini seçtikten sonra ortadaki listeden System.Speech kütüphanesini seçili hale getirip OK butonuna tıklayın.
using System.Speech.Recognition;
Tabi ki form içinde bu kütüphaneyi kullanacağımızı using ile belirtiyoruz.
Önce sınıf seviyesinde (Form1 içinde) string dizisi oluşturup tanımlanacak kelimeleri önceden belirtiyoruz. Yani Speech Recognition Engine bu kelimelere duyarlı olacak.
Şimdi, belirlediğimiz kelimeleri tanıyacak olan SpeechRecognitionEngine nesnesini oluşturup gerekli ayarları yapacağız. Ben Form1_Load içine yazdım, size de öyle öneririm. Çünkü form dışında herhangi bir yerden erişim gerekmeyecek.
private void Form1_Load(object sender, EventArgs e)
{
// 1. Bölüm
SpeechRecognitionEngine speechRecognitionEngine = new SpeechRecognitionEngine();
speechRecognitionEngine.SetInputToDefaultAudioDevice();
// 2. Bölüm
Choices choices = new Choices();
foreach (string word in this.words)
{
choices.Add(word);
}
// 3. Bölüm
GrammarBuilder grammarBuilder = new GrammarBuilder(choices);
Grammar grammar = new Grammar(grammarBuilder);
// 4. Bölüm
speechRecognitionEngine.LoadGrammar(grammar);
speechRecognitionEngine.SpeechRecognized += this.speechRecognitionEngine_SpeechRecognized;
speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
}
Birinci bölümde gerekli nesneyi oluşturup SetInputToDefaultAudioDevice varsayılan mikrofonu kullanmasını sağladık. Eğer harici mikrofon kullanıyorsanız değiştirmelisiniz.
İkinci bölümde algılanacak kelimeleri tutan Choices nesnesini oluşturup bir döngü yardımıyla üstte belirlediğimiz kelimeleri tek tek seçeneklere –Add methodu ile- ekledik.
Üçüncü bölümde belirlediğimiz kelimelerden bir “gramer yapıcı”, ondan ise bir “gramer” nesnesi oluşturduk.
Dördüncü bölümde oluşturduğumuz gramer nesnesini, ses tanıma nesnesine –LoadGrammar methodu ile- yükledik. Bir ses algılandığında form içindeki speechRecognitionEngine_SpeechRecognized methoduna gidilmesini -ki henüz oluşturmadık- sağladık. Bir de ses algılama yöntemini asenkron/çoklu olarak ayarladık.
Buraya kadar karşılaştığınız tek problem dördüncü bölümün ikinci satırı ise sorun yok demektir. Şimdi oluşturacağımız method ile o hata da kaybolacak.
Yukarıdaki örnekte kelimeleri yazdırmak için iki tane ListBox kullandım. Siz isterseniz başka bir şeyler de yapabilirsiniz. Basitçe aşağıdaki method, algılanan kelimeyi üstte belirlediğimiz kelimeler içinde arar. Eğer varsa listBox1 yoksa listBox2 içine yazdırır.
private void speechRecognitionEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
foreach (RecognizedWordUnit recognizedWord in e.Result.Words)
{
// words dizisi algılanan kelimeyi içeriyor mu?
if (words.Contains(recognizedWord.Text))
{
// Yukarıda belirlenen kelimeler için.
listBox1.Items.Add(recognizedWord.Text);
}
else
{
// Tanınmayan kelimeler için.
listBox2.Items.Add(recognizedWord.Text);
}
}
}
Ayrıca fark ettim ki “merhaba” deyince de “hello” yazdırdı. Bu bir özellik midir yoksa kodda mı bir sorun var anlayamadım. Test edebilirsiniz. :)
Bir sonraki makalemde görüşmek üzere kendinize çok iyi bakın sağlıcakla kalın.
MakerWorld Koleksiyon İndirici MakerWorld üzerinde koleksiyonunuza eklediğiniz modelleri tek tek indirmek zaman alıcı ve zahmetli…
Elektronik Raf Etiketi (ESL) Nedir? Fiyatları, Avantajları ve Mağazalar İçin Dijital Dönüşüm Rehberi Perakende sektörü…
Gigabyte G6 Boot Sorunu Çözümü (KF ve MF 2024) – No OS Will Boot Fix…
Microsoft Office 2016, 2019 ve 2021 KMS Aktivasyonu Nasıl Kaldırılır? [Detaylı Rehber] Office KMS kaldırma,…
Merhaba!Bu yazıda WooCommerce Kategori Menü Eklentisi anlatıyor olacağım. WooCommerce mağazalarında menü yönetimini kolaylaştıran, akıllı hale…
microsoft ace oledb 12.0 hatası,oledb 12.0 provider not registered,microsoft access database engine indir,accessdatabaseengine.exe indir,oledb provider…