API Docs »
Este proyecto fue creado, porque siempre es difícil obtener la parte de síntesis de la Web Speech API que se ejecuta en la mayoría de los principales navegadores.
speechSynthesis en múltiples navegadoresEasySpeech.debug ganchoNota: Este no es un paquete de polifill, si su navegador objetivo no admite la síntesis del habla o la API del habla web, este paquete no se puede usar.
La demostración en vivo está disponible en https://leaonline.github.io/easy-speech/ Puede usarlo para probar su navegador para obtener el soporte y la funcionalidad speechSynthesis .

Tabla de contenido generado con DoctoC
Instalar desde NPM a través de
$ npm install easy-speech También puede usar las diversas compilaciones para diferentes objetivos, consulte la carpeta dist :
/dist/EasySpeech.js - ESM/dist/EasySpeech.cjs.js - CommonJS/dist/EasySpeech.es5.js - Compatible de nodo heredado/dist/EasySpeech.iife.js - Build Legacy Compatible, funciona incluso con navegadores mayores o exóticos, siempre y cuando apoyen promesas (¡PRS bienvenidos para transformarse en devoluciones de llamada!)/dist/index.d.ts - Definiciones de tipo TypeScriptPuede usarlos a través de 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 > Importar EasySpeech y primero, detectar, si su navegador es capaz de TTS (texto a discurso):
import EasySpeech from 'easy-speech'
EasySpeech . detect ( )Devuelve un objeto con la siguiente información:
{
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 se definen al menos SpeechSynthesis y el SpeechSynthesisUtterance está listo para comenzar.
Preparar todo para trabajar no es tan claro como debería, especialmente cuando se dirige a la funcionalidad de navegador cruzado. La función inicial asíncrona lo ayudará con esta situación:
EasySpeech . init ( { maxTimeout : 5000 , interval : 250 } )
. then ( ( ) => console . debug ( 'load complete' ) )
. catch ( e => console . error ( e ) ) Init-Routine pasará por varias etapas para configurar el entorno:
onvoiceschanged está disponible: use onvoiceschangedonvoiceschanged no está disponible: Fallback to TimeOutonvoiceschanged se dispara pero no hay voces disponibles: Fallback to TimeOutinterval determinado hasta que se alcanza un maxTimeoutSi su enrutamiento init todavía no ha detectado / cargado ninguna voz, todo el habla es compatible, ¡deje un problema!
Si se encuentran voces, colocará una voz respaldada por las siguientes reglas:
default establecida en verdadero, use esto como Voz Fallbacknavigator.language actual. NOTA: Esta voz alternativa no es anulada por EasySpeech.defaults() , su voz predeterminada se usará a favor, pero la voz alternativa siempre estará allí en caso de que no se encuentre voz al llamar EasySpeech.speak()
Esto es tan fácil como es:
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 promesa se resolverá automáticamente cuando el habla termine o rechaza cuando ocurrió un error. Además, puede adjuntar estos oyentes de eventos si lo desea o usa EasySpeech.on para adjuntar a los oyentes predeterminados cada vez que llame EasySpeech.speak .
Hay una propia sección de preguntas frecuentes disponibles que tiene como objetivo ayudar con problemas comunes.
Hay una documentación completa de API disponible: API Docs
Cada contribución es bienvenida, por favor abre problemas si algo no funciona como se esperaba.
Si tiene la intención de contribuir con código, lea las pautas sobre contribución.
Este proyecto utilizó varios recursos para obtener información sobre cómo obtener la mejor sántesis de Speechsisser en funcionamiento:
MIT, ver archivo de licencia