API Docs »
Ce projet a été créé, car il est toujours difficile d'obtenir la partie de la synthèse de Web Speech API fonctionnant sur la plupart des navigateurs majeurs.
speechSynthesis sur plusieurs navigateursEasySpeech.debug crochetRemarque: Ce n'est pas un package polyfill, si votre navigateur cible ne prend pas en charge la synthèse de la parole ou l'API de discours Web, ce package n'est pas utilisable.
La démo en direct est disponible sur https://leaonline.github.io/easy-speech/ Vous pouvez l'utiliser pour tester votre navigateur pour le support et les fonctionnalités speechSynthesis .

Table des matières générée avec Doctoc
Installer à partir de NPM via
$ npm install easy-speech Vous pouvez également utiliser les différentes constructions pour différentes cibles, voir le dossier dist :
/dist/EasySpeech.js - ESM/dist/EasySpeech.cjs.js - Commonjs/dist/EasySpeech.es5.js - Node hérité compatible/dist/EasySpeech.iife.js - construction compatible héritée, fonctionne même avec des navigateurs plus anciens ou exotiques, tant qu'ils prennent en charge les promesses (PRS bienvenue pour se transformer en rappels!)/dist/index.d.ts - Définitions de type TypeScriptVous pouvez les utiliser via 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 > Importer EasySpeech et d'abord, détecter, si votre navigateur est capable de TTS (texte à la parole):
import EasySpeech from 'easy-speech'
EasySpeech . detect ( )Il renvoie un objet avec les informations suivantes:
{
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
} Si au moins SpeechSynthesis et SpeechSynthesisUtterance sont définies, vous êtes prêt à partir.
Préparer tout pour fonctionner n'est pas aussi clair qu'il le devrait, en particulier lors du ciblage des fonctionnalités de croisement. La fonction init asynchrone vous aidera dans cette situation:
EasySpeech . init ( { maxTimeout : 5000 , interval : 250 } )
. then ( ( ) => console . debug ( 'load complete' ) )
. catch ( e => console . error ( e ) ) L'init-routine passera par plusieurs étapes pour configurer l'environnement:
onvoiceschanged est disponible: utilisez onvoiceschangedonvoiceschanged n'est pas disponible: se calmer vers le temps mortonvoiceschanged est licencié mais aucune voix disponible: Fallback to Timeoutinterval donné jusqu'à ce qu'un maxTimeout soit atteintSi votre routage d'initiés n'a toujours pas détecté / chargé de voix, tout ce que SpeechSynt est pris en charge, veuillez laisser un problème!
Si des voix sont trouvées, elle placera une voix de secours selon les règles suivantes:
default définie sur True Utilisez ceci comme voix de secoursnavigator.language Remarque: Cette voix de secours n'est pas remplacée par EasySpeech.defaults() , votre voix par défaut sera utilisée en faveur, mais la voix de secours sera toujours là au cas où aucune voix ne sera trouvée lors de l'appel EasySpeech.speak()
C'est aussi simple que possible:
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' )
} ) La promesse se résoudra automatiquement lorsque la parole se termine ou rejette lorsqu'une erreur s'est produite. Vous pouvez également joindre ces écouteurs d'événements si vous aimez ou utilisez EasySpeech.on pour attacher les auditeurs par défaut à chaque fois que vous appelez EasySpeech.speak .
Il existe une propre section FAQ disponible qui vise à aider à des problèmes communs.
Il y a une documentation API complète disponible: les documents API
Chaque contribution est accueillie, veuillez ouvrir des problèmes si quelque chose ne fonctionne pas comme prévu.
Si vous avez l'intention de contribuer au code, veuillez lire les directives sur la contribution.
Ce projet a utilisé plusieurs ressources pour obtenir des informations sur la façon d'obtenir le meilleur discours de croisement en fonctionnement:
MIT, voir le fichier de licence