我有一个运行良好的 speech.synthesis 网络应用程序,但我想将一些文本更改为男声,反之亦然。 它在 Chrome 和 Mac 桌面上完美运行但是对于我来说,我无法让它在移动 ios (iPhone 11.3.1) 上运行,包括 iphone 和 ipad。 这是相关的位( react ):
createSpeech(text) {
let speech = new SpeechSynthesisUtterance(text);
let gender = this.state.gender;
speech.volume = 1;
speech.rate = 1;
speech.pitch = 1;
speech.lang = 'en-US';
speech.voice = voices[gender];
speech.voiceURI = voices[gender].voiceURI;
return speech;
}
声音(一名男性和一名女性)被加载到一个名为 voices 的变量中。这是工作。然后在每个句子上运行上面的位。
同样,这在我测试过的 Chrome 和 Mac 桌面上完美运行。然而,在我的 iPhone 上,我总是听到手机本身设置的默认语音。
奇怪的是,我可以切换到英语以外的其他语言,比如意大利语或西类牙语,并获得正确的声音,但英语始终只作为内部设置的默认声音播放。
有人知道为什么会这样吗?这是一个错误吗?我错过了什么吗?除了一套以外,还有人用 iphone 获得不同的英语语音吗?
最佳答案
SpeechSynthesisUtterance
需要浏览器支持才能提供不同的语音。换句话说,浏览器决定合成哪个语音。
所以声音在不同系统和浏览器中有所不同是正常的,因为基本支持也不同。
如果您希望在不同的平台上拥有固定的声音,您更愿意使用在线 API。
这家伙也有一些相关的研究:http://ejb.github.io/2015/06/07/html5-speech-synthesis-api.html
关于javascript - 语音合成无法让手机safari变声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50386487/