speechgen.io

Sivuston tiedot speechgen.io

Realistic Text to Speech converter & AI Voice generator

 Luotu Huhtikuu 11 2026 02:41 AM

Vanhentuneet tiedot? PÄIVITÄ !

Pisteet 66/100

SEO Sisältö

Otsikko

Realistic Text to Speech converter & AI Voice generator

Pituus : 55

Täydellistä, otsikkosi sisältää väliltä 10 ja 70 kirjainta.

Kuvaus

Generate realistic Voiceovers online! Insert text to generate speech and download audio mp3/wav. Speak a text with AI-powered voices.

Pituus : 133

Hienoa, sinun meta-kuvauksesi sisältää väliltä70 ja 160 kirjainta.

Avainsanat

Erittäin huono. Emme löytäneen meta -sanoja sivultasi. Käytä Tätä ilmaista meta-kuvaus generaattoria lisätäksesi kuvauksen.

Open Graph (OG-tägit) tarjoavat mahdollisuuden merkitä verkkosivustojen sisältöä meta-tiedoilla.

Hienoa, sinun sivu käyttää hyödyksi Open Graph protokollaa (OG meta prop).

Omaisuus Sisältö
type article
locale en_US
description Generate realistic Voiceovers online! Insert text to generate speech and download audio mp3/wav. Speak a text with AI-powered voices.
url https://speechgen.io/
title Realistic Text to Speech converter & AI Voice generator
site_name SpeechGen.io
audio https://speechgen.io/texttomp3/20220915/prj_699_6c629a45a5f135ad29cfa87a7d9b9043_1663235703.mp3
image https://speechgen.io/img/speechgen_fb_pic.jpg

Otsikot

H1 H2 H3 H4 H5 H6
1 17 30 1 0 0
  • [H1] AI Text to Speech Online
  • [H2]
  • [H2] Result
  • [H2] What is SpeechGen?
  • [H2] Voice Samples
  • [H2] How to Convert Text to Speech in 3 Steps
  • [H2] Who Uses AI Text to Speech — Real Problems, Real Results
  • [H2] 6 Features That Make SpeechGen Different
  • [H2] Built-in Tools
  • [H2] Try Before You Pay — No Commitment Required
  • [H2] Trusted by 70,000 Teams Across 22 Industries
  • [H2] Download MP3, WAV, FLAC — Any Format, Any Bitrate
  • [H2] Why SpeechGen Instead of a Recording Studio
  • [H2] Frequently Asked Questions
  • [H2] 150+ Languages — AI Text to Speech in Any Language
  • [H2] Start Converting Text to Speech — Right Now
  • [H2] Save Voice for Quick AccessSave your favorite voices to Favorites — with custom settings (speed, pitch, style) or in their default state for quick access.Adding to Favorites is only available to registered users.Sign UpAlready have an account? Sign in here","deleteVoiceSuccess":"messages_deleteVoiceSuccess"},"labels":{"favorite":"Favorites","speed":"speed","speedShort":"speed","pitch":"pitch","pitchShort":"pitch","volume":"Volume:","volumeShort":"Volume:","styles":"Style","styleDegree":"Style Strength","role":"Role","intonationDesc":"Intonation allows you to modify the contour\/expressiveness of speech. Available only for select voices.","smartcacheDesc":"SpeechGens's Smart Cache remembers every sentence you've synthesized","unchecked":"labels_unchecked"},"tooltips":{"intonation":"Ability to control intonation contour (if supported by the voice).","smartcache":"Smart Cache speeds up synthesis and saves your limits on repeated requests.","pricing":"When generating, tokens are deducted based on the cost per 1,000 characters\""},"units":{"semitoneShort":"st"},"ui":{"clear":"Clear"}} || {})); /* простой хелпер */ function t(path, fallback){ const parts = String(path||"").split("."); let cur = window.I18N || {}; for (const p of parts){ cur = (cur && typeof cur==="object") ? cur[p] : undefined; } return (cur===undefined || cur===null || cur==="") ? (fallback ?? path) : String(cur); } (()=>{const e=(e,t=document)=>t.querySelector(e),n=(e,t=document)=>Array.from(t.querySelectorAll(e)),s=(e,t)=>{const n=document.createElement(e);return t&&(n.className=t),n},i=(e,t,n)=>Math.max(t,Math.min(n,e)),a=e=>e>0?`+${e}`:`${e}`;const o=e=>e?/^(?:https?:)?\/\//i.test(e)||e.startsWith("data:")?e:location.origin+(e.startsWith("/")?e:"/"+e):"",l=window.LANG_INDEX&&"object"==typeof window.LANG_INDEX&&!Array.isArray(window.LANG_INDEX)?window.LANG_INDEX:{},r={loaded:!1,list:[]},c=(()=>{let e=null,t=null,n=null;const s=()=>e||(e=new Audio,e.preload="none",e.addEventListener("ended",()=>{t&&(l(t,!1),r(t,!1),t=null)}),e.addEventListener("loadeddata",()=>{t&&t.classList.remove("loading")}),e.addEventListener("canplaythrough",()=>{t&&t.classList.remove("loading")}),e.addEventListener("error",()=>{t&&t.classList.remove("loading")}),e);function i(e,t){const n=e?.closest("[data-voice-id]");return{voiceId:e?.dataset?.voiceId||n?.dataset?.voiceId||"",pitch:parseInt(t?.pitch??0,10)||0,style:String(t?.style||"").trim()}}function a(e,t){return!(!e||!t)&&(String(e.voiceId)===String(t.voiceId)&&Number(e.pitch)===Number(t.pitch)&&String(e.style)===String(t.style))}const l=(e,t)=>{e&&e.classList.toggle("play",!!t)},r=(e,t)=>{document.querySelectorAll(".miniplayBu.play").forEach(t=>{t!==e&&t.classList.remove("play")}),e&&e.classList.toggle("play",!!t)};function c(e){e&&(e.classList.add("loading"),clearTimeout(e.__loadingTO),e.__loadingTO=setTimeout(()=>e.classList.remove("loading"),5e3))}function d(e){e&&(e.classList.remove("loading"),clearTimeout(e.__loadTimer),e.__loadTimer=null)}return{async toggle(e,u,p){const v=s(),m=o(u||"");if(!m)return;const g={...i(e,p),url:m};if(v.src===m||a(n,g))if(v.paused){t=e;try{await AudioFX.apply(v,p||{})}catch(e){}await v.play().catch(console.warn),l(t,!0),r(t,!0)}else v.pause(),l(e,!1),r(e,!1),d(e);else{t&&t!==e&&(l(t,!1),d(t)),t=e,c(t),v.pause(),v.src=m,v.currentTime=0;try{await AudioFX.apply(v,p||{})}catch(e){}await v.play().catch(console.warn),l(t,!0),r(t,!0),d(t),n=g}},async applyLive(e){const o=s();if(!o||o.paused)return;try{await AudioFX.apply(o,e||{})}catch(e){}if(!t)return;const u=i(t,e);if(a(n,u))return;const p=b(t,e||{});if(!p)return;let v=0;try{isFinite(o.duration)&&o.duration>0&&(v=Math.max(0,Math.min(1,o.currentTime/o.duration)))}catch(e){}c(t),o.pause(),o.src=p;const m=async()=>{o.removeEventListener("loadedmetadata",m);try{isFinite(o.duration)&&o.duration>0&&v>0?o.currentTime=Math.max(0,Math.min(o.duration-.05,o.duration*v)):o.currentTime=0,await AudioFX.apply(o,e||{}),await o.play(),l(t,!0),r(t,!0),d(t),n={...u,url:p}}catch(e){console.warn(e),d(t)}};o.addEventListener("loadedmetadata",m,{once:!0}),setTimeout(async()=>{if(!(o.readyState>=1))try{await AudioFX.apply(o,e||{}),await o.play(),l(t,!0),r(t,!0),d(t),n={...u,url:p}}catch(e){d(t)}},2e3)},stopInside(e){if(!t||!e.contains(t))return;const n=s();n.pause(),n.currentTime=0,l(t,!1),r(t,!1)},resync(){const e=s(),n=e&&!e.paused&&e.src;document.querySelectorAll(".miniplayBu.play").forEach(e=>e.classList.remove("play")),t&&n&&t.classList.add("play")}}})();function d(e){const t=document.querySelector(".addBalancePop");document.body.classList.add("overlayed"),t&&(t.innerHTML=`\n \n \n ×\n \n ${e}\n OK\n \n \n \n \n `,"function"==typeof popBalClInt&&popBalClInt(null))}const u=()=>new Promise(e=>requestAnimationFrame(()=>e())),p=new WeakMap;async function v(e,t=60){const n=function(e){let t=p.get(e);return t&&!t.signal.aborted||(t=new AbortController,p.set(e,t)),t.signal}(e),s=e.querySelector(".inList");if(s&&e.__stash)for(;e.__stash.firstChild;){if(n.aborted)return;const i=document.createDocumentFragment();for(let n=0;nrequestAnimationFrame(e))}}let m=null;const g=e=>String(e).replace(/[&"']/g,e=>({"&":"&","":">",'"':""","'":"'"}[e]));function y(){if(m)return m;const e=G(l),t=[];return e.forEach(e=>{e.items.forEach((e,n)=>{const s=e.code||e.lang,i=g(e.full_name||e.lang||s),a=g(e.name||(e=>(e||"").split("-")[0]||e)(s)),o=0===n?"":" dialect";t.push(`\n ${i}${a}\n `)})}),m=t.join(""),m}const f=/iP(hone|ad|od)/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,h=(/^((?!chrome|android).)*safari/i.test(navigator.userAgent),e=>window.scheduler?.postTask&&!f?scheduler.postTask(e,{priority:"background"}):requestAnimationFrame(e));function b(e,t={}){console.log("resolvePreviewUrlFor");const n=e?.dataset?.basetrack||"";if(!n)return"";const s=e.closest("[data-voice-id]"),i=e.dataset.voiceId||s?.dataset.voiceId||"",a=parseInt(t.pitch??0,10)||0,o=String(t.style||"").trim();if(!!(!i||0===a&&!o))return n;const l=new URL("/index.php",location.origin);return l.searchParams.set("r","ttsV2/preview"),l.searchParams.set("voice_id",i),l.searchParams.set("pitch",String(a)),o&&l.searchParams.set("style",o),l.toString()}function _(e,t,n,s,i=null,a=""){console.log("upsertPopupBox");const o=e.querySelector(".uiRight .uiInner");if(!o)return null;const l=`uiBox uiBox-${t}`;let r=o.querySelector(`.uiBox.uiBox-${t}`);if(e.__uid||(e.__uid=`${Math.random().toString(36).slice(2,8)}`),r){const n=r.querySelector("input.toggle-hidden"),s=r.querySelectorAll("label.popup-backdrop, label.sh2");//!input.id || !input.id.includes(uid); if(1){const i=`toggle-${t}-${e.__uid}`;n.id=i,s.forEach(e=>e.setAttribute("for",i))}}else{r=document.createElement("div"),r.className=l;const n=`toggle-${t}-${e.__uid}`;if(r.innerHTML=`\n \n \n \n \n `,i){const e=o.querySelector(i);e?o.insertBefore(r,e):o.appendChild(r)}else o.appendChild(r)}const c=r.querySelector(".sh2");c&&(c.innerHTML=n||"",a?c.title=a:c.removeAttribute("title"));const d=r.querySelector(".p");return d&&(d.innerHTML=s||""),r}async function S(e){try{const t=e.lang;Y[t]?.voices?.length||await Z.voicesByLang(t);const n=(Y[t]?.voices||[]).find(t=>String(t.id)===String(e.id));return n?{...e,name:e.name||n.name,api:n.api,api_id:n.api_id,pro:!!Number(n.pro),sex:n.sex,mp3:n.mp3,price:n.price,type:n.type,type_name:n.type_name,em:n.em??n.styles??null,styles:n.styles??null,roles:n.roles??n.role??null,_base:n}:e}catch(t){return e}}const w=(e,t,n=1e-6)=>{const s=+e,i=+t;return Number.isFinite(s)&&Number.isFinite(i)?Math.abs(s-i)null==e?"":String(e);function E({lang:e,id:t,name:n,speed:s,pitch:i,volume:a,style:o,styledegree:l,role:r}){const c=o&&Number.isFinite(+l)?+l:1;return{lang:L(e),id:L(t||""),name:L(n||""),speed:Number.isFinite(+s)?+(+s).toFixed(1):1,pitch:parseInt(i,10)||0,volume:parseInt(a,10)||100,style:L(o),styledegree:+c,role:L(r)}}function k(e){if(_devMode&&console.log(arguments.callee.name),!r.loaded)return null;const t=E({lang:e.lang,id:e.voiceId,name:e.voiceName,speed:e.speed,pitch:e.pitch,volume:e.volume,style:e.style,styledegree:e.styledegree,role:e.role});return r.list.find(e=>{const n=E({lang:e.lang,id:e.id,name:e.name,speed:e.speed,pitch:e.pitch,volume:e.volume,style:e.style,styledegree:e.styledegree,role:e.role});return!!(t.id&&n.id?n.id===t.id:n.name===t.name)&&(n.lang===t.lang&&w(n.speed,t.speed,1e-6)&&n.pitch===t.pitch&&n.volume===t.volume&&n.style===t.style&&w(n.styledegree,t.styledegree,1e-6)&&n.role===t.role)})||null}function A(e){_devMode&&console.log(arguments.callee.name);const t=e?.querySelector(".uiHead"),n=t?.querySelector(".bttnFilters"),s=t?.querySelector(".acceptall");if(!t||!n||n.__wired)return;n.__wired=!0;const i=()=>{t.classList.add("open"),function(){if(t.__outside)return;document.addEventListener("pointerdown",l,!0),t.__outside=l}()},a=()=>{t.classList.remove("open"),r()},o=e=>{e.preventDefault(),e.stopPropagation(),t.classList.contains("open")?a():i()},l=e=>{const n=e.target,s=t.contains(n),i=!!n.closest(".uiDD");s&&!i||a()};function r(){t.__outside&&(document.removeEventListener("pointerdown",t.__outside,!0),t.__outside=null)}n.addEventListener("pointerdown",o),s.addEventListener("pointerdown",o),e.addEventListener("transitionend",()=>{e.classList.contains("open")||r()})}function x(t){return(e(".voice-search",t)?.value||"").trim().toLowerCase()}function C(e,t){return t?e.filter(e=>{const n=String(e.name||"").toLowerCase(),s=String(e.api||"").toLowerCase(),i=String(e.lang||"").toLowerCase();return n.includes(t)||s.includes(t)||i.includes(t)}):e}function M(e){const n=x(e);return n?t("messages.noVoicesWithQuery",'Nothing found for "{q}"').replace("{q}",g(n)):t("messages.noVoices","Nothing found with these filters")}function q(e,t,n,s){const i=e.querySelector(`.${t}`);if(!i)return;const a=i.querySelector(".lbl"),o=i.querySelector(".val");a&&(a.textContent="style"==t?String(n).replace(/:?$/,""):String(n).replace(/:?$/,":")),o&&(o.textContent=s)}function N(e){_devMode&&console.log(arguments.callee.name);const t=e.querySelector(".uiMarkers");if(!t)return null;return["speed","pitch","style","volume"].forEach(e=>{let n=t.querySelector(`.uiName.p5[data-marker="${e}"]`);n||(n=document.createElement("div"),n.className="uiName p5",n.dataset.marker=e,t.appendChild(n));let s=n.querySelector(`span.${e}`);s||(s=document.createElement("span"),s.className=e,n.appendChild(s));let i=s.querySelector(".lbl"),a=s.querySelector(".val");return i||(i=document.createElement("span"),i.className="lbl",s.prepend(i)),a||(a=document.createElement("span"),a.className="val",s.appendChild(a)),{wrap:n,span:s,lbl:i,val:a}}),t}const $=(e,t=150)=>{let n=0;return(...s)=>{clearTimeout(n),n=setTimeout(()=>e(...s),t)}},F=new WeakMap;function I(e){let t=F.get(e);return t&&!t.signal.aborted||(t=new AbortController,F.set(e,t)),t.signal}function T(e){const t=F.get(e);t&&!t.signal.aborted&&t.abort()}function B(t){const n=e(".uiRight .uiInner",t);if(!n)return{};const s=e('select[name="style"]',n);let i="",a="";return s&&s.value&&"none"!==s.value&&(i=s.value,a=s?.options[s.selectedIndex]?.text||""),{speed:parseFloat(e('select[name="speed"]',n)?.value)||1,pitch:parseInt(e('select[name="tone"]',n)?.value,10)||0,volume:parseInt(e('select[name="volume"]',n)?.value,10)||100,style:i,styleName:a,styledegree:(()=>{const t=parseFloat(e('input[name="styledegree"]',n)?.value);return isNaN(t)?1:t})(),role:e('select[name="role"]',n)?.value||""}}function P(e,t){if(!t)return;console.log(".saveVoise for speaker"),console.log(t);const n=e.closest(".speaker_menu_new"),s=t.lang||O(e,n)||J(n).lang||X(n),a=function(e,t){const n=B(e),s="microsoft"===String(t?.api).toLowerCase(),a=j(t).map(e=>String(e.value)),o=!!n.style&&a.includes(String(n.style)),l=o?n.style:"",r=o&&n.styleName||"",c=s&&l?i(parseFloat(String(n.styledegree||"1")),.01,2):1,d=R(t),u=n.role&&d.includes(n.role)?n.role:"";return{speed:parseFloat(String(n.speed||"1"))||1,pitch:parseInt(String(n.pitch||"0"),10)||0,volume:parseInt(String(n.volume||"100"),10)||100,style:l,styleName:r,styledegree:c,role:u}}(e,t);console.log("selected L= "+s),console.log(t.lang+O(e,n)+X(n)),ue(n,e,{lang:s,voiceId:t.id,voice:t.name,api:t.api,apiId:t.api_id,pro:!!Number(t.pro),price:t.price,speed:a.speed,pitch:a.pitch,volume:a.volume,style:a.style||null,styleName:a.styleName||null,styledegree:a.styledegree,role:a.role||null,type:t.type,type_name:t.type_name})}function V(e,t){const n=t.lang||X(e),s=Y?.[n],i=Array.isArray(s?.voices)?s.voices:[];return i.find(e=>String(e.id)===String(t.voiceId))||i.find(e=>String(e.name)===String(t.voice||t.voiceName))||null}function O(t,n){return e('select[name="lang"]',t)?.value||n?.dataset?.lang||X(n)}function D(e){const t=String(e?.sex??""),n="1"===t?"man":"0"===t?"woman":"2"===t?"neutral":"31"===t?"boy":"30"===t?"girl":"41"===t?"grandpa":"40"===t?"grandma":"woman",s=ie(e?.type),i=!0===e?.new||1===e?.new||"1"===e?.new||"new"===e?.new,a=String(e?.name??e?.voice??"").toLowerCase();if(/^(maksim|maxim|tatiana)$/.test(a))return"/img/icons/bot.png";const o=[];return i&&o.push("new"),s&&"standard"!==s&&o.push(s),o.push(n),o.join("")}function H(){_devMode&&console.log(arguments.callee.name);const e=document.getElementById("speaker_100");if(!e)return;const t=String(e.dataset.api||"").toLowerCase(),n=parseInt(e.dataset.apiId||e.dataset.apiid||"",10),s="microsoft"===t||Number.isFinite(n)&&"undefined"!=typeof MS_API_ID&&n===MS_API_ID,i=11===n||13===n;window.SSMLUI?SSMLUI.setEngine(t):window.__SSML_PENDING_ENGINE=t;const a=document.getElementById("intonationContourBtn");a&&(a.parentElement.style.display=s?"inline-block":"none");const o=document.getElementById("strong");o&&(o.parentElement.style.display=i?"none":"inline-block"),setDir(e.dataset.lang,document.getElementById("mytextarea"))}function j(e){const t=[],n=(e,n)=>{const s=(e??n??"").toString().trim(),i=(n??e??"").toString().trim();s&&t.push({value:s,label:i||s})},s=e=>{if(null==e)return;if(Array.isArray(e))return void e.forEach(s);const t=typeof e;if("string"!==t&&"number"!==t){if("object"===t){if(Array.isArray(e.options)&&s(e.options),"value"in e||"name"in e)return void n(e.value,e.name);Object.entries(e).forEach(([e,t])=>{null!=t&&("string"==typeof t||"number"==typeof t?n(String(t),e):"object"==typeof t?n(t.value??e,t.name??e):n(String(t),e))})}}else n(String(e),String(e))};s(e?.em),0===t.length&&s(e?.styles);const i=new Set;return t.filter(({value:e})=>{const t=String(e).toLowerCase();return!i.has(t)&&(i.add(t),!0)})}function R(e){const t=[],n=e=>{const n=(e??"").toString().trim();n&&t.push(n)},s=e=>{if(e)if(Array.isArray(e))e.forEach(s);else if("string"!=typeof e&&"number"!=typeof e){if("object"==typeof e){if("value"in e||"name"in e)return void n(e.value??e.name);Object.values(e).forEach(s)}}else n(e)};s(e?.roles),s(e?.role);const i=new Set;return t.filter(e=>{const t=e.toLowerCase();return!i.has(t)&&(i.add(t),!0)})}function W(e){const t=[];if(Array.isArray(e))e.forEach((e,n)=>{const s=e?.code||e?.lang;t.push({code:s||"",lang:e?.lang||s||"",full_name:e?.full_name||e?.name||e?.lang||s||"",name:e?.name||(s||"").split("-")[0],magor:Number(e?.magor||0)||0,_idx:n})});else{let n=0;for(const s of Object.keys(e||{})){const i=e[s]||{},a=i.code||i.lang||s;t.push({code:a,lang:i.lang||a,full_name:i.full_name||i.name||i.lang||a,name:i.name||(a||s).split("-")[0],magor:Number(i.magor||0)||0,_idx:n++})}}return t}function G(e){const t=(Array.isArray(e),W(e)),n=new Map;t.forEach(e=>{const t=e.code||e.lang,s=(t||"").split("-")[0]||t;n.has(s)||n.set(s,[]),n.get(s).push(e)});const s=[];for(const[e,t]of n){t.sort((e,t)=>{const n="1"===String(e.magor)?-1:0,s="1"===String(t.magor)?-1:0;return n!==s?n-s:e._idx-t._idx});const n=t.find(e=>"1"===String(e.magor))||t[0];s.push({base:e,items:t,primary:n})}return s}function U(e){return e?l[e]?l[e]:W(l).find(t=>t.code===e||t.lang===e)||null:null}function X(t){const n=t?.dataset?.lang;if(n&&U(n))return n;const s=e(".uiFlag",t)?.dataset.value;if(s&&U(s))return s;const i=W(l),a=i.find(e=>"1"===String(e.magor));if(a)return a.code||a.lang;const o=Object.keys(l)[0];return o||(i[0]?.code||"en-US")}function J(t){_devMode&&console.trace(" readSavedFromSpeaker");const n=t?.dataset||{},s=(e,t)=>""===e||null==e||isNaN(+e)?t:+e;let i={};const a=t.querySelector('input[type="hidden"][name$="_json"]');if(a&&a.value)try{i=JSON.parse(a.value)||{}}catch(e){}const o=e=>void 0!==n[e]?n[e]:void 0!==i[e]?i[e]:void 0,l=o("voice")??o("voiceName")??e(".uiName span",t)?.textContent?.trim()??"";return{lang:o("lang")||e(".uiFlag",t)?.dataset.value||null,voiceId:o("voiceId")||null,voice:l,api:o("api"),apiId:o("apiId"),pro:o("pro"),type:o("type"),type_name:o("type_name"),price:o("price"),speed:void 0!==o("speed")?s(o("speed"),1):void 0,pitch:void 0!==o("pitch")?parseInt(o("pitch"),10):void 0,volume:void 0!==o("volume")?parseInt(o("volume"),10):void 0,style:o("style"),styledegree:void 0!==o("styledegree")?s(o("styledegree"),1):void 0,role:o("role")}}const Y={};function K(e,t){if(!e)return null;if(Array.isArray(e.voices))return t?{[t]:e}:null;if("object"==typeof e){const t={};for(const[n,s]of Object.entries(e))s&&Array.isArray(s.voices)&&(s.code||(s.code=n),t[n]=s);return Object.keys(t).length?t:null}return null}if(window.VOICES_BY_LANG&&"object"==typeof window.VOICES_BY_LANG)if(Array.isArray(window.VOICES_BY_LANG.voices)){const e=window.VOICES_BY_LANG;e.code&&(Y[e.code]=e)}else for(const[e,t]of Object.entries(window.VOICES_BY_LANG))if(t&&Array.isArray(t.voices))Y[e]=t;else{const n=K(t,e);n&&Object.assign(Y,n)}const z=new Map,Z={async voicesByLang(e){if(!e)throw new Error("tts_lang is empty");if(Y?.[e]?.voices?.length)return Y[e];if(!z.has(e)){const t=`/index.php?r=ttsV2/VoiseInfo&type=voice&tts_lang=${encodeURIComponent(e)}&for_uid=${for_uid}`,n=fetch(t,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}`);return e.json()}).then(t=>{const n=K(t,e);if(!n)throw new Error("Bad payload");Object.assign(Y,n),window.langArrText=window.langArrText||{};for(const[e,t]of Object.entries(n))t&&"string"==typeof t.text&&!(e in window.langArrText)&&(window.langArrText[e]=t.text);return Y[e]||Y[Object.keys(n)[0]]});z.set(e,n)}return z.get(e)},toggleFavorite:async()=>!0,async favorites(){if(r.loaded)return r.list;const e=await fetch("/index.php?r=ttsV2/VoiseFavor",{credentials:"same-origin"});if(!e.ok)throw new Error(`HTTP ${e.status}`);const t=await e.json();return r.list=Array.isArray(t?.voices)?t.voices.map(e=>Q(e)):[],r.loaded=!0,r.list},async addFavorite(e){const t=await fetch("/index.php?r=ttsV2/AddFavor",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const e=new Error(`HTTP ${t.status}`);throw e.status=t.status,e}const n=await t.json(),s=Q(n?.voice||{...e,favor_id:n?.favor_id});return!s.favor_id&&n?.favor_id&&(s.favor_id=n.favor_id),r.list.unshift(s),s},async saveFavorite(e){const t=await fetch("/index.php?r=ttsV2/SaveFavor",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error(`HTTP ${t.status}`);const n=await t.json(),s=r.list.findIndex(t=>String(t.favor_id)===String(e.favor_id));return s>=0&&(r.list[s]={...r.list[s],...ee(e),...n?.voice?Q(n.voice):{}}),n},async deleteFavorite(e){const t={"Content-Type":"application/json"},n=document.querySelector('meta[name="csrf-token"]')?.content;n&&(t["X-CSRF-Token"]=n);const s=await fetch("/index.php?r=ttsV2/DeleteFavor",{method:"POST",credentials:"same-origin",headers:t,body:JSON.stringify({favor_id:e})});if(!s.ok)throw new Error(`HTTP ${s.status}`);const i=await s.json();if(!i?.ok)throw new Error(i?.error||"Delete failed");return r.list=r.list.filter(t=>String(t.favor_id)!==String(e)),!0}};function Q(e){const t=e.voice_id??e.id;return{favor_id:e.favor_id??e.id_favor??e.id,id:t,name:e.name??e.voice??"",lang:e.lang,api:e.api,api_id:e.api_id,pro:!!Number(e.pro),sex:e.sex,mp3:e.mp3,price:e.price,type:e.type,type_name:e.type_name,...ee(e)}}function ee(e){const t=Number.isFinite(+e.styledegree)?+e.styledegree:1;return{speed:Number.isFinite(+e.speed)?+e.speed:1,pitch:Number.isFinite(+e.pitch)?+e.pitch:0,volume:Number.isFinite(+e.volume)?+e.volume:100,style:e.style??"",styledegree:t>0?t:1,styleName:e.styleName??e.stylename??"",role:e.role??""}}function te(e){const n=e.closest(".uiDD"),s=n?.querySelector("button.xDrop");if(!s)return;s.className=`xDrop ${e.value}`;const i=U(e.value),a=i?.full_name||i?.lang||e.value||t("labels.favorite","Favorite"),o=i?.name||(e.value||"").split("-")[0],l=s.querySelector(".voiceBnt");l&&(l.innerHTML=`${a}${o}`)}function ne(e,t){const n=e?.querySelector("ul");if(!n)return;const s=e.__selectedLi;s&&s.classList.remove("selected");const i=n.querySelector(`li[data-value="${CSS.escape(t)}"]`);i&&(i.classList.add("selected"),e.__selectedLi=i)}function se(t){return e('.voice-tab-content[data-content="all"] .voices-full',t)}!function(){window;function e(e){e.__skel&&(e.__skel.remove(),e.__skel=null)}function n(e,n){_devMode&&console.log("ensureMenuShell");let s=e.querySelector(".lang-menu");s||(s=document.createElement("div"),s.className="lang-menu xvoicelist langlist lang_sprites",s.setAttribute("role","dialog"),s.setAttribute("aria-hidden","true"),s.hidden=!0,s.style.contain="content",s.style.willChange="transform,opacity",s.style.maxHeight="40px",s.style.overflow="hidden",s.innerHTML=`\n \n \n \n \n \n `,e.appendChild(s));const i=s.querySelector(".searchlang"),a=s.querySelector(".searchwrap .lupa"),o=s.querySelector("ul");if(i&&a&&!a.__wired){a.__wired=!0;const e=()=>a.classList.toggle("clr",!!i.value.trim());["input","change","keyup","cut","paste"].forEach(t=>i.addEventListener(t,e,{passive:!0})),a.addEventListener("click",()=>{i.value&&(i.value="",i.dispatchEvent(new Event("input",{bubbles:!0})),i.focus())}),e()}return o.__wired||(o.__wired=!0,o.addEventListener("click",t=>{const i=t.target.closest("li[data-value]");if(!i)return;const a=i.dataset.value;n.value=a,te(n),ne(s,a),n.dispatchEvent(new Event("change",{bubbles:!0})),closeLangMenu(e)})),s}function s(e){_devMode&&console.log("setupLangSearchFiltering");const t=e.querySelector(".searchlang"),n=e.querySelector("ul");if(!t||!n||t.__debounced)return;t.__debounced=!0;const s=()=>{n.querySelectorAll("li[data-value]").forEach(e=>{e.dataset.key||(e.dataset.key=(e.textContent||"").toLowerCase())})};s();let i=null;const a=new MutationObserver(e=>{for(const t of e)t.addedNodes.forEach(e=>{1===e.nodeType&&e.matches("li[data-value]")&&!e.dataset.key&&(e.dataset.key=(e.textContent||"").toLowerCase())})});a.observe(n,{childList:!0}),e.__observer=a;const o=$(()=>(e=>{i&&i.abort();const t=new AbortController;i=t;const s=(e||"").trim().toLowerCase();if(!s){const e=Array.from(n.children);let s=0,i=200;const a=()=>{if(t.signal.aborted)return;const n=Math.min(s+i,e.length);for(;si=!1,100),a.__open=!0,a.setAttribute("aria-hidden","false"),a.classList.add("open"),a.classList.remove("--vis-hide");const o=a.querySelector("ul");if(o&&(o.style.display="none"),function(e){if(_devMode&&console.log("showLangSkeleton"),e.__skel)return;const t=document.createElement("div");t.className="lang-skel",t.innerHTML=Array.from({length:3}).map(()=>'\n ...\n .........\n ').join(""),e.appendChild(t),e.__skel=t}(a),a.style.maxHeight="",!a.__outside){const e=e=>{if(!a.__open||i)return;const n=t.querySelector("button.xDrop");n&&(e.target===n||n.contains(e.target))||t.contains(e.target)||closeLangMenu(t)};f?(document.addEventListener("touchstart",e,!0),document.addEventListener("click",e,!0)):document.addEventListener("pointerdown",e,!0),a.__outside=e}if(a.__skelObs&&(a.__skelObs.disconnect(),a.__skelObs=null),o){const t=new MutationObserver(n=>{for(const s of n)if(s.addedNodes&&s.addedNodes.length){requestAnimationFrame(()=>h(()=>e(a))),t.disconnect(),a.__skelObs=null;break}});t.observe(o,{childList:!0}),a.__skelObs=t}requestAnimationFrame(()=>{h(()=>{a.__filled||function(e){if(e.__filled||!e.__open)return;const t=e.querySelector("ul");if(!t)return;const n=y(),s=document.createElement("template");s.innerHTML=`${n}`;const i=Array.from(s.content.firstChild.childNodes);if(i.forEach(e=>{1===e.nodeType&&e.matches("li[data-value]")&&!e.dataset.key&&(e.dataset.key=(e.textContent||"").toLowerCase())}),f){const e=i.splice(0,30),n=document.createDocumentFragment();e.forEach(e=>n.appendChild(e)),t.appendChild(n)}const a=f?60:200;let o=0;requestAnimationFrame(function n(){if(!e.__open)return;const s=Math.min(o+a,i.length);if(o>=s)return void(e.__filled=!0);const l=document.createDocumentFragment();for(;oe(a)),o&&(o.style.display=""),s(a),h(()=>{try{ne(a,n.value)}catch(e){}}),h(()=>{const e=a.querySelector("ul");e&&e.querySelectorAll("li[data-value]").forEach(e=>{e.dataset.key||(e.dataset.key=(e.textContent||"").toLowerCase())})})})})},window.closeLangMenu=function(e){const t=e.querySelector(".lang-menu");t&&t.__open&&(t.__open=!1,t.setAttribute("aria-hidden","true"),t.classList.add("--vis-hide"),h(()=>{if(t.classList.remove("open"),t.__skelObs&&(t.__skelObs.disconnect(),t.__skelObs=null),t.__outside){const e=t.__outside;t.__outside=null,f?(document.removeEventListener("touchstart",e,!0),document.removeEventListener("click",e,!0)):document.removeEventListener("pointerdown",e,!0)}}))},window.toggleLangMenu=function(e,t){_devMode&&console.log("toggleLangMenu");(e.querySelector(".lang-menu")||buildLangMenu(e,t)).__open?closeLangMenu(e):openLangMenu(e,t)}}();const ie=e=>{const t=Number(e);return 1===t?"standard":6===t?"prohd":2===t||3===t||4===t||7===t?"pro":5===t?"studio":""};function ae(n,i,a){_devMode&&console.log(arguments.callee.name);const l={speed:a.speed??1,pitch:a.pitch??0,volume:a.volume??100,style:a.style||"",styledegree:a.styledegree??1,role:a.role||""},r=e(".uiRight .uiInner .uiBox",n);if(r){let e=r.querySelector(".backtolist");if(!e){e=document.createElement("span"),e.className="backtolist",e.title=t("buttons.backToListTitle","backToListTitle");const n=r.querySelector(".name");r.insertBefore(e,n||r.firstChild)}e.textContent=t("buttons.backToList","⇐ backToListTitle")}const d=e(".uiRight .uiInner .uiBox .name",n);if(d){i.mp3;const e=D(i);d.innerHTML=`\n \n ${i.name}\n \n \n `}const u=e(".voice-head",n);u&&!u.__wired&&(u.__wired=!0,u.addEventListener("click",()=>{i&&P(n,i)})),e(".button.save",n)?.addEventListener("click",()=>{i&&P(n,i)}),c.resync();const p=e(".uiRight .uiInner",n);if(!p)return;const v=e('select[name="speed"]',p);if(v){const e=[];for(let t=.1;tf.appendChild(new Option(t||e,e)));const t=e.map(e=>e.value);f.value=l.style&&t.includes(l.style)?l.style:"",h&&(h.style.display="")}else f.value="",h&&(h.style.display="none");y(f,b,S),f.__degWired||(f.addEventListener("change",()=>{y(f,b,S)}),f.__degWired=!0)}y(f,b,S),["speed","tone","volume","style","role"].forEach(t=>{const n=e(`select[name="${t}"]`,p);n&&n.setAttribute("data-custom","1")}),CustomSelectMgr.initIn(p);const w=e(".uiRight .uiInner .uiBox .sh2",n);if(w){let s=w.querySelector(".reset-link");s||(s=document.createElement("button"),s.type="button",s.className="reset-link",s.dataset.action="resetDefaults",w.appendChild(s)),s.textContent=t("buttons.resetDefaults","Reset to defaults");const i=()=>{(e=>{const t=e=>Number.isFinite(+e)?+e:0,n=(e,n)=>Math.abs(t(e)-t(n))e&&!e.__resetWired&&(e.__resetWired=!0),o=e('select[name="speed"]',p);a(o)&&o.addEventListener("change",()=>{i(),c.applyLive(B(n))});const l=e('select[name="tone"]',p);a(l)&&l.addEventListener("change",()=>{i(),c.applyLive(B(n))});const r=e('select[name="volume"]',p);a(r)&&r.addEventListener("change",()=>{i(),c.applyLive(B(n))});const d=e('select[name="style"]',p);a(d)&&d.addEventListener("change",()=>{i(),c.applyLive(B(n))});const u=e('input[name="styledegree"]',p);a(u)&&u.addEventListener("input",()=>{i(),c.applyLive(B(n))});const v=e('select[name="role"]',p);a(v)&&v.addEventListener("change",()=>{i(),c.applyLive(B(n))})}_(n,"price",function(e){let n="—",s="—";null!=e&&("number"==typeof e||"string"==typeof e?n=String(e):"object"==typeof e&&(n=e.perK??e.per1k??e.per1000??e.per??e.base??e.price??n,s=e.limits??e.limit??e.cap??e.subscription??e.extra??s));const i=t("pricing.perThousand","perThousand");return t("pricing.limits","limits"),`${t("pricing.caption","pricing")}\n \n ${n}\n ${i}\n `}(i?._base?.price??i?.price),`${t("tooltips.pricing","tooltips")}`,null);const L=t("titles.supported","supported:"),E=function(e){const t=window.SSML_TAGS?.[e],n=t?.tags;if(!n||"object"!=typeof n||!Object.keys(n).length)return"—";const s=["sub","say-as","break","prosody","emphasis","phoneme"],i=e=>String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,"""),a=(e,t)=>{const n=t&&t.attrs?Object.keys(t.attrs):[];if(!n.length)return[];const s={sub:["alias"],"say-as":["interpret-as"],break:["time","strength"],prosody:["volume","contour","rate","pitch"],emphasis:["level"],phoneme:["alphabet","ph"]}[e]||[],i=[];for(const e of s)n.includes(e)&&i.push(e);const a=n.filter(e=>!i.includes(e)).sort();return i.concat(a)},o=Object.keys(n),l=[...s.filter(e=>o.includes(e)),...o.filter(e=>!s.includes(e)).sort()];let r='';for(const e of l){const t=a(e,n[e]);if(r+='',r+=`<${i(e)}>`,r+='',t.length)for(const e of t)r+=`${i(e)}`;r+="",r+=""}return r+="",r}(i.api);_(n,"support",L,E,null);const k=t("tooltips.intonation","intonation"),A=t("tooltips.smartcache","smartcache"),x=!!window.SSML_TAGS?.[i.api]?.tags&&Object.keys(window.SSML_TAGS[i.api].tags).length>0,C=t("titles.intonation","intonation"),M=_(n,"intonation",C,`${t("labels.intonationDesc","intonationDesc")}`,null,k);M&&M.classList.toggle("yes",(e=>{const t=String(e?.api||"").toLowerCase(),n=Number(e?.api_id);return"microsoft"===t||2===n})(i));const q=t("titles.smartcache","Smart cache"),N=_(n,"smartcache",q,`${t("labels.smartcacheDesc","smartcacheDesc")}`,null,A);N&&N.classList.add("yes");const $=n.querySelector(".uiRight .uiInner .uiBox.uiBox-support");$&&$.classList.toggle("yes",x)}function oe(e,t){const s=se(e);if(!s)return;n(".active",s).forEach(e=>e.classList.remove("active"));const i=s.querySelector(`li[data-voice-id="${t}"]`);i&&i.classList.add("active")}function le(t){const n=e(".sortBox.gender .cheched input",t)?.value||"All",s=e(".sortBox.proshnost .cheched input",t)?.value||"All",i=e(".sortBox.styles .cheched input",t)?.value||"all",a=e(".sortBox.roles .cheched input",t)?.value||"all";return{gender:n.toLowerCase(),premium:s.toLowerCase(),styles:i.toLowerCase(),roles:a.toLowerCase(),intonation:(e(".sortBox.intonation .cheched input",t)?.value||"all").toLowerCase(),multilang:(e(".sortBox.multilang .cheched input",t)?.value||"all").toLowerCase()}}function re(e,t,n){return`${t}#${n}#${function(e){const t=le(e);return JSON.stringify([t.gender,t.premium,t.styles,t.roles,t.intonation,t.multilang])}(e)}`}function ce(e,t){_devMode&&console.log(arguments.callee.name);const n=e=>{const t=Number(e);return 1===t?"standard":6===t?"prohd":5===t?"studio":2===t||3===t||4===t||7===t?"pro":""},s=new Set(["30","31"]),i=new Set(["40","41"]);return e.filter(e=>{if("studio"===n(e.type))return!1;const a=String(e.sex??"");let o=!0;switch(t.gender){case"male":o="1"===a;break;case"female":o="0"===a;break;case"neutral":o="2"===a;break;case"kids":o=s.has(a);break;case"old":o=i.has(a)}let l=!0;const r=n(e.type);"standard"===t.premium?l="standard"===r:"pro"===t.premium?l="pro"===r:"prohd"===t.premium&&(l="prohd"===r);let c=!0;"with"===t.styles&&(c=j(e).length>0);let d=!0;"with"===t.roles&&(d=R(e).length>0);let u=!0;if("with"===t.intonation){const t=String(e.api||"").toLowerCase(),n=Number(e.api_id);u="microsoft"===t||2===n}let p=!0;return"with"===t.multilang&&(p=1===Number(e.ml)||!0===e.ml||"1"===e.ml),o&&l&&c&&d&&u&&p})}function de(e){const t=e.dataset||{};return{speed:Number.isFinite(+t.speed)?+t.speed:1,pitch:Number.isFinite(+t.pitch)?+t.pitch:0,volume:Number.isFinite(+t.volume)?+t.volume:100,style:t.style||"",styledegree:Number.isFinite(+t.styledegree)?+t.styledegree:1,role:t.role||""}}function ue(n,s,i){const o=n.dataset.lang||X(n),l=i.lang||o,r=n.dataset.voiceId||"",c=i.voice??i.voiceName??"";if("speaker_100"===n.id&&l&&o&&l!==o){const e=document.getElementById("mytextarea");if(e){window.langArrText=window.langArrText||{},window.langArrText[o]=e.value;let t=window.langArrText[l];if(void 0===t){const e=window.VOICES_BY_LANG&&window.VOICES_BY_LANG[l]?window.VOICES_BY_LANG[l]:null;t=e&&"string"==typeof e.text?e.text:"",window.langArrText[l]=t}e.value=String(t),Array.isArray(window.editDataStack)&&window.editDataStack.push(e.value),"function"==typeof setDir&&setDir(l,e)}}const d=String(r)!==String(i.voiceId)||String(o)!==String(i.lang);if(e(".uiName span",n)?.replaceChildren(document.createTextNode(c)),d){const t=V(n,i)||null;t&&null!=t.sex&&(n.dataset.sex=String(t.sex)),t&&null!=t.pro&&(n.dataset.pro=t.pro?"1":"0"),t&&null!=t.type&&(n.dataset.type=String(t.type));const s={name:i.voice||i.voiceName||"",sex:t&&null!=t.sex?t.sex:n.dataset.sex??"",pro:t&&null!=t.pro?!!t.pro:"1"===n.dataset.pro,type:t&&null!=t.type?t.type:n.dataset.type||""},a=e(".uiName",n);a&&function(e,t){if(!e)return;const n=e.dataset.iconClass||"";n&&e.classList.remove(n);const s=D(t);s?(e.classList.add(s),e.dataset.iconClass=s):delete e.dataset.iconClass}(a,s)}const u=e(".uiFlag",n);if(u){u.dataset.value=i.lang;const t=U(i.lang);e(".text",u)?.replaceChildren(document.createTextNode(t?.lang||i.lang))}const p=function(e,t,n){const s=String(t||"");if(!s)return"";const i={lang:e?.dataset?.lang||X(e),voiceId:e?.dataset?.voiceId||"",voice:e?.dataset?.voice||""},a=j(n||V(e,i)||{}).find(e=>String(e.value)===s);return a?a.label||a.value:s}(n,i.style);let v=i.styleName||i.stylename||p||"";i.style||(v="");const m=N(n);if(m){q(m,"speed",t("labels.speedShort","speed"),(g=i.speed,(Math.round(10*g)/10).toFixed(1))),q(m,"pitch",t("labels.pitchShort","pitch"),a(i.pitch)),q(m,"volume",t("labels.volumeShort","vol"),`${i.volume}%`),n.dataset.stylename=v,q(m,"style",t("labels.styles","style"),function(e,t){const n=parseFloat(t),s=!Number.isFinite(n)||Math.abs(n-1)0:null;m.dataset.hasDegree="0",!0===s?(m.dataset.hasStyle="1","microsoft"===String(e.api).toLowerCase()&&(m.dataset.hasDegree="1")):!1===s&&(m.dataset.hasStyle="0")}var g;n.dataset.lang=i.lang,n.dataset.voiceId=i.voiceId,n.dataset.voice=c,n.dataset.api=i.api||"",n.dataset.apiId=i.apiId||"",n.dataset.speed=i.speed,n.dataset.pitch=i.pitch,n.dataset.volume=i.volume,n.dataset.style=i.style||"",n.dataset.stylename=v,n.dataset.styledegree=i.styledegree??"",n.dataset.role=i.role||"",n.dataset.price=i.price??"";let y=n.querySelector('input[type="hidden"][name$="_json"]');y||(y=document.createElement("input"),y.type="hidden",y.name=`${n.id}_json`,n.appendChild(y));const f={...i,voice:c,voiceId:i.voiceId,styleName:v};delete f.voiceName,y.value=JSON.stringify(f),"speaker_100"===n.id&&H(),n.dispatchEvent(new CustomEvent("speaker:changed",{detail:f})),s&&pe(s)}function pe(e){if(!e)return;if(e.__closing)return;e.__closing=!0,ye.cancel(e),e.classList.remove("open"),e.setAttribute("aria-hidden","true"),e.hidden=!0,document.body.classList.remove("overlayed");try{c.stopInside(e)}catch(e){}try{stopAllInlinePlayers?.(e)}catch(e){}(window.requestIdleCallback||(e=>setTimeout(e,0)))(()=>{const t=e.querySelector(".uiBody");t&&t.classList.remove("slider2");const n=e.querySelector(".uiVlist .voices-full");n&&n.querySelectorAll(".active").forEach(e=>e.classList.remove("active"));const s=e.querySelector(".uiVlist .voices-fav");s&&s.querySelectorAll(".active").forEach(e=>e.classList.remove("active")),e.__closing=!1})}function ve(s){console.log(arguments.callee.name);const a=e(".bigVoicesWindow",s);if(!a)return;const o=J(s);o.lang||X(s);let p=null,m=null,g={speed:1,pitch:0,volume:100,style:"",styledegree:1,role:""};g={...g,...void 0!==o.speed?{speed:o.speed}:{},...void 0!==o.pitch?{pitch:o.pitch}:{},...void 0!==o.volume?{volume:o.volume}:{},...void 0!==o.style?{style:o.style}:{},...void 0!==o.styledegree?{styledegree:o.styledegree}:{},...void 0!==o.role?{role:o.role}:{}};const y=(e,t,n=1e-6)=>{const s=+e,i=+t;return Number.isFinite(s)&&Number.isFinite(i)?Math.abs(s-i)null==e?"":String(e);async function b(n,s=null){const i=(await Z.voicesByLang(n)).voices||[];_e(a,i),fe(a,i);let o=ce(i,le(a));o=C(o,x(a)),he(a,o),Se(a,o,s,M(a));let l=s&&o.find(e=>String(e.id)===String(s))?o.find(e=>String(e.id)===String(s)):o[0];if(l){p={...l,lang:n},oe(a,l.id);const e={...g},t=j(l).map(e=>e.value);e.style&&!t.includes(e.style)&&(e.style="");{const t=R(l);e.role&&t.includes(e.role)||(e.role="")}"microsoft"!==l.api&&(e.styledegree=1),g=e,ae(a,l,g)}const r=e(".voicesTitle",a);if(r){U(n);r.textContent=`${t("titles.fullVoicesList","Full Voices List")}:`}a.__contentReady=!0}function _(t,s=!1){const i=e(".voice-search",t);i&&!s&&(i.value=""),n(".sortBox",t).forEach(e=>{const t=e.querySelector('input[value="All"], input[value="all"]');t&&(n(".sortBox li",e).forEach(e=>e.classList.remove("cheched")),t.closest("li")?.classList.add("cheched"))})}function w(e=null){console.log("rerenderWithCurrentFilters");const t=O(a,s),n=Y[t];if(!n||!Array.isArray(n.voices))return void b(t,e);const i=n.voices||[];let o=ce(i,le(a));o=C(o,x(a)),function(e,t,n){fe(e,Array.isArray(t)?t:[]),Array.isArray(n)&&n.length>0&&he(e,n)}(a,i,o),Se(a,o,e,M(a));let l=e&&o.find(t=>String(t.id)===String(e))?o.find(t=>String(t.id)===String(e)):o[0];if(l){const e=O(a,s);p={...l,lang:e},oe(a,l.id);const t={...g},n=j(l).map(e=>e.value);t.style&&!n.includes(t.style)&&(t.style="");{const e=R(l);t.role&&e.includes(t.role)||(t.role="")}"microsoft"!==l.api&&(t.styledegree=1),g=t,ae(a,l,g)}a.__contentReady=!0}a.addEventListener("click",e=>{e.target.closest('[data-action="resetFilters"]')&&(_(a),E(p?.id)),e.target.closest('[data-action="resetFiltersOnly"]')&&(_(a,!0),E(p?.id))}),a.addEventListener("click",e=>{e.target.closest('[data-action="resetDefaults"]')&&(g={speed:1,pitch:0,volume:100,style:"",styledegree:1,role:""},ae(a,p||{},g),c.applyLive(B(a)))});let L=0;function E(e=p?.id){L&&cancelAnimationFrame(L),L=requestAnimationFrame(()=>{L=0,w(e)})}(e(".speaker_button",s)||s).addEventListener("click",async o=>{if(o.target.closest(".uiVoiceButts"))return;if(o.target.closest(".uiMarkers"))return;if(o.target.closest(".quick-popover"))return;a.__hasSkeleton||(!function(n){_devMode&&console.log(arguments.callee.name);const s=e(".inList",n)||n;e('select[name="lang"]',s)&&e(".uiVlist",s)&&e(".uiRight .uiInner",s)||(s.innerHTML=`\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ${t("filters.gender.all","All")}\n ${t("filters.gender.male","Male")} \n ${t("filters.gender.female","Female")} \n ${t("filters.gender.kids","Kids")}\n ${t("filters.gender.old","Old")} \n ${t("filters.gender.neutral","Neutral")}\n \n \n \n \n \n ${t("filters.premium.all","All")}\n ${t("filters.premium.standard","Standard")}\n \n \n ${t("filters.premium.pro","Pro")}\n \n ${t("filters.premium.prohd","Pro HD")}\n \n \n \n \n ${t("filters.gender.all","All")}\n ${t("filters.styles.with","With styles")} \n \n \n \n \n ${t("filters.intonation.all","All")}\n ${t("filters.intonation.with","intonation")} \n \n \n \n \n ${t("filters.intonation.all","All")}\n ${t("filters.multy.with","multilang")} \n \n \n \n ${t("filters.acceptall","accept")}\n \n \n ${t("buttons.resetFilters","Reset filters")}\n \n \n \n\n \n \n \n \n \n 0\n \n \n ${t("labels.favorite","Favorite")} 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n
  • [H2] ${t("titles.settings","Settings:")}
  • [H3] Enceladus
  • [H3] Noreen
  • [H3] Achernar
  • [H3] Christopher
  • [H3] Sara
  • [H3] Truman
  • [H3] Aoede
  • [H3] Pulcherrima
  • [H3] Type or paste your text
  • [H3] Choose a voice & language
  • [H3] Convert Text to MP3, WAV, or FLAC
  • [H3] Need an AI voiceover — without a voice actor
  • [H3] Teach at scale — without being in every classroom
  • [H3] People call — and nobody picks up
  • [H3] Visitors stand before the exhibit — and don't know what they're looking at
  • [H3] Workers on the floor don't read safety briefs
  • [H3] Selling abroad — without hiring a local narrator
  • [H3] Smart Cache — re-generate for free
  • [H3] Upload a book, get a file per chapter
  • [H3] Complete audio production in one tab
  • [H3] Multiple speakers, one file
  • [H3] Control every pause, stress, and pitch
  • [H3] Audition 5,000+ voices before spending a character
  • [H3] SRT / VTT to Synced Audio
  • [H3] SpeechGen vs Typical TTS Service
  • [H3] Standard
  • [H3] Pro
  • [H3] HD
  • [H3] "+setArr.soundins_sel_sound+"
  • [H3] ${$(t)}
  • [H4] '+setArr.soundins_cats+'

Kuvat

Emme löytäneet 72 yhtään kuvia tältä sivustolta.

59 Alt-attribuutit on tyhjiä tai poistettu. Lisää vaihtoehtoista tekstiä niin, että hakukoneet ymmärtävät paremmin kuvatesi sisällön.

Kirjain/HTML suhde

Suhde : 8%

Tämän sivun / sivujen suhde teksti -> HTML on vähemmäinkuin 15 prosenttia, tämä tarkoittaa sitä, että luultavasti tulee tarvitsemaan lisää teksti sisältöä.

Flash

Täydellistä!, Flash-sisältöä ei ole havaittu tällä sivulla.

html-dokumentti sivun sisälle (Iframe)

Hienoa, Tällä sivulla ei ole Iframeja.

URL- Uudelleenkirjoitus

Hyvä. Sinun linkkisi näyttävät puhtailta!

Alleviivaa URL-osoitteet

Täydellistä! URL-osoitteissasi ei ole merkintöjä.

Sivun linkit

Löysimme yhteensä 27 linkit jotka sisältää 0 linkit tiedostoihin

Ankkuri Tyyppi Mehu
Skip to editor Sisäinen Antaa mehua
Text to Speech Sisäinen Antaa mehua
AI Voices Sisäinen Antaa mehua
Subtitles to Audio Sisäinen Antaa mehua
API Sisäinen Antaa mehua
Audio to Text Sisäinen Antaa mehua
YT Transcribe Sisäinen Antaa mehua
Video to Text Sisäinen Antaa mehua
FAQ Sisäinen Antaa mehua
Pricing Sisäinen Antaa mehua
Log in Sisäinen Antaa mehua
History Sisäinen Antaa mehua
Saved Audios Sisäinen Antaa mehua
Scary & Horror Sisäinen Antaa mehua
Child TTS Sisäinen Antaa mehua
Brian Voice Sisäinen Antaa mehua
Speechgen_alex Ulkoinen Antaa mehua
Docx to Speech Sisäinen Antaa mehua
Pdf to Speech Sisäinen Antaa mehua
Blog Sisäinen Antaa mehua
Сontact Sisäinen Antaa mehua
Telegram Group Ulkoinen älä seuraa
Telegram Chat Ulkoinen älä seuraa
GitHub Ulkoinen älä seuraa
Privacy Sisäinen Antaa mehua
DMCA Sisäinen Antaa mehua
reCAPTCHA Ulkoinen Antaa mehua

SEO avainsanat

Avainsana pilvi

speechgen voices free characters speech audio file text voice sec

Avainsanojen johdonmukaisuus

Avainsana Sisältö Otsikko Avainsanat Kuvaus Otsikot
text 28
sec 20
audio 18
speech 17
voice 16

Käytettävyys

Url

Sivusto : speechgen.io

Pituus : 12

Pikkukuva (favicon)

Hienoa, sinun sivulla on favicon (pikakuvake).

Tulostettavuus

Hienoa. Olemme löytäneet tulostusystävällisen CSS:n.

Kieli

Hyvä. Ilmoitettu kieli on en.

Metatietosanastostandardi informaatio (DC)

Tämä sivu ei käytä hyödyksi (DublinCore =DC) metatietosanastostandardi informaatiokuvausta.

Dokumentti

(dokumenttityyppi); Merkistökoodaus

HTML 5

Koodaus/tietojenkäsittely

Täydellistä. Ilmoitettu asiakirjan merkkijono on UTF-8.

W3C Voimassaolo

Virheet : 0

Varoitukset : 0

Sähköpostin yksityisyys

Varoitus! Ainakin yksi sähköpostiosoite on löytynyt tavallisesta tekstistä. Käytä tätä ilmaista antispam suojausta piilottaaksesi sähköpostiosoitteet spämmereiltä.

HTML Epäonnistui

Hienoa! Emme ole löytäneet vanhentuneita HTML-tunnisteita HTML-koodistasi.

Nopeus neuvot

Erinomaista, verkkosivustosi ei käytä sisäkkäisiä taulukoita.
Harmillista, Sivustosi käyttää sisäisiä tyylejä.
Hienoa, Sivustossasi on muutamia CSS-tiedostoja.
Perfect, sivustossasi on muutamia JavaScript-tiedostoja.
Täydellistä, Sivustosi hyödyntää gzipia.

Mobiili

Mobiili optimointi

Apple-kuvake
Meta Viewport -tunniste
Flash sisältö

Optimoi

XML Sivukartta

Hienoa, sivustossasi on XML-sivukartta.

https://speechgen.io/index.php?r=site/sitemap

Robots.txt

https://speechgen.io/robots.txt

Hienoa, sivustossasi on robots.txt-tiedosto.

Analyysit

Puuttuu

Emme tunnistaneet tällä sivustolla asennettua analytiikkatyökalua.

Web-analyysilla voit mitata kävijän toimintaa verkkosivustollasi. Sinulla on oltava vähintään yksi analytiikkatyökalu, mutta voi myös olla hyvä asentaa toinen tietojen tarkistamiseen soveltuva työkalu.

Sivuston nopeus


Laite
Luokat

Free SEO Testing Tool

Free SEO Testing Tool On ilmainen SEO työkalu, joka auttaa sinua analysoimaan Web-sivusi