{"id":9396,"date":"2026-02-18T12:50:08","date_gmt":"2026-02-18T09:50:08","guid":{"rendered":"https:\/\/1.cbm.ua\/?p=9396"},"modified":"2026-02-18T14:01:55","modified_gmt":"2026-02-18T11:01:55","slug":"%d1%81%d0%bf%d0%b8%d1%81%d0%be%d0%ba-%d0%b4%d0%be%d1%81%d1%82%d1%83%d0%bf%d0%bf%d0%bd%d1%8b%d1%85-%d0%b3%d0%be%d0%bb%d0%be%d1%81%d0%be%d0%b2-%d0%b4%d0%bb%d1%8f-%d1%83%d0%ba%d1%80%d0%b0%d0%b8%d0%bd","status":"publish","type":"post","link":"https:\/\/1.cbm.ua\/?p=9396","title":{"rendered":"\u0421\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043f\u043d\u044b\u0445 \u0433\u043e\u043b\u043e\u0441\u043e\u0432 \u0434\u043b\u044f \u0423\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430."},"content":{"rendered":"\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">\u041f\u0440\u043e\u0432\u0435\u0440\u0442\u0435 \u0435\u0441\u0442\u044c \u043b\u0438 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 <strong>\u0423\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u0438\u0439<\/strong> \u0433\u043e\u043b\u043e\u0441. \u041d\u043e \u0442\u0430\u043a \u0438  \u043d\u0435 \u0440\u0430\u0437\u043e\u0431\u0430\u0440\u043b\u0441\u044f \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u0442 \u0441\u043f\u0438\u0441\u043a\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0423\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u0438\u0445 \u0433\u043e\u043b\u043e\u0441\u043e\u043c \u043d\u0430 Windows 11 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 Chrom, \u0445\u043e\u0442\u044f \u043d\u0430 \u041e\u0421 \u0410\u043d\u0434\u0440\u043e\u0438\u0434 \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u044b\u0439 \u0433\u043e\u043b\u043e\u0441.<\/mark><\/p>\n\n\n\n<style>\n.tts-widget { font-family: system-ui, sans-serif; max-width: 700px; padding: 16px; }\n.tts-widget h3 { margin: 0 0 8px; font-size: 1rem; }\n.tts-widget textarea { width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 6px; font-size: 0.95rem; resize: vertical; box-sizing: border-box; }\n.tts-widget .rate-row { display: flex; align-items: center; gap: 8px; font-size: 0.85rem; color: #555; margin: 8px 0 12px; }\n.tts-voice-row { display: flex; align-items: center; gap: 10px; padding: 8px 12px; border-radius: 6px; background: #f7f9fb; border: 1px solid #e0e7ef; margin-bottom: 6px; }\n.tts-voice-name { flex: 1; font-size: 0.88rem; }\n.tts-voice-name b { display: block; }\n.tts-voice-name small { color: #777; }\n.tts-play { border: none; border-radius: 5px; padding: 6px 14px; cursor: pointer; color: #fff; font-size: 0.85rem; }\n.tts-play.uk { background: #0057b7; }\n.tts-play.uk:hover { background: #0046a0; }\n.tts-play.ru { background: #c00; }\n.tts-play.ru:hover { background: #a00; }\n.tts-stop { background: #555; color: #fff; border: none; border-radius: 5px; padding: 6px 12px; cursor: pointer; font-size: 0.85rem; margin-top: 10px; }\n.tts-msg { font-size: 0.8rem; color: #888; margin-top: 8px; }\n.tts-section { margin-bottom: 20px; }\n.tts-section-title { font-weight: 600; font-size: 0.95rem; margin-bottom: 8px; padding-bottom: 4px; border-bottom: 2px solid #e0e7ef; }\n.tts-section-title.uk { border-color: #0057b7; color: #0057b7; }\n.tts-section-title.ru { border-color: #c00; color: #c00; }\n<\/style>\n\n<div class=\"tts-widget\">\n\n  <div class=\"tts-section\">\n    <div class=\"tts-section-title uk\">\ud83c\uddfa\ud83c\udde6 \u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430<\/div>\n    <textarea id=\"tts-text-uk\" rows=\"2\">\u041f\u0440\u0438\u0432\u0456\u0442! \u0426\u0435 \u0442\u0435\u0441\u0442 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u0433\u043e \u0447\u0438\u0442\u0430\u043d\u043d\u044f \u0443\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u043e\u044e.<\/textarea>\n    <div class=\"rate-row\">\n      \u0428\u0432\u0438\u0434\u043a\u0456\u0441\u0442\u044c: <input type=\"range\" id=\"tts-rate-uk\" min=\"0.5\" max=\"2\" step=\"0.1\" value=\"1\">\n      <span id=\"tts-rate-uk-val\">1.0<\/span>\n    <\/div>\n    <div id=\"tts-voices-uk\"><em style=\"color:#999;font-size:0.85rem\">\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f \u0433\u043e\u043b\u043e\u0441\u0456\u0432\u2026<\/em><\/div>\n  <\/div>\n\n  <div class=\"tts-section\">\n    <div class=\"tts-section-title ru\">\ud83c\uddf7\ud83c\uddfa \u0420\u0443\u0441\u0441\u043a\u0438\u0439<\/div>\n    <textarea id=\"tts-text-ru\" rows=\"2\">\u041f\u0440\u0438\u0432\u0435\u0442! \u042d\u0442\u043e \u0442\u0435\u0441\u0442 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c.<\/textarea>\n    <div class=\"rate-row\">\n      \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c: <input type=\"range\" id=\"tts-rate-ru\" min=\"0.5\" max=\"2\" step=\"0.1\" value=\"1\">\n      <span id=\"tts-rate-ru-val\">1.0<\/span>\n    <\/div>\n    <div id=\"tts-voices-ru\"><em style=\"color:#999;font-size:0.85rem\">\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u2026<\/em><\/div>\n  <\/div>\n\n  <button class=\"tts-stop\" onclick=\"speechSynthesis.cancel()\">\u23f9 \u0421\u0442\u043e\u043f<\/button>\n  <div class=\"tts-msg\" id=\"tts-status\">\u0413\u043e\u0442\u043e\u0432\u043e.<\/div>\n<\/div>\n\n<script>\n(function() {\n  var synth = window.speechSynthesis;\n  var _voices = [];\n\n  ['uk','ru'].forEach(function(lang) {\n    var slider = document.getElementById('tts-rate-' + lang);\n    var label  = document.getElementById('tts-rate-' + lang + '-val');\n    slider.addEventListener('input', function() {\n      label.textContent = parseFloat(slider.value).toFixed(1);\n    });\n  });\n\n  function isUk(v) {\n    return v.lang.toLowerCase().startsWith('uk') ||\n           v.name.toLowerCase().includes('ukrain') ||\n           v.name.toLowerCase().includes('ukrainian') ||\n           v.name.toLowerCase().includes('ukr');\n  }\n  function isRu(v) {\n    return v.lang.toLowerCase().startsWith('ru') ||\n           v.name.toLowerCase().includes('russian');\n  }\n\n  function speak(idx, lang) {\n    synth.cancel();\n    var utt = new SpeechSynthesisUtterance(document.getElementById('tts-text-' + lang).value);\n    utt.voice = _voices[idx];\n    utt.rate  = parseFloat(document.getElementById('tts-rate-' + lang).value);\n    utt.onstart = function() { document.getElementById('tts-status').textContent = '\u25b6 ' + _voices[idx].name; };\n    utt.onend   = function() { document.getElementById('tts-status').textContent = '\u2713 \u0413\u043e\u0442\u043e\u0432\u043e'; };\n    utt.onerror = function(e) { document.getElementById('tts-status').textContent = '\u26a0 ' + e.error; };\n    synth.speak(utt);\n  }\n  window._ttsSpeak = speak;\n\n  function renderList(voices, containerId, lang) {\n    var el = document.getElementById(containerId);\n    if (!voices.length) {\n      el.innerHTML = '<em style=\"color:#999;font-size:0.85rem\">\u0413\u043e\u043b\u043e\u0441\u043e\u0432 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e.<\/em>';\n      return;\n    }\n    el.innerHTML = '';\n    voices.forEach(function(v) {\n      var idx = _voices.indexOf(v);\n      var row = document.createElement('div');\n      row.className = 'tts-voice-row';\n      row.innerHTML =\n        '<div class=\"tts-voice-name\">' +\n          '<b>' + v.name + '<\/b>' +\n          '<small>' + v.lang + ' &nbsp;|&nbsp; ' + (v.localService ? '\ud83d\udcbe \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439' : '\ud83c\udf10 \u043e\u043d\u043b\u0430\u0439\u043d') + '<\/small>' +\n        '<\/div>' +\n        '<button class=\"tts-play ' + lang + '\" onclick=\"window._ttsSpeak(' + idx + ',\\'' + lang + '\\')\">\u25b6 \u0421\u043b\u0443\u0448\u0430\u0442\u044c<\/button>';\n      el.appendChild(row);\n    });\n  }\n\n  function loadVoices() {\n    var all = synth.getVoices();\n    if (!all.length) return;\n    _voices = all;\n    renderList(all.filter(isUk), 'tts-voices-uk', 'uk');\n    renderList(all.filter(isRu), 'tts-voices-ru', 'ru');\n    document.getElementById('tts-status').textContent =\n      '\u0413\u043e\u043b\u043e\u0441\u043e\u0432: ' + all.length + ' \u0432\u0441\u0435\u0433\u043e | UK: ' + all.filter(isUk).length + ' | RU: ' + all.filter(isRu).length;\n  }\n\n  synth.onvoiceschanged = loadVoices;\n  setTimeout(loadVoices, 300);\n  setTimeout(loadVoices, 1500);\n})();\n<\/script>\n\n\n\n<script>\n(function() {\n    const synth = window.speechSynthesis;\n    let timer;\n\n    function forceLoad() {\n        let voices = synth.getVoices();\n        \n        if (voices.length === 0) {\n            console.log(\"\u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u043d\u0430\u0439\u0442\u0438 \u0433\u043e\u043b\u043e\u0441\u0430...\");\n            \/\/ \u0412 Windows Chrome \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441, \u0447\u0442\u043e\u0431\u044b \"\u0440\u0430\u0437\u0431\u0443\u0434\u0438\u0442\u044c\" API\n            synth.getVoices(); \n            return;\n        }\n\n        console.log(\"\u0413\u043e\u043b\u043e\u0441\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u044b!\");\n        clearInterval(timer); \/\/ \u041e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u043e\u0438\u0441\u043a, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0448\u043b\u0438\n        updateUI(voices);\n    }\n\n    function updateUI(voices) {\n        const ukList = document.getElementById('list-uk');\n        const ruList = document.getElementById('list-ru');\n        \n        \/\/ \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c (Chrome \u0432 Windows \u0447\u0430\u0441\u0442\u043e \u043f\u0438\u0448\u0435\u0442 uk-UA \u0438\u043b\u0438 ru-RU)\n        const uk = voices.filter(v => v.lang.toLowerCase().includes('uk'));\n        const ru = voices.filter(v => v.lang.toLowerCase().includes('ru'));\n\n        ukList.innerHTML = uk.map(v => `<li>${v.name}<\/li>`).join('') || '<li>\u0413\u043e\u043b\u043e\u0441\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0432 Windows<\/li>';\n        ruList.innerHTML = ru.map(v => `<li>${v.name}<\/li>`).join('') || '<li>\u0413\u043e\u043b\u043e\u0441\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b<\/li>';\n    }\n\n    \/\/ \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 \u043e\u043f\u0440\u043e\u0441 \u043a\u0430\u0436\u0434\u044b\u0435 \u043f\u043e\u043b\u0441\u0435\u043a\u0443\u043d\u0434\u044b\n    timer = setInterval(forceLoad, 500);\n    \n    \/\/ \u0417\u0430\u043f\u0430\u0441\u043d\u043e\u0439 \u0442\u0440\u0438\u0433\u0433\u0435\u0440 \u0434\u043b\u044f Chrome\n    if (synth.onvoiceschanged !== undefined) {\n        synth.onvoiceschanged = forceLoad;\n    }\n})();\n<\/script>\n\n\n\n<div id=\"wp-voice-tester\" style=\"background: #fff; padding: 15px; border: 2px solid #0073aa; border-radius: 10px;\">\n    <p id=\"status-info\" style=\"font-weight:bold; color: #555;\">\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0433\u043e\u043b\u043e\u0441\u043e\u0432&#8230;<\/p>\n    \n    <div style=\"margin-top:10px;\">\n        <label><strong>\u0423\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u0438\u0439:<\/strong><\/label>\n        <select id=\"select-uk\" style=\"width:100%; margin: 5px 0; padding: 5px;\"><\/select>\n        <button onclick=\"playTest('uk')\" style=\"width:100%; padding:10px; background:#0085ba; color:#fff; border:none; border-radius:5px; cursor:pointer;\">\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c UA<\/button>\n    <\/div>\n\n    <div style=\"margin-top:20px;\">\n        <label><strong>\u0420\u0443\u0441\u0441\u043a\u0438\u0439:<\/strong><\/label>\n        <select id=\"select-ru\" style=\"width:100%; margin: 5px 0; padding: 5px;\"><\/select>\n        <button onclick=\"playTest('ru')\" style=\"width:100%; padding:10px; background:#d63638; color:#fff; border:none; border-radius:5px; cursor:pointer;\">\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c RU<\/button>\n    <\/div>\n<\/div>\n\n<script>\n(function() {\n    const synth = window.speechSynthesis;\n    \n    function fillSelects() {\n        const voices = synth.getVoices();\n        const ukSelect = document.getElementById('select-uk');\n        const ruSelect = document.getElementById('select-ru');\n        const status = document.getElementById('status-info');\n\n        if (voices.length === 0) return;\n\n        status.innerText = \"\u0413\u043e\u043b\u043e\u0441\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b (\u0412\u0441\u0435\u0433\u043e: \" + voices.length + \")\";\n        ukSelect.innerHTML = '';\n        ruSelect.innerHTML = '';\n\n        voices.forEach(v => {\n            const opt = document.createElement('option');\n            opt.value = v.name;\n            opt.innerText = v.name + (v.localService ? ' (System)' : ' (Google\/Cloud)');\n            \n            \/\/ \u0411\u043e\u043b\u0435\u0435 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u043a\u043e\u0434\u0430\u043c \u044f\u0437\u044b\u043a\u043e\u0432\n            const lang = v.lang.toLowerCase();\n            if (lang.includes('uk') || lang.includes('ua')) {\n                ukSelect.appendChild(opt);\n            } else if (lang.includes('ru')) {\n                ruSelect.appendChild(opt);\n            }\n        });\n\n        if (ukSelect.options.length === 0) {\n            ukSelect.innerHTML = '<option>\u0413\u043e\u043b\u043e\u0441\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0432 Windows\/Chrome<\/option>';\n        }\n        if (ruSelect.options.length === 0) {\n            ruSelect.innerHTML = '<option>\u0413\u043e\u043b\u043e\u0441\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b<\/option>';\n        }\n    }\n\n    window.playTest = function(lang) {\n        const select = document.getElementById('select-' + lang);\n        const selectedName = select.value;\n        const voices = synth.getVoices();\n        const voice = voices.find(v => v.name === selectedName);\n        \n        if (voice) {\n            const text = lang === 'uk' ? \"\u041f\u0440\u0438\u0432\u0456\u0442! \u042f\u043a\u0449\u043e \u0432\u0438 \u043c\u0435\u043d\u0435 \u0447\u0443\u0454\u0442\u0435, \u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0446\u0435\u0439 \u0433\u043e\u043b\u043e\u0441 \u043f\u0440\u0430\u0446\u044e\u0454.\" : \"\u041f\u0440\u0438\u0432\u0435\u0442! \u0415\u0441\u043b\u0438 \u0432\u044b \u043c\u0435\u043d\u044f \u0441\u043b\u044b\u0448\u0438\u0442\u0435, \u0437\u043d\u0430\u0447\u0438\u0442 \u044d\u0442\u043e\u0442 \u0433\u043e\u043b\u043e\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.\";\n            const ut = new SpeechSynthesisUtterance(text);\n            ut.voice = voice;\n            synth.speak(ut);\n        }\n    };\n\n    \/\/ \u0421\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u044c \u0434\u043b\u044f Chrome\n    if (synth.onvoiceschanged !== undefined) {\n        synth.onvoiceschanged = fillSelects;\n    }\n    \/\/ \u0417\u0430\u043f\u0443\u0441\u043a\n    fillSelects();\n    \/\/ \u041f\u043e\u0432\u0442\u043e\u0440 \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 (\u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f Windows!)\n    setTimeout(fillSelects, 1000);\n})();\n<\/script>\n\n\n\n<p><\/p>\n\n\n\n<div id=\"wp-voice-tester\" style=\"background: #f9f9f9; padding: 20px; border-radius: 10px; border: 1px solid #ddd;\">\n    <h4 style=\"margin-top:0;\">\u041d\u0430\u0439\u0434\u0435\u043d\u043e \u0433\u043e\u043b\u043e\u0441\u043e\u0432: <span id=\"voice-count\">0<\/span><\/h4>\n    \n    <div style=\"margin-bottom: 15px;\">\n        <strong style=\"color: #0073aa;\">\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430 (UK):<\/strong>\n        <ul id=\"list-uk\" style=\"list-style: none; padding: 0;\"><\/ul>\n    <\/div>\n\n    <div>\n        <strong style=\"color: #d63638;\">\u0420\u0443\u0441\u0441\u043a\u0438\u0439 (RU):<\/strong>\n        <ul id=\"list-ru\" style=\"list-style: none; padding: 0;\"><\/ul>\n    <\/div>\n\n    <button onclick=\"refreshVoices()\" style=\"margin-top:10px; cursor:pointer;\">\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a<\/button>\n<\/div>\n\n<script>\n(function() {\n    const synth = window.speechSynthesis;\n    \n    function populateVoices() {\n        \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0412\u0421\u0415 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0433\u043e\u043b\u043e\u0441\u0430\n        let voices = synth.getVoices();\n        \n        \/\/ \u0415\u0441\u043b\u0438 \u043f\u0443\u0441\u0442\u043e (\u0431\u0430\u0433 Chrome), \u0436\u0434\u0435\u043c \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0438 \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043d\u043e\u0432\u0430\n        if (voices.length === 0) {\n            console.log(\"\u0413\u043e\u043b\u043e\u0441\u0430 \u0435\u0449\u0435 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b...\");\n            return;\n        }\n\n        document.getElementById('voice-count').innerText = voices.length;\n\n        const render = (langKey, elementId, testMsg) => {\n            const list = document.getElementById(elementId);\n            list.innerHTML = '';\n            \n            \/\/ \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u043f\u043e \u043a\u043e\u0434\u0443 \u044f\u0437\u044b\u043a\u0430 (uk \u0438\u043b\u0438 ru)\n            const filtered = voices.filter(v => v.lang.toLowerCase().startsWith(langKey));\n\n            if (filtered.length === 0) {\n                list.innerHTML = '<li style=\"color:gray; font-size:12px;\">\u0413\u043e\u043b\u043e\u0441\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435<\/li>';\n                return;\n            }\n\n            filtered.forEach(voice => {\n                const li = document.createElement('li');\n                li.style.cssText = \"display:flex; justify-content:space-between; align-items:center; margin-bottom:5px; background:white; padding:5px 10px; border-radius:4px; border:1px solid #eee; font-size:13px;\";\n                \n                \/\/ \u041f\u043e\u043c\u0435\u0442\u043a\u0430, \u0435\u0441\u043b\u0438 \u0433\u043e\u043b\u043e\u0441 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 (Google) \u0438\u043b\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 (Windows)\n                const type = voice.localService ? \" [PC]\" : \" [Cloud]\";\n                li.innerHTML = `<span>${voice.name}${type}<\/span>`;\n                \n                const btn = document.createElement('button');\n                btn.innerText = \"\u25b6\";\n                btn.style.cursor = \"pointer\";\n                btn.onclick = () => {\n                    const ut = new SpeechSynthesisUtterance(testMsg);\n                    ut.voice = voice;\n                    ut.lang = voice.lang;\n                    synth.speak(ut);\n                };\n                \n                li.appendChild(btn);\n                list.appendChild(li);\n            });\n        };\n\n        render('uk', 'list-uk', '\u041f\u0440\u0438\u0432\u0456\u0442! \u042f \u0440\u043e\u0437\u043c\u043e\u0432\u043b\u044f\u044e \u0443\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u043e\u044e.');\n        render('ru', 'list-ru', '\u041f\u0440\u0438\u0432\u0435\u0442! \u042f \u0433\u043e\u0432\u043e\u0440\u044e \u043f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438.');\n    }\n\n    \/\/ Chrome \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f\n    if (speechSynthesis.onvoiceschanged !== undefined) {\n        speechSynthesis.onvoiceschanged = populateVoices;\n    }\n\n    \/\/ \u0420\u0443\u0447\u043d\u043e\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435\n    window.onload = populateVoices;\n    \/\/ \u041f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0447\u0435\u0440\u0435\u0437 1 \u0441\u0435\u043a (\u0441\u0442\u0440\u0430\u0445\u043e\u0432\u043a\u0430 \u0434\u043b\u044f Chrome \u043d\u0430 Windows)\n    setTimeout(populateVoices, 1000);\n\n    window.refreshVoices = populateVoices;\n})();\n<\/script>\n\n\n\n<div id=\"voice-app-container\">\n    <style>\n        #voice-app-container { font-family: sans-serif; max-width: 600px; margin: 20px auto; padding: 20px; background: #fff; border: 1px solid #ddd; border-radius: 8px; }\n        .lang-group { margin-top: 25px; }\n        .lang-header { border-left: 4px solid #0073aa; padding-left: 10px; margin-bottom: 10px; font-weight: bold; }\n        .voice-item { display: flex; justify-content: space-between; align-items: center; padding: 8px; border-bottom: 1px solid #eee; font-size: 14px; }\n        .voice-item:last-child { border-bottom: none; }\n        .play-btn { background: #0073aa; color: white; border: none; border-radius: 4px; padding: 5px 12px; cursor: pointer; font-size: 12px; }\n        .play-btn:hover { background: #005177; }\n        .status-msg { color: #666; font-style: italic; font-size: 13px; }\n    <\/style>\n\n    <h3>\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0433\u043e\u043b\u043e\u0441\u0430 (Speech API)<\/h3>\n    <div id=\"status\" class=\"status-msg\">\u041f\u043e\u0438\u0441\u043a \u0433\u043e\u043b\u043e\u0441\u043e\u0432 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435&#8230;<\/div>\n\n    <div class=\"lang-group\">\n        <div class=\"lang-header\">\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430 (UK)<\/div>\n        <div id=\"list-uk\"><\/div>\n    <\/div>\n\n    <div class=\"lang-group\">\n        <div class=\"lang-header\">\u0420\u0443\u0441\u0441\u043a\u0438\u0439 (RU)<\/div>\n        <div id=\"list-ru\"><\/div>\n    <\/div>\n\n    <script>\n    (function() {\n        const synth = window.speechSynthesis;\n        let attempts = 0;\n\n        function getAndRender() {\n            const voices = synth.getVoices();\n            \n            \/\/ \u0415\u0441\u043b\u0438 \u0433\u043e\u043b\u043e\u0441\u0430 \u0435\u0449\u0435 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438\u0441\u044c, \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0435\u0449\u0435 \u0440\u0430\u0437 (\u043c\u0430\u043a\u0441 10 \u0440\u0430\u0437)\n            if (voices.length === 0 && attempts < 10) {\n                attempts++;\n                setTimeout(getAndRender, 250);\n                return;\n            }\n\n            document.getElementById('status').innerText = `\u041d\u0430\u0439\u0434\u0435\u043d\u043e \u0432\u0441\u0435\u0433\u043e \u0433\u043e\u043b\u043e\u0441\u043e\u0432: ${voices.length}`;\n\n            const render = (langCode, containerId, testText) => {\n                const container = document.getElementById(containerId);\n                const filtered = voices.filter(v => v.lang.toLowerCase().includes(langCode));\n                \n                if (filtered.length === 0) {\n                    container.innerHTML = '<div class=\"voice-item\">\u0413\u043e\u043b\u043e\u0441\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b<\/div>';\n                    return;\n                }\n\n                container.innerHTML = '';\n                filtered.forEach(voice => {\n                    const div = document.createElement('div');\n                    div.className = 'voice-item';\n                    div.innerHTML = `<span>${voice.name}<\/span>`;\n                    \n                    const btn = document.createElement('button');\n                    btn.className = 'play-btn';\n                    btn.innerText = 'Play';\n                    btn.onclick = () => {\n                        const ut = new SpeechSynthesisUtterance(testText);\n                        ut.voice = voice;\n                        ut.lang = voice.lang; \/\/ \u042f\u0432\u043d\u043e \u0437\u0430\u0434\u0430\u0435\u043c \u044f\u0437\u044b\u043a \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438\n                        synth.speak(ut);\n                    };\n                    \n                    div.appendChild(btn);\n                    container.appendChild(div);\n                });\n            };\n\n            render('uk', 'list-uk', '\u041f\u0440\u0438\u0432\u0456\u0442, \u0446\u0435 \u0442\u0435\u0441\u0442 \u0443\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u043e\u0433\u043e \u0433\u043e\u043b\u043e\u0441\u0443.');\n            render('ru', 'list-ru', '\u041f\u0440\u0438\u0432\u0435\u0442, \u044d\u0442\u043e \u0442\u0435\u0441\u0442 \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u0433\u043e\u043b\u043e\u0441\u0430.');\n        }\n\n        \/\/ \u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u043b\u044f WordPress \u0438 Chrome:\n        if (typeof speechSynthesis !== 'undefined' && speechSynthesis.onvoiceschanged !== undefined) {\n            speechSynthesis.onvoiceschanged = getAndRender;\n        }\n        getAndRender();\n    })();\n    <\/script>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e \u0433\u043e\u043b\u043e\u0441\u0430 (\u043d\u0435 \u043e\u0447\u0435\u043d\u044c), \u043d\u043e \u0432 Chrom \u043d\u0430 \u0410\u043d\u0434\u0440\u043e\u0438\u0434 \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u044b\u0439 \u0423\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u043b\u043e\u0441.<\/p>\n\n\n\n<figure class=\"wp-block-audio\"><audio controls src=\"https:\/\/fjngqp1mvftjzxfzrdiggafze9wxueam.cdn-freehost.com.ua\/wp-content\/uploads\/2026\/02\/demo_uk_\u0433\u043e\u043b\u043e\u0441_\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439.mp3\"><\/audio><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>URL \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a<\/summary>\n<p><a href=\"https:\/\/gemini.google.com\/app\/7edc463c421cfdc4\">https:\/\/gemini.google.com\/app\/7edc463c421cfdc4<\/a><\/p>\n<\/details>\n\n\n\n<p><\/p>\n\n\n\n<p>\u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0443\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u043b\u043e\u0441 \u0434\u043b\u044f windows \u0438\u043b\u0438 android ?<\/p>\n\n\n\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0443\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0433\u043e\u043b\u043e\u0441\u0430 \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0440\u0435\u0447\u0438 (TTS) \u2014 \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0438\u0434\u0435\u044f, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0447\u0442\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u0436\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b.<\/p>\n\n\n\n<p>\u0412\u043e\u0442 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043e\u0431\u0435\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c:<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcbb Windows (10 \u0438 11)<\/h2>\n\n\n\n<p>\u0412 Windows \u0443\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u043b\u043e\u0441 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u043c.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/strong> \u041d\u0430\u0436\u043c\u0438\u0442\u0435 <code>Win + I<\/code>.<\/li>\n\n\n\n<li><strong>\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u044f\u0437\u044b\u043a:<\/strong> \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b <strong>\u0412\u0440\u0435\u043c\u044f \u0438 \u044f\u0437\u044b\u043a<\/strong> \u2192 <strong>\u042f\u0437\u044b\u043a \u0438 \u0440\u0435\u0433\u0438\u043e\u043d<\/strong>. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 <strong>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044f\u0437\u044b\u043a<\/strong>.<\/li>\n\n\n\n<li><strong>\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0423\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u0438\u0439:<\/strong> \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u00ab\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430\u00bb \u0432 \u043f\u043e\u0438\u0441\u043a\u0435. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0440\u044f\u0434\u043e\u043c \u0441 \u044f\u0437\u044b\u043a\u043e\u043c \u0435\u0441\u0442\u044c \u0438\u043a\u043e\u043d\u043a\u0430 \u00ab\u0421\u0438\u043d\u0442\u0435\u0437 \u0440\u0435\u0447\u0438\u00bb (\u043f\u043e\u0445\u043e\u0436\u0430 \u043d\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043e\u0431\u043b\u0430\u0447\u043a\u043e). \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u00ab\u0414\u0430\u043b\u0435\u0435\u00bb \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0430\u043a\u0435\u0442.<\/li>\n\n\n\n<li><strong>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0433\u043e\u043b\u043e\u0441:<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u0412\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u0432 <strong>\u0412\u0440\u0435\u043c\u044f \u0438 \u044f\u0437\u044b\u043a<\/strong> \u2192 <strong>\u0420\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0447\u0438<\/strong>.<\/li>\n\n\n\n<li>\u0412 \u043f\u0443\u043d\u043a\u0442\u0435 <strong>\u0413\u043e\u043b\u043e\u0441\u0430<\/strong> (\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0433\u043e\u043b\u043e\u0441) \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u00abMicrosoft Ostap\u00bb \u0438\u043b\u0438 \u00abMicrosoft Lesya\u00bb.<\/li>\n\n\n\n<li>\u0422\u0430\u043c \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u044f.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>\u0421\u043e\u0432\u0435\u0442:<\/strong> \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c <strong>Microsoft Edge<\/strong>, \u0442\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u00ab\u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439\u00bb \u0443\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u0438\u0439 \u043e\u043d\u043b\u0430\u0439\u043d-\u0433\u043e\u043b\u043e\u0441 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u00ab\u041f\u0440\u043e\u0447\u0435\u0441\u0442\u044c \u0432\u0441\u043b\u0443\u0445\u00bb.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcf1 Android<\/h2>\n\n\n\n<p>\u041d\u0430 Android \u0432\u0441\u0451 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0440\u0435\u0447\u0438 \u0432\u044b\u0431\u0440\u0430\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e Google).<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>\u0417\u0430\u0439\u0434\u0438\u0442\u0435 \u0432 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438:<\/strong> \u041d\u0430\u0439\u0434\u0438\u0442\u0435 \u0440\u0430\u0437\u0434\u0435\u043b <strong>\u0421\u043f\u0435\u0446. \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438<\/strong> \u0438\u043b\u0438 <strong>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/strong> \u2192 <strong>\u042f\u0437\u044b\u043a \u0438 \u0432\u0432\u043e\u0434<\/strong>.<\/li>\n\n\n\n<li><strong>\u0421\u0438\u043d\u0442\u0435\u0437 \u0440\u0435\u0447\u0438:<\/strong> \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0443\u043d\u043a\u0442 <strong>\u0421\u0438\u043d\u0442\u0435\u0437 \u0440\u0435\u0447\u0438<\/strong> (\u0438\u043b\u0438 \u00ab\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0440\u0435\u0447\u044c\u00bb).<\/li>\n\n\n\n<li><strong>\u0414\u0432\u0438\u0436\u043e\u043a Google:<\/strong> \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u0438\u043a\u043e\u043d\u043a\u0443 \u0448\u0435\u0441\u0442\u0435\u0440\u0435\u043d\u043a\u0438 \u0440\u044f\u0434\u043e\u043c \u0441 \u00ab\u0421\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440 \u0440\u0435\u0447\u0438 Google\u00bb.<\/li>\n\n\n\n<li><strong>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445:<\/strong> \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 <strong>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445<\/strong> \u2192 \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 <strong>\u0423\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u0438\u0439 (\u0423\u043a\u0440\u0430\u0457\u043d\u0430)<\/strong>.<\/li>\n\n\n\n<li><strong>\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435:<\/strong> \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u0438\u043a\u043e\u043d\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0433\u043e\u043b\u043e\u0441\u043e\u0432.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udf1f \u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b (\u0434\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430)<\/h2>\n\n\n\n<p>\u0415\u0441\u043b\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0433\u043e\u043b\u043e\u0441\u0430 \u043a\u0430\u0436\u0443\u0442\u0441\u044f \u0432\u0430\u043c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u00ab\u0440\u043e\u0431\u043e\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438\u00bb, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Vocalizer (Android):<\/strong> \u041f\u043b\u0430\u0442\u043d\u044b\u0439, \u043d\u043e \u043e\u0447\u0435\u043d\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a. \u0422\u0430\u043c \u0435\u0441\u0442\u044c \u0433\u043e\u043b\u043e\u0441 \u00abYuriy\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0432\u0443\u0447\u0438\u0442 \u043e\u0447\u0435\u043d\u044c \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u043e.<\/li>\n\n\n\n<li><strong>Speechify \/ NaturalReader:<\/strong> \u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u0435\u0441\u0442\u044c \u0438 \u043d\u0430 \u041f\u041a, \u0438 \u043d\u0430 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u044b), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0418\u0418-\u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432. \u0423\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u0442\u0430\u043c \u0437\u0432\u0443\u0447\u0438\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u0430\u043a \u0436\u0438\u0432\u043e\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a.<\/li>\n\n\n\n<li><strong>RHVoice:<\/strong> \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0443\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430, \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0441\u0440\u0435\u0434\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u0437\u0440\u0435\u043d\u0438\u044f.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><a href=\"https:\/\/rhvoice.org\">https:\/\/rhvoice.org<\/a> &#8212; RHVoice \u2014 \u044d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440 \u0440\u0435\u0447\u0438 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><a href=\"https:\/\/rhvoice.su\">https:\/\/rhvoice.su<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u044f\u0437\u044b\u043a\u0438<\/h2>\n\n\n\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e RHVoice \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438. \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u043d \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439, \u0431\u0440\u0430\u0437\u0438\u043b\u044c\u0441\u043a\u0438\u0439 \u043f\u043e\u0440\u0442\u0443\u0433\u0430\u043b\u044c\u0441\u043a\u0438\u0439, \u044d\u0441\u043f\u0435\u0440\u0430\u043d\u0442\u043e, \u0433\u0440\u0443\u0437\u0438\u043d\u0441\u043a\u0438\u0439, \u0443\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u0438\u0439, \u043a\u0438\u0440\u0433\u0438\u0437\u0441\u043a\u0438\u0439, \u0442\u0430\u0442\u0430\u0440\u0441\u043a\u0438\u0439 \u0438 \u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u0438\u0445. \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043b\u044e\u0431\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432, \u0435\u0441\u043b\u0438 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b<\/h2>\n\n\n\n<p>RHVoice \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Windows, GNU\/Linux \u0438 Android. \u041e\u043d \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0440\u0435\u0447\u044c \u043d\u0430 \u044d\u0442\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 SAPI5 \u0432 Windows, Speech Dispatcher \u0432 GNU\/Linux \u0438 API \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0440\u0435\u0447\u044c \u0432 Android. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0447\u0442\u0435\u0446\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0430 NVDA \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e (\u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0438\u043c RHVoice).<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u043f\u0440\u0438\u043c\u0435\u0440 \u0433\u043e\u043b\u043e\u0441\u043e\u0432.<\/p>\n\n\n\n<p><a href=\"https:\/\/rhvoice.su\/voices\">https:\/\/rhvoice.su\/voices<\/a><\/p>\n\n\n\n<figure class=\"wp-block-audio\"><audio controls src=\"https:\/\/fjngqp1mvftjzxfzrdiggafze9wxueam.cdn-freehost.com.ua\/wp-content\/uploads\/2026\/02\/demo_uk_\u0433\u043e\u043b\u043e\u0441_\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439.mp3\"><\/audio><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0442\u0435 \u0435\u0441\u0442\u044c \u043b\u0438 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0423\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u043b\u043e\u0441. \u041d\u043e \u0442\u0430\u043a \u0438 \u043d\u0435 \u0440\u0430\u0437\u043e\u0431\u0430\u0440\u043b\u0441\u044f \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u0442 \u0441\u043f\u0438\u0441\u043a\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0423\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u0438\u0445 \u0433\u043e\u043b\u043e\u0441\u043e\u043c \u043d\u0430 Windows 11 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 Chrom, \u0445\u043e\u0442\u044f \u043d\u0430 \u041e\u0421 \u0410\u043d\u0434\u0440\u043e\u0438\u0434 \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u044b\u0439 \u0433\u043e\u043b\u043e\u0441. \ud83c\uddfa\ud83c\udde6 \u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430 \u041f\u0440\u0438\u0432\u0456\u0442! \u0426\u0435 \u0442\u0435\u0441\u0442 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u0433\u043e \u0447\u0438\u0442\u0430\u043d\u043d\u044f \u0443\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u043e\u044e. \u0428\u0432\u0438\u0434\u043a\u0456\u0441\u0442\u044c: 1.0 \u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f \u0433\u043e\u043b\u043e\u0441\u0456\u0432\u2026 \ud83c\uddf7\ud83c\uddfa \u0420\u0443\u0441\u0441\u043a\u0438\u0439 \u041f\u0440\u0438\u0432\u0435\u0442! \u042d\u0442\u043e \u0442\u0435\u0441\u0442 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c. \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c:&hellip;&nbsp;<a href=\"https:\/\/1.cbm.ua\/?p=9396\" rel=\"bookmark\">\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 &raquo;<span class=\"screen-reader-text\">\u0421\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043f\u043d\u044b\u0445 \u0433\u043e\u043b\u043e\u0441\u043e\u0432 \u0434\u043b\u044f \u0423\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430.<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[199,184,138],"tags":[],"class_list":["post-9396","post","type-post","status-publish","format-standard","hentry","category-199","category--script","category-138"],"_links":{"self":[{"href":"https:\/\/1.cbm.ua\/index.php?rest_route=\/wp\/v2\/posts\/9396","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/1.cbm.ua\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/1.cbm.ua\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/1.cbm.ua\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/1.cbm.ua\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9396"}],"version-history":[{"count":21,"href":"https:\/\/1.cbm.ua\/index.php?rest_route=\/wp\/v2\/posts\/9396\/revisions"}],"predecessor-version":[{"id":9427,"href":"https:\/\/1.cbm.ua\/index.php?rest_route=\/wp\/v2\/posts\/9396\/revisions\/9427"}],"wp:attachment":[{"href":"https:\/\/1.cbm.ua\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9396"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/1.cbm.ua\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9396"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/1.cbm.ua\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}