API文档»
创建了这个项目,因为在大多数主要浏览器上运行Web Speech API的合成部分总是很难。
speechSynthesis的单个APIEasySpeech.debug钩注意:这不是一个多填充软件包,如果您的目标浏览器不支持语音综合或Web语音API,则此软件包不可用。
实时演示可在https://leaonline.github.io/easy-speech/上获得,您可以使用它来测试浏览器的speechSynthesis支持和功能。

Doctoc生成的目录
从NPM安装
$ npm install easy-speech您也可以将各种构建用于不同目标,请参阅dist文件夹:
/dist/EasySpeech.js -ESM/dist/EasySpeech.cjs.js commonjs/dist/EasySpeech.es5.js兼容遗产节点兼容/dist/EasySpeech.iife.js传统兼容的构建,即使他们支持承诺,也可以与较旧的或异国情调的浏览器一起使用(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 ,首先检测,如果您的浏览器能够使用TT(文本到语音):
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 ) ) Init-Routine将经过几个阶段来设置环境:
onvoiceschanged :使用onvoiceschangedonvoiceschanged :超时的后备onvoiceschanged ,但没有可用的声音:超时的后备interval直到达到maxTimeout如果您的初始路由仍未检测到 /加载任何声音,但支持Speechsynth,请留下问题!
如果发现声音,它将根据以下规则将后备声音放置:
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文档
欢迎每项贡献,如果任何事情都没有预期工作,请打开问题。
如果您打算贡献代码,请阅读有关贡献的准则。
该项目使用了几种资源来获取有关如何运行最佳跨浏览器语音合成的见解:
麻省理工学院,请参阅许可证文件