C# Nasıl Türkçe destekli speech recognition yapılır?

Mirza1

Hectopat
Katılım
10 Kasım 2021
Mesajlar
118
Merhaba, ben C#'da Türkçe destekli speech recognition yapmak istiyorum özellikle Türkçe destekli olmasını istiyorum. Çünkü İngilizce yaptım fakat çoğu dediğim şeyi anlamıyor veya yanlış anlıyor. Amacım speech recognition kullanarak bir sesli asistan yapmak kodlarım:

C#:
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 System.Speech.Recognition;
using System.Speech.Synthesis;
using System.Runtime.InteropServices;

namespace Sesli_Asistan
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // DllImport, Windows API fonksiyonlarını C# içinde kullanmamıza izin verir.
        // Kapatma işlemini yapmak için Windows API'yi kullanacağız.
        [DllImport("user32.dll")]
        public static extern bool ExitWindowsEx(uint uFlags, uint dwReason);

        // Kapatma işlemi için kullanılacak sabitler
        private const uint EWX_SHUTDOWN = 0x00000001;
        private const uint EWX_FORCE = 0x00000004;

        SpeechRecognitionEngine reco = new SpeechRecognitionEngine();
        SpeechSynthesizer konus = new SpeechSynthesizer();

        private void Form1_Load(object sender, EventArgs e)
        {
            sesimitanirsa();
        }

        private void mic1_Click(object sender, EventArgs e)
        {
            try
            {
                mic1.Visible = false;
                reco.RecognizeAsync();
            }
            catch
            {

            }
        }

        private void mic2_Click(object sender, EventArgs e)
        {
            mic1.Visible = true;
        }

        void sesimitanirsa()
        {
            string[] komutlar = { "Merhaba", "Nasılsın", "Kurom", "Bilgisayarı Kapat", "Alexa" };
            Choices seçenekler = new Choices(komutlar);
            Grammar grammer = new Grammar(new GrammarBuilder(seçenekler));
            reco.LoadGrammar(grammer);
            reco.SetInputToDefaultAudioDevice();

            reco.SpeechRecognized += sesimitanidi;
        }

        private void sesimitanidi(object sender, SpeechRecognizedEventArgs e)
        {
            mic1.Visible=true;

            if (e.Result.Text == "Alexa")
            {
                konus.SpeakAsync("Efendim");
            }

            if (e.Result.Text == "Alexa Merhaba")
            {
                konus.SpeakAsync("Merhaba");
            }

            if (e.Result.Text == "Nasılsın")
            {
                konus.SpeakAsync("iyiyim sen nasılsın");
            }

            if (e.Result.Text == "Kurom" || e.Result.Text == "Kırom" || e.Result.Text == "Curom" ||
                e.Result.Text == "Kurom aç" || e.Result.Text == "Kıromu aç" || e.Result.Text == "Curomu aç")
            {
                konus.SpeakAsync("Tamamdır");
                Application.DoEvents();
                System.Diagnostics.Process.Start("chrome.exe");
            }

            if (e.Result.Text == "Bilgisayarı Kapat" || e.Result.Text == "Shutdown the pc")
            {
                konus.SpeakAsync("Bye Bye");
                Application.DoEvents();

                // Kapatma işlemi öncesinde kullanıcıya onay mesajı gösterelim
                DialogResult result = MessageBox.Show("Bilgisayarı kapatmak istediğinizden emin misiniz?",
                    "Kapatma Onayı", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (result == DialogResult.Yes)
                {
                    // Bilgisayarı kapatma işlemini gerçekleştir
                    ShutDownComputer();
                }
            }
        }

        private void ShutDownComputer()
        {
            try
            {
                // Bilgisayarı kapatma işlemini gerçekleştiren API fonksiyonunu çağırıyoruz.
                // EWX_FORCE, açık olan uygulamalar olsa bile kapatma işlemini yapacaktır.
                ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Bilgisayar kapatılırken bir hata oluştu: " + ex.Message,
                    "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}
 
Merhaba, ben C#'da Türkçe destekli speech recognition yapmak istiyorum özellikle Türkçe destekli olmasını istiyorum. Çünkü İngilizce yaptım fakat çoğu dediğim şeyi anlamıyor veya yanlış anlıyor. Amacım speech recognition kullanarak bir sesli asistan yapmak kodlarım:

C#:
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 System.Speech.Recognition;
using System.Speech.Synthesis;
using System.Runtime.InteropServices;

namespace Sesli_Asistan
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // DllImport, Windows API fonksiyonlarını C# içinde kullanmamıza izin verir.
        // Kapatma işlemini yapmak için Windows API'yi kullanacağız.
        [DllImport("user32.dll")]
        public static extern bool ExitWindowsEx(uint uFlags, uint dwReason);

        // Kapatma işlemi için kullanılacak sabitler
        private const uint EWX_SHUTDOWN = 0x00000001;
        private const uint EWX_FORCE = 0x00000004;

        SpeechRecognitionEngine reco = new SpeechRecognitionEngine();
        SpeechSynthesizer konus = new SpeechSynthesizer();

        private void Form1_Load(object sender, EventArgs e)
        {
            sesimitanirsa();
        }

        private void mic1_Click(object sender, EventArgs e)
        {
            try
            {
                mic1.Visible = false;
                reco.RecognizeAsync();
            }
            catch
            {

            }
        }

        private void mic2_Click(object sender, EventArgs e)
        {
            mic1.Visible = true;
        }

        void sesimitanirsa()
        {
            string[] komutlar = { "Merhaba", "Nasılsın", "Kurom", "Bilgisayarı Kapat", "Alexa" };
            Choices seçenekler = new Choices(komutlar);
            Grammar grammer = new Grammar(new GrammarBuilder(seçenekler));
            reco.LoadGrammar(grammer);
            reco.SetInputToDefaultAudioDevice();

            reco.SpeechRecognized += sesimitanidi;
        }

        private void sesimitanidi(object sender, SpeechRecognizedEventArgs e)
        {
            mic1.Visible=true;

            if (e.Result.Text == "Alexa")
            {
                konus.SpeakAsync("Efendim");
            }

            if (e.Result.Text == "Alexa Merhaba")
            {
                konus.SpeakAsync("Merhaba");
            }

            if (e.Result.Text == "Nasılsın")
            {
                konus.SpeakAsync("iyiyim sen nasılsın");
            }

            if (e.Result.Text == "Kurom" || e.Result.Text == "Kırom" || e.Result.Text == "Curom" ||
                e.Result.Text == "Kurom aç" || e.Result.Text == "Kıromu aç" || e.Result.Text == "Curomu aç")
            {
                konus.SpeakAsync("Tamamdır");
                Application.DoEvents();
                System.Diagnostics.Process.Start("chrome.exe");
            }

            if (e.Result.Text == "Bilgisayarı Kapat" || e.Result.Text == "Shutdown the pc")
            {
                konus.SpeakAsync("Bye Bye");
                Application.DoEvents();

                // Kapatma işlemi öncesinde kullanıcıya onay mesajı gösterelim
                DialogResult result = MessageBox.Show("Bilgisayarı kapatmak istediğinizden emin misiniz?",
                    "Kapatma Onayı", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (result == DialogResult.Yes)
                {
                    // Bilgisayarı kapatma işlemini gerçekleştir
                    ShutDownComputer();
                }
            }
        }

        private void ShutDownComputer()
        {
            try
            {
                // Bilgisayarı kapatma işlemini gerçekleştiren API fonksiyonunu çağırıyoruz.
                // EWX_FORCE, açık olan uygulamalar olsa bile kapatma işlemini yapacaktır.
                ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Bilgisayar kapatılırken bir hata oluştu: " + ex.Message,
                    "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}
Bu kütüphanenin Türkçe desteği yok. Türkçe destek veren ücretli bir kaç kütüphane vardı ama onlardan birini kullanabilirsin.
 
Bu kütüphanenin Türkçe desteği yok. Türkçe destek veren ücretli birkaç kütüphane vardı ama onlardan birini kullanabilirsin.

Kütüphanelerin isimlerini söyler misin? Ve kütüphane yerine Google'nın bir hizmeti varmış diye duydum oradan web tabanlı olarak işlem yapılıyormuş gakiba bu konuda bir bilgin var mı?
 
Kütüphanelerin isimlerini söyler misin? Ve kütüphane yerine Google'nın bir hizmeti varmış diye duydum oradan web tabanlı olarak işlem yapılıyormuş gakiba bu konuda bir bilgin var mı?
İsimlerini hatırlamıyorum ne yazık ki yıllar önce kullanmıştım. Google'ın servisi (adı Google Speech to Text) belli bir kullanımdan sonra ücretli. Ben projemde Google OCR sistemlerini falan kullanıyorum. Hepsi deneme için biraz kullanım hakkı verip ücretliye dönüyor.
 
İsimlerini hatırlamıyorum ne yazık ki yıllar önce kullanmıştım. Google'ın servisi (adı Google speech to text) belli bir kullanımdan sonra ücretli. Ben projemde Google ocr sistemlerini falan kullanıyorum. Hepsi deneme için biraz kullanım hakkı verip ücretliye dönüyor.

Sesli asistanı C# ile ücretsiz yapmanın bir yolu var mı?
 

Technopat Haberler

Geri
Yukarı