API документы »
Этот проект был создан, потому что всегда борьба за то, чтобы получить синтез части Web Speech API работающих в большинстве крупных браузеров.
speechSynthesis в нескольких браузерахEasySpeech.debug крюкПримечание. Это не полифил -пакет, если ваш целевой браузер не поддерживает синтез речи или API веб -речи, этот пакет не используется.
Живая демонстрация доступна по адресу https://leaonline.github.io/easy-speech/ Вы можете использовать его для проверки своего браузера для поддержки и функциональности speechSynthesis .

Содержимое содержимого , генерируемое с помощью doctoc
Установить из NPM через
$ npm install easy-speech Вы также можете использовать различные сборки для разных целей, см. dist Polder:
/dist/EasySpeech.js - esm/dist/EasySpeech.cjs.js - Commonjs/dist/EasySpeech.es5.js - Совместимый с устаревшим узлом/dist/EasySpeech.iife.js - Legacy Compatible Build, работает даже со старыми или экзотическими браузерами, если они поддерживают обещания (PRS, добро пожаловать, чтобы преобразовать обратные вызова!)/dist/index.d.ts - Определения типа типаВы можете использовать их через 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 > Импортируйте EasySpeech и, во -первых, обнаружите, если ваш браузер способен на TTS (текст на речь):
import EasySpeech from 'easy-speech'
EasySpeech . detect ( )он возвращает объект со следующей информацией:
{
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
} Если, по крайней мере SpeechSynthesis и SpeechSynthesisUtterance определяются, вы готовы идти.
Подготовка всего к работе не так ясна, как следовало бы, особенно при нацеливании на функциональность поперечного браузера. Функция асинхронной инициации поможет вам в этой ситуации:
EasySpeech . init ( { maxTimeout : 5000 , interval : 250 } )
. then ( ( ) => console . debug ( 'load complete' ) )
. catch ( e => console . error ( e ) ) Инициативный рутин пройдет через несколько этапов для настройки окружающей среды:
onvoiceschanged доступен: используйте onvoiceschangedonvoiceschanged недоступен: запасной к тайм -аутуonvoiceschanged выпущен, но никаких голосов не доступно: запасной к тайм -аутуinterval , пока не будет достигнут maxTimeoutЕсли ваша маршрутизация инициирования до сих пор не обнаружила / не загружала никаких голосов, All -of Sheckynth поддерживается, пожалуйста, оставьте проблему!
Если обнаружены голоса, это вынесет отступник по следующим правилам:
default , чтобы использовать это в качестве запасного голосаnavigator.language Примечание. Этот запасной голос не переопределен EasySpeech.defaults() , ваш голос по умолчанию будет использоваться в пользу, но запасной голос всегда будет там, если голос не будет найден при вызове EasySpeech.speak()
Это так же просто, как и:
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' )
} ) Обещание будет автоматически разрешаться, когда разговор заканчивается или отклонится, когда произошла ошибка. Вы можете дополнительно прикрепить этих слушателей событий, если хотите или использовать EasySpeech.on для прикрепления слушателей по умолчанию к каждому раз, когда вы называете EasySpeech.speak .
Существует собственный раздел часто задаваемых вопросов, который стремится помочь с общими проблемами.
Доступна полная документация по API: документы API
Каждый вклад приветствуется, пожалуйста, откройте проблемы, если что -то не работает, как ожидалось.
Если вы собираетесь внести код, пожалуйста, прочитайте рекомендации по внесению вклад.
В этом проекте использовались несколько ресурсов, чтобы получить представление о том, как получить лучшие кросс-браузеры Speckyntheess:
MIT, см. Файл лицензии