Как заставить javascript петь?

Я видел, что в 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 15.10.2018 04:41

@datdinhquoc добро пожаловать в 2020, детка!

Shai UI 15.10.2018 06:41

... Это просто функция macOs (как старая, очень старая). С незапамятных времен вы можете использовать заставь свой Mac петь с терминала, и два упомянутых вами голоса - не единственные поющие голоса, загляните в подпапку Новинка ваших доступных голосов (SystemPrefs> Accessibility> Speech> System Voice> Customize) и попробуйте колокольчики, виолончели или Орган. В общем, этот вопрос не имеет ничего общего с webspeech-api. Если вы хотите сделать свой собственный, просто узнайте, как сделать голос TTS.

Kaiido 15.10.2018 07:22

На какой вопрос я должен ответить? В моем комментарии указывается, что вопрос мотивирован неправильным представлением и что его не следовало задавать с самого начала. Он не ответит «как заставить js петь» или что-то еще.

Kaiido 15.10.2018 08:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
4
518
0

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