API Docs »
Este projeto foi criado, porque é sempre uma luta fazer com que a síntese parte da Web Speech API em execução na maioria dos principais navegadores.
speechSynthesis em vários navegadoresEasySpeech.debug HookNOTA: Este não é um pacote de polyfill, se o seu navegador de destino não suportar a síntese de fala ou a API de fala da web, este pacote não é utilizável.
A demonstração ao vivo está disponível em https://leaonline.github.io/easy-seech/ Você pode usá-lo para testar seu navegador quanto ao suporte e funcionalidade speechSynthesis .

Índice gerado com Doctoc
Instale a partir do NPM via
$ npm install easy-speech Você também pode usar as várias compilações para diferentes alvos, consulte a pasta dist :
/dist/EasySpeech.js - Esm/dist/EasySpeech.cjs.js - Commonjs/dist/EasySpeech.es5.js - Nó legado compatível/dist/EasySpeech.iife.js - Construção compatível com o legado, funciona mesmo com navegadores mais antigos ou exóticos, desde que apóie as promessas (PRS bem -vindo a se transformar em retornos de chamada!)/dist/index.d.ts - Definições de tipo de datilografiaçãoVocê pode usá -los 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 > Importar EasySpeech e primeiro, detecte, se o seu navegador for capaz de TTS (texto para fala):
import EasySpeech from 'easy-speech'
EasySpeech . detect ( )Ele retorna um objeto com as seguintes informações:
{
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
} Se, pelo menos, SpeechSynthesis e SpeechSynthesisUtterance são definidos, você está pronto para ir.
Preparar tudo para o trabalho não é tão claro quanto deveria, especialmente ao direcionar a funcionalidade de navegador cruzado. A função init assíncrona ajudará você com esta situação:
EasySpeech . init ( { maxTimeout : 5000 , interval : 250 } )
. then ( ( ) => console . debug ( 'load complete' ) )
. catch ( e => console . error ( e ) ) A init-rotine passará por vários estágios para configurar o ambiente:
onvoiceschanged está disponível: use onvoiceschangedonvoiceschanged não estiver disponível: Fallback to Timeoutonvoiceschanged for demitido, mas não há vozs disponíveis: Fallback to Timeoutinterval até que um maxTimeout seja alcançadoSe o seu roteamento inicial ainda não tiver detectado / carregado nenhuma voz, tudo o que o discurso é suportado, deixe um problema!
Se forem encontradas vozes, ele colocará uma voz de fallback pelas seguintes regras:
default definida como true use isso como voz de fallbacknavigator.language atual Nota: Esta voz de fallback não é substituída por EasySpeech.defaults() , sua voz padrão será usada a favor, mas a voz de fallback sempre estará lá caso nenhuma voz seja encontrada ao chamar EasySpeech.speak()
Isso é o mais fácil possível:
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' )
} ) A promessa resolverá automaticamente quando a fala terminar ou rejeitar quando ocorreu um erro. Além disso, você pode anexar esses ouvintes de eventos, se quiser ou usar EasySpeech.on para anexar os ouvintes padrão a cada vez que você ligar para EasySpeech.speak .
Existe uma seção de perguntas frequentes própria disponível que visa ajudar com problemas comuns.
Existe uma documentação completa da API disponível: DOCs da API
Toda contribuição é bem -vinda, por favor, abra problemas se não estiver funcionando como esperado.
Se você pretende contribuir com código, leia as diretrizes sobre a contribuição.
Este projeto usou vários recursos para obter insights sobre como fazer o melhor discurso de discursos transfronteiros em execução:
MIT, consulte o arquivo de licença