Laman » Pengekodan » Bagaimana Menambah Ciri Teks-ke-Ucapan di Sebarang Laman Web

    Bagaimana Menambah Ciri Teks-ke-Ucapan di Sebarang Laman Web

    The teks-ke-ucapan ciri merujuk kepada penulisan teks yang dituturkan dipaparkan pada peranti. Pada masa ini, peranti seperti komputer riba, tablet, dan telefon bimbit sudah mempunyai ciri ini. Sebarang aplikasi yang dijalankan pada peranti ini, seperti penyemak imbas web, boleh gunakannya, dan memanjangkan fungsinya. Ciri naratif boleh menjadi bantuan yang sesuai untuk aplikasi itu memaparkan teks yang banyak, kerana ia menawarkan pilihan untuk mendengar kepada pengunjung laman web.

    API Ucapan Web

    The API JavaScript Ucapan Web adalah pintu masuk untuk akses ciri Teks-ke-Ucapan oleh penyemak imbas web. Oleh itu, jika anda ingin memperkenalkan fungsian teks-ke-ucapan pada halaman web yang berat teks, dan membolehkan pembaca anda mendengar kandungan, anda boleh menggunakan API berguna ini, atau, untuk menjadi lebih spesifik, yang UcapanSynthesis antara muka.

    Kod awal & semak sokongan

    Untuk bermula, mari buat halaman web dengan saya sampel teks untuk disampaikan, dan tiga butang.

     

    The Hare With Many Friends

    Lentur sangat popular dengan ...

    Tetapi dia menolak, menyatakan bahawa ...

    Moral cerita ...

    Butang akan menjadi kawalan untuk naratif. Sekarang kita perlu pastikan jika UA menyokong UcapanSynthesis antara muka. Untuk berbuat demikian, kami dengan cepat menyemak dengan JavaScript jika tingkap objek mempunyai 'speechSynthesis' harta, atau tidak.

     onload = function () if ('speechSynthesis' in window) / * synthesis speech supported * / else / * synthesis speech not supported * / 

    Jika speechSynthesis boleh didapati, pertama kami buat rujukan untuk speechSynthesis yang kami berikan kepada synth pembolehubah. Kita juga memulakan bendera dengan salah nilai (kita akan nampak tujuannya di kemudian hari), dan kami membuat rujukan & klik pengendali acara untuk tiga butang (Main, Jeda, Berhenti) juga.

    Apabila pengguna mengklik salah satu butang, fungsi masing-masing (onClickPlay (), onClickPause (), onClickStop ()) akan dipanggil.

     jika ('speechSynthesis' dalam tetingkap) var synth = speechSynthesis; var flag = false; / * rujukan kepada butang * / var playEle = document.querySelector ('# bermain'); var pauseEle = document.querySelector ('# pause'); var stopEle = document.querySelector ('# stop'); / * klik pengendali acara untuk butang * / playEle.addEventListener ('klik', onClickPlay); pauseEle.addEventListener ('klik', onClickPause); stopEle.addEventListener ('klik', onClickStop); fungsi fungsi onClickPlay ()  pada fungsiClickPause ()  padaClickStop ()  

    Buat fungsi tersuai

    Sekarang mari membina fungsi klik dari tiga butang individu yang akan dipanggil oleh pengendali acara.

    1. Main / Sambung semula

    Apabila butang Main diklik, pertama sekali kita semak bendera. Sekiranya ia salah, kami menetapkannya benar, jadi jika pada bila-bila masa butang diklik kemudian, kod di dalamnya pertama jika keadaan tidak akan dilaksanakan (tidak sehingga bendera adalah salah lagi).

    Kemudian kami buat contoh baru UcapanSynthesisUtterance antara muka yang memegang maklumat tentang ucapan, seperti, teks yang akan dibaca, jumlah pertuturan, suara yang diucapkan, kelajuan, padang dan bahasa ucapan. Kami menambah teks artikel sebagai parameter pembina, dan serahkannya kepada ucapan pembolehubah.

     fungsi onClickPlay () if (! flag) flag = true; utterance = SpeechSynthesisUtterance baru (document.querySelector ('artikel'). textContent); utterance.voice = synth.getVoices () [0]; utterance.onend = function () flag = false; ; synth.speak (utterance);  jika (synth.paused) / * unpause / resume narration * / synth.resume ();  

    Kami menggunakannya SpeechSynthesis.getVoices () kaedah untuk Menetapkan suara untuk ucapan dari suara yang terdapat di peranti pengguna. Oleh kerana kaedah ini mengembalikan pelbagai pilihan suara yang ada dalam peranti, kami tetapkan suara peranti pertama yang tersedia dengan menggunakan utterance.voice = synth.getVoices () [0]; pernyataan.

    The di hujung harta mewakili pengendali acara yang ada dilaksanakan apabila ucapan selesai. Di dalamnya, kita menukar nilai dari bendera pembolehubah kembali kepada palsu supaya kod yang memulakan ucapan boleh dilaksanakan apabila butang itu ada diklik semula.

    Kemudian kami panggil SpeechSynthesis.speak () kaedah untuk mulakan ceritera. Kami juga perlu menyemak jika perihalan dijeda, yang mana kita menggunakan bacaan sahaja SpeechSynthesis.paused harta. Sekiranya narasi dijeda, kita perlu meneruskan naratif pada klik butang, yang boleh kita hadapi dengan menggunakan SpeechSynthesis.resume () kaedah.

    2. Jeda

    Sekarang mari kita buat onClickPause () fungsi di mana kita mula-mula semak jika perihalan sedang dijalankan dan tidak dijeda. Kami boleh menguji keadaan ini dengan menggunakan SpeechSynthesis.speaking dan juga SpeechSynthesis.paused hartanah. Sekiranya kedua-dua syarat itu benar, kami onClickPause () fungsi menjeda ucapannya dengan memanggil SpeechSynthesis.pause () kaedah.

     fungsi onClickPause () if (synth.speaking &&! synth.paused) / * pause narration * / synth.pause ();  
    3. Berhenti

    The onClickStop () fungsi adalah dibina sama dengan onClickPause (). Sekiranya ucapan sedang berlangsung, kami berhenti dengan memanggil SpeechSynthesis.cancel () kaedah itu membuang semua ucapan.

     fungsi onClickStop () if (synth.speaking) / * stop narration * / / * for safari * / flag = false; synth.cancel ();  

    Ambil perhatian bahawa pada pembatalan ucapan, di hujung acara dipecat secara automatik, dan kami telah menambah kod penetapan bendera di dalamnya. Walau bagaimanapun, ada bug dalam pelayar Safari yang menghalang acara ini dari menembak, itulah sebabnya kami mengembalikan semula bendera di onClickStop () fungsi. Anda tidak perlu melakukannya jika anda tidak mahu menyokong Safari.

    Sokongan penyemak imbas

    Semua versi terkini pelayar moden mempunyai sokongan penuh atau separa untuk sintesis ucapan API. Pelayar webkit tidak memainkan pertuturan dari pelbagai tab, menjeda adalah kereta (berfungsi tetapi buggy), dan ucapan tidak ditetapkan semula apabila pengguna memuatkan semula halaman dalam peramban Webkit.

    Demo kerja

    Lihat demo langsung di bawah, atau semak kod penuh pada Github.

    Lihat Pena à ??  ° à ... ¸â ??  ?? Ã' £ Teks ke Ucapan - JavaScript oleh HONGKIAT (@hkdc) pada CodePen.