Я видел, что в Web Speech API есть голоса, использующие голос «Хорошие новости» (и «Плохие новости»). Но я хотел бы знать, как я могу написать свою собственную песню. Кажется, поет те же ноты. Могу я передать ему, какие заметки я бы хотел для каждого слова?
изменить: комментарий ниже указывает, что «Хорошие новости» - это голос Mac. Таким образом, приведенный ниже код может работать только на 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.info(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 есть что-то, что называется подачей. Но после того, как с ним повозились, слово на самом деле не «поет». Вы можете увидеть код здесь. Также я не думаю, что смогу преобразовать частоту в высоту тона, например, средний C составляет 261,6 Гц.
Я также заметил другую библиотеку под названием meSing.js, но голоса звучат слишком роботично: http://usdivad.com/mesing/ Я загрузил mesing.js из github и изменил жестко закодированный голос, который он использует, на другие голоса, которые даны в базовой голосовой библиотеке (meSpeak.js), и даже несмотря на то, что голос меняется, он по-прежнему звучит как робот.
Мне нравится качество звука первых "Хороших новостей", но хотелось бы знать, как сделать свой собственный, возможно ли это?
edit: может быть, я смогу передать «Хорошие новости» всего одним словом. а затем сыграйте это с разными настройками высоты тона. Я бы посмотрел, каков диапазон высот. все еще экспериментирую ..
@datdinhquoc добро пожаловать в 2020, детка!
... Это просто функция macOs (как старая, очень старая). С незапамятных времен вы можете использовать заставь свой Mac петь с терминала, и два упомянутых вами голоса - не единственные поющие голоса, загляните в подпапку Новинка ваших доступных голосов (SystemPrefs> Accessibility> Speech> System Voice> Customize) и попробуйте колокольчики, виолончели или Орган. В общем, этот вопрос не имеет ничего общего с webspeech-api. Если вы хотите сделать свой собственный, просто узнайте, как сделать голос TTS.
На какой вопрос я должен ответить? В моем комментарии указывается, что вопрос мотивирован неправильным представлением и что его не следовало задавать с самого начала. Он не ответит «как заставить js петь» или что-то еще.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


интересно, я не знаю, что в современных браузерах есть функция преобразования текста в речь