Merhaba arkadaşlar Ekrana sırayla A, B ve C harfleri gelmekte ve sesli bir şekilde tekrar edilmesi istenmekte. Harfleri doğru bir şekilde algılatmada sorun yaşıyorum. Mesela A harfini bazen doğru bazen yanlış algılıyor. Mesela aşağıdaki linkte aynı yöntem kullanılmasına rağmen daha doğru bir şekilde algılıyor. https://davidwalsh.name/demo/speech-recognition. php Speech Recording <script></script> <script></script> window. SpeechRecognition = window. webkitSpeechRecognition || window. SpeechRecognition; //speech te söylenen harflerin varyasyonlarını zannediyor bazen. Burada varyasyonlar tanıtılıyor. var letters = [ , , ]; let finalTranscript = ''; let recognition = new window. SpeechRecognition ; //interimResults her kelimeyi tutuyor. Bizde uzun bir konuşma olmadığı için interimresults false recognition. interimResults = false; //maxAlternatives kelime alternatiflerini getiriyor. biz sadece bir tane alternatif istiyoruz. recognition. maxAlternatives = 1; //continious mode devamlı açık tutuyor. Biz sadece bir harf bekledğimiz için onresult fonksiyonunu tetiklesin diye continous mod kapalı ama onend ile arada keslince tekrar start ediyoruz. recognition. continuous = false; recognition. lang = 'tr-TR'; //Burada çıkacak harlerin dizisi var LetterArray = ; //bu değişken setinterval ile dönen döngüde şu andaki harfi tutuyor. var ThisLetter = ''; //bu değişken yukarıdaki harfin morph larını tutuyor. var filteredletter; recognition. onresult = => { //eğer isfinal se yani if (event. results . isFinal) finalTranscript = event. results .transcript; //result değişkeni eğer şu anki harfle söylenen eşleşiyorsa true oluyor. var result= false; console. log ; //şu anki harfin morph ları kontrol ediliyor. Eğer morphlardan herhangi biri eşleşirse result değişkeni true olacak. $(filteredletter . morphs). each(function ); //subdiv e sunucu yazıyor. $ .html(result. toString ; } //i değişkenini harf dizisinin sonuna ulaşıp ulaşmadığımı kontrol etmek için kullanıyorum. var i = 0; //jQuery eğer document hazırsa $ . ready(function { //ses tanımayı başlat recognition. start ; //setinterval ilk başlatıldığında verilen saniye sonra ilk çalışmasının yapıyor. biz hemen çalışmasının istediğimiz için yapacağım işlemleri bir fonksiyon altına tanımlıyorum. function ControlLetters { //şu anki harfi yazıyor. $ .html ; //durumu temisliyor $ .html ; //eğer harf dizinin sonuna gelmişsek intervali sonlandırıyorum. if(i>= LetterArray. length - 1) //şu anki harf değişkenine dizinin şu anki elemanını atıyorum. ThisLetter = LetterArray ; //harfin morphları için en üstteki objeden şu anki harfi filtreliyorum. filteredletter = letters. filter(function ); //dizinin bir sonraki elemanın için i bir artıyor. i++; //continous mode'da olmadığımız için eğer dinleme sonlanırsa ve benim hala intervalim çalışıyorsa dinlemeyi tekrar başlatıyorum. recognition. onend = function } //yukarıdaki fonksiyonu çalıştır. ControlLetters ; //5 sn intervali başlatıyorum. var IntervalForFiveSeconds = new Interval(ControlLetters,5000); IntervalForFiveSeconds. start ; }); //setinterval i oluşturup, devam edip etmediğini ve bitirmek istediğimde bitirmek için gerekli tanımlamaları kolaylaştırmak için fonksiyon. function Interval { var timer = false; //setinterval başlat this. start = function ; //setinterval bitir. this. stop = function ; //çalışıyor mu this. isRunning = function ; }