Озвучування тексту китайською мовою



Поставив я завдання написати озвучку тексту китайською мовою.Справа ця досить проста, якщо вже мати досвід, проте коли починаєш робити це з нуля збереш стільки проблем, що бажання може зникнути набагато раніше.JavaScript дуже функціональна мова, здається в ній є все, що душі завгодно.

Давайте подивимося на кінцевий варіант, який ви зможете вставити в DevTools і перевірити.

var utterance = new SpeechSynthesisUtterance('菜');
var voices = window.speechSynthesis.getVoices();
utterance.voice = voices.filter(function(voice) { return voice.lang == 'zh-CN'; })[0];
window.speechSynthesis.speak(utterance);

zh-CN - так позначається китайська мова в надрах браузера.У нашій програмі ми шукаємо у браузері голос китайської мови, і намагаємось відтворити нашу фразу.Це практично нічим не відрізняється від того, щоб озвучувати будь-яку іншу мову.Але тут є кілька нюансів.Фільтруючи масив доступних мов ми зустрічаємо 2 китайські голоси zh-CN.Нульовий буде жіночий голос, а це перший чоловічий голос.

Жіночий

utterance.voice = voices.filter(function(voice) { return voice.lang == 'zh-CN'; })[0];

Чоловічий

utterance.voice = voices.filter(function(voice) { return voice.lang == 'zh-CN'; })[1];

Крім того, озвучка буде відрізнятися від браузера до браузера і від пристрою до пристрою.У браузера Chrome свої голоси, у браузера Edge зовсім інші, до речі, приємніші, а в браузері Opera голоси взагалі відсутні, тому озвучки не буде.

Цей код можна навішати на кнопку та озвучувати щось своє.

function say(voiceId){
    let text = document.getElementById("pole").innerHTML
    console.log (text)
    var utterance = new SpeechSynthesisUtterance(text);
    var voices = window.speechSynthesis.getVoices();
    utterance.voice = voices.filter(function(voice) { return voice.lang == 'zh-CN'; })[voiceId];
    window.speechSynthesis.speak(utterance);
}

та код кнопки:

<button onclick="say(1)">👨🔉</button>

Інших проблем з озвучкою взагалі немає.Ах так, як це все працює на смартфонах.Так добре, особливо в мобільному Edge браузері.До речі на базі цієї технології я намагаюся зробити мікросервіс для вивчення китайської мови, ось він:

http://jkeks.ru/china .Там все реалізовано як я описав тут.





bg bs ca ceb co cs cy da de el en eo es et fa fi fr fy ga gd gl gu ha haw hi hmn hr ht hu id ig is it iw ja jw ka kk km kn ko ku ky la lb lo lt lv mg mi mk ml mn mr ms mt my ne nl no ny or pa pl ps pt ro ru rw sd si sk sl sm sn so sr st su sv sw ta te tg th tk tl tr tt ug uk ur uz vi xh yi yo zh zu
Text to speech
QR-Code generator
Parsedown cheatsheet. Markdown
Filter data by column with regular expressions
Engines for creating games on LUA ?
JavaScript: draw a point
JavaScript: Speaking text in Chinese