Как я могу заставить петь JavaScript?
Я видел, что в API Web Speech есть несколько поющих голосов, использующих голос "Хорошие новости" (и "Плохие новости"). Но я хотел бы знать, как я могу сделать свою собственную песню. Кажется, поют те же ноты. Могу ли я передать, какие примечания я хотел бы для каждого слова?
редактировать: комментарий ниже указывает на "Хорошие новости" - голос макинтоша. Поэтому приведенный ниже код может работать только на Mac. Я ищу более обобщенное решение для ПК и 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
Я заметил, что в API Web Speech есть то, что называется pitch. Но после того, как возиться с этим, слово на самом деле не "поет". Вы можете увидеть кодовую ручку здесь. Кроме того, я не думаю, что смог бы преобразовать частоту в высоту, как, например, Middle C составляет 261,6 Гц.
Я также заметил другую библиотеку под названием meSing.js, но голоса звучат слишком роботизированно: http://usdivad.com/mesing/ Я загрузил mesing.js из github, и я изменил жестко закодированный голос, который он использует, на другие голоса, которые даны в базовой голосовой библиотеке ( meSpeak.js), и хотя голос меняется, он все равно звучит как робот.
Мне нравится качество звука первых "Хороших новостей", но я хотел бы знать, как сделать индивидуальную, это возможно?
редактировать: может быть, я могу взять "Благую весть" только одним словом. и затем воспроизведите это с различными настройками высоты тона. Я должен был бы видеть, каков диапазон шагов. все еще экспериментирует..