Merhabalar!
Bir önceki konumda farklı bir API 'den bahsetmiştim(bana tıkla bu adresten). Her ne kadar YouTube üzerinde & Google Arama Motoru içerisinde aylardır yapmış olduğum araştırmalar neticesinde hiçbir sonuca varamayan ben bugün bazı düzenlemeler sayesinde artık bir sonuca ulaştım. Speech kütüphanesinin projeye doğru bir biçimde entegre edilmemesi, Ayarlar üzerinde İngilizce kısmının Windows işletim sistemine tanımlanmaması gibi nedenlerle bazı hatalarda beraberinde geliyor ve çok canımı sıkıyordu. Bu can sıkıcı hatalardan kurtulmak için birden fazla yöntem denedim ve başarılı olunca sizinle paylaşmak istedim.
1-) DLL ve FrameWork Ekleme
İlk önce proje üzerinde üst sekmelerden Proje --> Başvuru Ekle --> COM --> Arama kısmına Speech yazdım ve alttakini seçip projeme ekledim.
Daha sonra aynı sekmede Derlemeler --> FrameWork --> Speech ibaresi yazan yeri buldum onu da ekledim.
[ GÖRSEL GÖSTERİM ]
2-) Yüklü Tanıyıcı Ekleme
Burada Windows 10 kullananlar için Dil Paketleri sekmesi var oradan yapıyorsunuz. Maalesef Türkçe için herhangi bir ses algılama bulunmuyor o yüzden İngilizce yapacağım. Başlat tuşundan --> Ayarlar --> Zaman ve Dil --> Dil dedim. Tercih Edilen Diller kısmında '+' ibaresine tıklayarak karşıma gelen ekran üzerinde Eng yazdım & İngilizce Birleşik Krallık olanı bilgisayara entegre ettim. Bu kısımda dikkat etmeniz gereken nokta altında yer alan ikonlarda mikrofon görselinin olması yoksa kodladığımız program algılamıyor & hata veriyor.
[ GÖRSEL GÖSTERİM ]
3-) Konuşma Tanıma Özelliğini Aktifleştirme
Muhtemelen yukarıda yer alan işlemleri yapınca sorununuz çözülür diye düşünüyorum ama ben yine de yaptım. Şöyle ki Denetim Masası --> Programlar --> Programlar ve Özellikler --> Windows Özelliklerini Aç veya Kapat diye bir seçenek var buraya tıklayıp FrameWork ve yazılımla alakalı şeyleri aktifleştirdim. Bu işlemden sonra bilgisayarınız yeniden başlatacaktır.
[ GÖRSEL GÖSTERİM ]
Şimdi gerekli ayarları yaptıktan sonra test edelim bakalım bizim sesi yazıya dökme işlemi olmuş mu?
Gerekli Kütüphanelerimiz
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using SpeechLib;using System.Speech.Recognition;İki adet buton ekleyelim formumuza ve Başlat adlı butonumuzun kodları
C#:
try
{
// SpeechRecognitionEngine örneği oluşturulur
SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();
// Dikte modunu etkinleştir
recognizer.LoadGrammar(new DictationGrammar());
// Ses girişini mikrofon olarak ayarla
recognizer.SetInputToDefaultAudioDevice();
// Tanıma için bir olay dinleyici ekle
recognizer.SpeechRecognized += Recognizer_SpeechRecognized;
Console.WriteLine("Konuşmayı dinliyorum. Çıkmak için Ctrl+C tuşlarına basın.");
// Tanıma işlemini başlat
recognizer.RecognizeAsync(RecognizeMode.Multiple);
// Uygulamanın kapanmasını önlemek için beklet
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine($"Hata: {ex.Message}");
}
Diğer butonumuz ise yukarıdaki işlemleri doğru yapmış isek onun sağlamasını yapmak için. Eğer sizde bir tanımlayıcı varsa bunu konsolda gösterecek. Yerinizde olsam ilk önce bu kodu kullanırdım. Hiç bir şey yazmaz ise sizde henüz tanımlayıcı yok demektir.
C#:
Console.WriteLine("Mevcut konuşma tanıyıcıları:");
foreach (RecognizerInfo recognizer in SpeechRecognitionEngine.InstalledRecognizers())
{
Console.WriteLine($"- {recognizer.Culture.DisplayName} ({recognizer.Culture.Name})");
}
Ve sesimizin yazıya dökülmesi işlemi devam ederek konsolda ne konuştuğunuz aktarılıyor.
C#:
private static void Recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
Console.WriteLine($"Tanımlanan konuşma: {e.Result.Text}");
}
[ TEST EDELİM ]
Okuduğunuz için teşekkür ediyor hayırlı geceler diliyorum...

