• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

Bir ses tanıma sistemi nasıl kurulur?

  • Konuyu Başlatan Konuyu Başlatan Garfield
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 0
  • Etiketler Etiketler
    ses işleme

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
İşlevsel bir ses tanıma sistemi kurmak için önce ses akışını alır, bu sesi tanıma motoruna gönderir, dönen metni temizler ve uygulamanın kullanacağı sonuca dönüştürürsünüz. En küçük çalışan prototip tarayıcıdaki Web Speech API ile kurulabilir; üretim ortamında ise gürültü, mikrofon izinleri, gecikme, hata yönetimi ve kişisel verilerin korunması ayrıca tasarlanmalıdır. Aşağıdaki örnek, mikrofondan konuşmayı alıp ekranda metne dönüştürür.

Ses tanıma sisteminin temel akışı​

Bir ses tanıma sistemi genellikle şu parçaları içerir:
  • Ses kaynağı: Mikrofon, yüklenmiş ses dosyası veya canlı ses akışı.
  • Ön işleme: Gürültü azaltma, ses düzeyini düzenleme ve gerekirse konuşma bölümlerini ayırma.
  • Tanıma motoru: Ses sinyalini yazıya çeviren yerel ya da çevrim içi model.
  • Metin işleme: Noktalama, komut ayıklama, dil bilgisi düzeltme veya anahtar sözcük analizi.
  • Uygulama çıktısı: Metin kutusuna yazma, komut çalıştırma, altyazı üretme veya veritabanına kaydetme.
Ses tanıma, konuşmacının kim olduğunu belirlemekle aynı şey değildir. Buradaki amaç konuşulan içeriği yazıya çevirmektir; konuşmacı tanıma gerekiyorsa ayrıca kimlik doğrulama ve ses biyometrisi tasarımı gerekir.

Kullanılacak yöntemi seçme​

Küçük bir arayüz prototipi için tarayıcı tabanlı yöntem yeterli olabilir. Daha fazla denetim, çevrim dışı çalışma veya özel alan sözcükleri gerekiyorsa bir sunucuya ya da cihaza kurulan tanıma modeli tercih edilir. Sesin üçüncü taraf bir hizmete gönderilmesi, gecikme ve veri işleme koşulları özellikle değerlendirilmelidir.
YöntemUygun olduğu durumDikkat edilmesi gereken
Tarayıcı API'siHızlı arayüz prototipi ve kısa komutlarTarayıcı, işletim sistemi ve ağ davranışı değişebilir
Sunucu tabanlı modelMerkezi işleme, kayıt ve ölçeklemeSes aktarımı, maliyet, gecikme ve veri güvenliği
Cihazda çalışan modelÇevrim dışı kullanım ve daha fazla veri denetimiModel boyutu, işlemci kullanımı ve doğruluk
Bu nedenle ilk aşamada tarayıcı prototipiyle veri akışını doğrulayıp daha sonra doğruluk, gecikme ve gizlilik gereksinimlerine göre motoru değiştirmek pratik bir yaklaşımdır. Prototipin çalışması, seçilen motorun her ortamda aynı doğrulukta çalışacağını kanıtlamaz.

Tarayıcıda çalışan en küçük prototip​

Ön koşul olarak mikrofonu olan bir bilgisayar veya mobil cihaz ve güvenli bir çalışma ortamı gerekir. Mikrofon erişimi, tarayıcı tarafından engellenirse kod doğru olsa bile ses alınamaz. Aşağıdaki örnek varsayımsaldır; tarayıcının ilgili API'yi desteklemesi gerekir.
  1. Bir HTML dosyası oluşturun. Dosyayı ses-tanima.html adıyla kaydedin. Kod, bir başlatma düğmesi, durum alanı ve sonuç metni içerir.
  2. Tanıma nesnesini başlatın. Kod, tarayıcıda bulunan SpeechRecognition veya satıcı ön ekli eşdeğerini arar. Hiçbiri yoksa kullanıcıya bu ortamda özelliğin kullanılamadığı bildirilir.
  3. Dil ayarını belirleyin. Türkçe konuşma için tr-TR kullanılır. Uygulamanız farklı dilleri destekleyecekse bu değeri kullanıcı seçimine bağlayın.
  4. Sonuç olayını işleyin. Tanıma motorundan gelen metin, sonuç alanına yazılır. Geçici sonuçları göstermek istiyorsanız kesinleşmiş ve geçici metni ayrı tutun.
  5. Hata ve bitiş olaylarını yönetin. Mikrofon izni reddedildiğinde, ses alınamadığında veya tanıma sona erdiğinde durum alanını güncelleyin.
  6. Dosyayı güvenli bir ortamda çalıştırın. Tarayıcı mikrofon erişimini engellerse dosyayı uygun bir yerel geliştirme sunucusundan açın; doğrudan dosya açma yöntemi her ortamda aynı davranmayabilir.
En küçük örnek:

HTML:
<!doctype html>
<html lang="tr">
<head>
  <meta charset="utf-8">
  <title>Ses Tanıma Denemesi</title>
</head>
<body>
  <button id="baslat">Konuşmayı başlat</button>
  <p id="durum">Hazır</p>
  <textarea id="metin" rows="8" cols="60"></textarea>

  <script>
    const Recognition = window.SpeechRecognition || window.webkitSpeechRecognition;
    const baslat = document.querySelector("#baslat");
    const durum = document.querySelector("#durum");
    const metin = document.querySelector("#metin");

    if (!Recognition) {
      baslat.disabled = true;
      durum.textContent = "Bu tarayıcıda ses tanıma API'si bulunamadı.";
    } else {
      const tanima = new Recognition();
      tanima.lang = "tr-TR";
      tanima.continuous = false;
      tanima.interimResults = false;

      baslat.addEventListener("click", () => {
        baslat.disabled = true;
        try {
          tanima.start();
          durum.textContent = "Dinleniyor...";
        } catch (hata) {
          baslat.disabled = false;
          durum.textContent = "Tanıma başlatılamadı: " + hata.message;
        }
      });

      tanima.addEventListener("result", (olay) => {
        const sonuc = olay.results[0][0].transcript;
        metin.value = sonuc;
        durum.textContent = "Metin alındı.";
      });

      tanima.addEventListener("error", (olay) => {
        durum.textContent = "Tanıma hatası: " + olay.error;
      });

      tanima.addEventListener("end", () => {
        baslat.disabled = false;
        if (durum.textContent === "Dinleniyor...") {
          durum.textContent = "Tanıma sona erdi; yeni kayıt için düğmeye basın.";
        }
      });
    }
  </script>
</body>
</html>

Örneğin girdisi ve beklenen çıktısı​

Kullanıcı mikrofona varsayımsal olarak “Toplantıyı yarın saat onda başlat” dediğinde, başarılı bir tanıma sonucunda metin alanında buna yakın bir cümle görünür. Bu çıktı yalnızca sesin yazıya çevrildiğini gösterir; sistemin tarihi doğru yorumladığını veya toplantı oluşturduğunu göstermez. Komut çalıştırılacaksa metin ayrıca ayrıştırılmalı, tarih ve saat doğrulanmalı, kullanıcıdan gerekirse onay alınmalıdır.

Tanıma sonucunu uygulama komutuna dönüştürme​

Ses tanıma çıktısını doğrudan kritik bir işlemi çalıştırmak için kullanmayın. Önce beklenen kalıpları sınırlayın ve belirsiz sonuçları reddedin. Örneğin yalnızca “not ekle” komutu desteklenecekse, tanınan metnin bu komutla başlayıp başlamadığını kontrol edebilir, kalan bölümü not içeriği olarak ayırabilirsiniz.

Basit bir JavaScript denetimi şöyle olabilir:

JavaScript:
function komutuAyristir(metin) {
  const temiz = metin.trim().toLocaleLowerCase("tr-TR");
  const baslangic = "not ekle ";

  if (!temiz.startsWith(baslangic)) {
    return { tur: "belirsiz", icerik: null };
  }

  const icerik = metin.trim().slice(baslangic.length).trim();

  if (!icerik) {
    return { tur: "eksik", icerik: null };
  }

  return { tur: "not-ekle", icerik };
}

console.log(komutuAyristir("Not ekle Sunucu yedeklerini kontrol et"));

Bu örnekte beklenen sonuç, tur alanının not-ekle ve icerik alanının “Sunucu yedeklerini kontrol et” olmasıdır. “Not ekle” ile başlamayan bir ifade işlem başlatmaz. Bu sınırlama, yanlış tanınan bir cümlenin doğrudan eyleme dönüşmesini önlemeye yardımcı olur; tek başına güvenlik doğrulaması değildir.

Doğruluk ve hata durumlarını değerlendirme​

Sonuç metni boşsa önce mikrofon iznini, seçili giriş aygıtını ve tarayıcının tanıma desteğini kontrol edin. Metin sürekli yanlışsa konuşma dili, mikrofon uzaklığı, arka plan gürültüsü ve kullanılan modelin alan sözcüklerine uygunluğu incelenmelidir. Noktalama veya özel ad hataları, sesin hiç alınamadığı anlamına gelmez; bunlar metin işleme aşamasında ayrıca düzeltilebilir.

Tanıma motoru bir cümleyi başarıyla döndürdüğünde bu, cümlenin anlamının doğru olduğu, konuşmacının doğrulandığı veya verilen komutun güvenli olduğu anlamına gelmez. Kritik işlemlerde yapılandırılmış doğrulama, yetkilendirme ve kullanıcı onayı ekleyin. Ses üçüncü taraf bir hizmete gönderiliyorsa hangi verinin ne kadar süreyle işlendiğini, aktarımın hangi koşullarda yapıldığını ve kayıt tutulup tutulmadığını kullandığınız hizmetin güncel belgelerine göre belirleyin.

Üretim aşamasına geçerken tanıma motorunu değiştirebilecek şekilde ayrı bir katman tasarlayın: arayüz yalnızca “metin geldi”, “hata oluştu” ve “tanıma bitti” gibi uygulama olaylarını kullansın. Böylece tarayıcı tabanlı prototipten sunucu veya cihaz içi modele geçerken komut işleme kodunu baştan yazmanız gerekmez.
 
Son düzenleme:

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Geri
Üst