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);
}
}
}
}