Javascript 30 - Gün 20

18 Mayıs 2023

Projenin demosu : Demo

Başlangıç dosyalarını bulabileceğiniz repom: js-30 | github

Bugün tarayıcılarda bulunan SpeechRecognition API ile sesi yazıya çevirme projesi geliştireceğiz.

Çözüm

HTML:

<div class="words" contenteditable>
</div>

Javascript:

<script>
window.SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
 
const recognition = new SpeechRecognition();
recognition.interimResults = true;
// tanıma dilini Türkçe ayarlayalım
recognition.lang = 'tr-TR';
 
let p = document.createElement('p');
const words = document.querySelector('.words');
words.appendChild(p);
 
 
//herhangi bir kelime tanındığında tetiklenecek olay
recognition.addEventListener('result', e => {
  //tanınan konuşma parçalarını birleştirerek tek bir stringe dönüştürür
  const transcript =[...e.results] 
    .map(result => result[0])
    .map(result => result.transcript)
    .join('');
 
  //oluşturulan metindeki 'kalp' kelimelerini kalp emojisiyle değiştirir
    const filteredTranscript = transcript.replaceAll('kalp','❤️');
  // oluşturulan metin paragraf elementine eklenir
    p.textContent = filteredTranscript;
 
  //eğer konuşma tamamnlandıysa paragrafı oluşturup sayfaya ekleyelim
  // konuşmanın tamamlandığını isFinal değeriyle kontrol ediyoruz
    if (e.results[0].isFinal) {
      p = document.createElement('p');
      words.appendChild(p);
    }
});
 
// tanıma işlemi bittiğinde tekrardan dinlemeyi başlatıyoruz
recognition.addEventListener('end', recognition.start);
 
// konuşma işlemini sayfa açıldığında başlatıyoruz
recognition.start();
 
</script>
GitHubBu sayfayı düzenle