API Docs »
Proyek ini dibuat, karena selalu merupakan perjuangan untuk mendapatkan bagian sintesis dari Web Speech API yang berjalan di sebagian besar browser utama.
speechSynthesis di beberapa browserEasySpeech.debug hookCatatan: Ini bukan paket Polyfill, jika browser target Anda tidak mendukung sintesis ucapan atau API pidato web, paket ini tidak dapat digunakan.
Demo langsung tersedia di https://leaonline.github.io/easy-speech/ Anda dapat menggunakannya untuk menguji browser Anda untuk dukungan dan fungsionalitas speechSynthesis dan fungsionalitas.

Daftar isi yang dihasilkan dengan dokter
Instal dari NPM via
$ npm install easy-speech Anda juga dapat menggunakan berbagai build untuk target yang berbeda, lihat folder dist :
/dist/EasySpeech.js - esm/dist/EasySpeech.cjs.js - Commonjs/dist/EasySpeech.es5.js - Node Legacy kompatibel/dist/EasySpeech.iife.js - Build yang kompatibel warisan, bekerja bahkan dengan browser yang lebih tua atau eksotis, selama mereka mendukung janji -janji (PR dipersilakan untuk mentransformasikan ke callback!)/dist/index.d.ts - Definisi Jenis TypeScriptAnda dapat menggunakannya melalui CDN:
<!-- esm -->
< script type =" module " >
import easySpeech from 'https://cdn.jsdelivr.net/npm/easy-speech/+esm'
</ script > <!-- classic -->
< script src =" https://cdn.jsdelivr.net/npm/easy-speech/dist/EasySpeech.iife.js " > </ script > Impor EasySpeech dan pertama, deteksi, jika browser Anda mampu melakukan TTS (teks untuk berbicara):
import EasySpeech from 'easy-speech'
EasySpeech . detect ( )Ini mengembalikan objek dengan informasi berikut:
{
speechSynthesis : SpeechSynthesis | undefined ,
speechSynthesisUtterance : SpeechSynthesisUtterance | undefined ,
speechSynthesisVoice : SpeechSynthesisVoice | undefined ,
speechSynthesisEvent : SpeechSynthesisEvent | undefined ,
speechSynthesisErrorEvent : SpeechSynthesisErrorEvent | undefined ,
onvoiceschanged : Boolean ,
onboundary : Boolean ,
onend : Boolean ,
onerror : Boolean ,
onmark : Boolean ,
onpause : Boolean ,
onresume : Boolean ,
onstart : Boolean
} Jika setidaknya SpeechSynthesis dan SpeechSynthesisUtterance ditentukan, Anda baik untuk pergi.
Mempersiapkan segalanya untuk bekerja tidak sejelas seharusnya, terutama ketika menargetkan fungsionalitas lintas-browser. Fungsi init asinkron akan membantu Anda dengan situasi ini:
EasySpeech . init ( { maxTimeout : 5000 , interval : 250 } )
. then ( ( ) => console . debug ( 'load complete' ) )
. catch ( e => console . error ( e ) ) Init-routine akan melalui beberapa tahap untuk mengatur lingkungan:
onvoiceschanged tersedia: Gunakan onvoiceschangedonvoiceschanged tidak tersedia: Fallback ke timeoutonvoiceschanged dipecat tetapi tidak ada suara yang tersedia: Fallback ke timeoutinterval tertentu sampai maxTimeout tercapaiJika routing init Anda masih belum terdeteksi / memuat suara apa pun, semua walaupun pidato didukung, silakan tinggalkan masalah!
Jika suara ditemukan itu akan menempatkan suara mundur dengan aturan berikut:
default yang diatur ke true menggunakan ini sebagai suara fallbacknavigator.language saat ini Catatan: Suara fallback ini tidak diganti oleh EasySpeech.defaults() , suara default Anda akan digunakan untuk mendukung tetapi suara fallback akan selalu ada jika tidak ada suara yang ditemukan saat memanggil EasySpeech.speak()
Ini semudah yang didapat:
await EasySpeech . speak ( {
text : 'Hello, world!' ,
voice : myLangVoice , // optional, will use a default or fallback
pitch : 1 ,
rate : 1 ,
volume : 1 ,
// there are more events, see the API for supported events
boundary : e => console . debug ( 'boundary reached' )
} ) Janji akan secara otomatis menyelesaikan ketika berbicara atau menolak ketika kesalahan terjadi. Anda juga dapat melampirkan pendengar acara ini jika Anda suka atau menggunakan EasySpeech.on untuk melampirkan pendengar default setiap kali Anda menghubungi EasySpeech.speak .
Ada bagian FAQ sendiri yang tersedia yang bertujuan untuk membantu dengan masalah umum.
Ada dokumentasi API lengkap yang tersedia: API Docs
Setiap kontribusi disambut, tolong buka masalah jika ada yang tidak berfungsi seperti yang diharapkan.
Jika Anda bermaksud menyumbangkan kode, silakan baca pedoman tentang kontribusi.
Proyek ini menggunakan beberapa sumber daya untuk mendapatkan wawasan tentang cara menjalankan speechsynthesis lintas-browser terbaik:
MIT, lihat file lisensi