Как я могу заставить петь 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), и хотя голос меняется, он все равно звучит как робот.

Мне нравится качество звука первых "Хороших новостей", но я хотел бы знать, как сделать индивидуальную, это возможно?

редактировать: может быть, я могу взять "Благую весть" только одним словом. и затем воспроизведите это с различными настройками высоты тона. Я должен был бы видеть, каков диапазон шагов. все еще экспериментирует..

0 ответов

Другие вопросы по тегам