我看到Web语音API中使用“好消息”(和“坏消息”)的声音。但是我想知道如何制作自己的自定义歌曲。似乎在唱同样的笔记。我可以通过它给我每个单词想要的注释吗?
编辑:以下评论指出“好消息”是mac声音。因此,以下代码可能仅在Mac上有效。我正在为PC和Mac寻找更通用的解决方案。
if (!window.speechSynthesis) {
alert("Your browser doesn't support speechSynthesis !!");
}
var voices;
function loadVoices() {
voices = window.speechSynthesis.getVoices();
if (voices.length == 0) alert("cannot get voices !!");
console.log(voices.map(function (x) {return x.name;}));
}
var msg = new SpeechSynthesisUtterance("la-la-la-la-la-la-la-la-la-la-la-la-la-la-la-la-la-la-la-la-la-la-la-la-la-la-la");
function sing(name) {
speechSynthesis.cancel();
loadVoices();
msg.voice = voices[0];
for (var i = 0; i < voices.length; i++)
if (voices[i].name == name) msg.voice = voices[i];
speechSynthesis.speak(msg);
}
setTimeout(function() {
sing('Good News');
},1000); // let browser initialize for a sec
我注意到Web Speech API has something called pitch。但是在弄乱它之后,这个词并没有真正“唱歌”。您可以看到一个codepen here。另外,我不认为我可以将频率转换为音高,例如中音C为261.6 Hz。
我还注意到另一个名为meSing.js的库,但是声音听起来太机械了: http://usdivad.com/mesing/ 我从github下载了mesing.js,并将其使用的硬编码语音更改为基础语音库(meSpeak.js)中提供的其他语音,即使语音发生了变化,它仍然听起来很机器人。
我喜欢第一个“好消息”的音质,但我想知道如何制作自定义音色,这可能吗?
编辑:也许我可以只讲一个字就接受“好消息”。然后以不同的音高设置播放。我必须看一下音高范围。还在实验中。.