speechgen.io

Avaliação do site speechgen.io

Realistic Text to Speech converter & AI Voice generator

 Gerado a 11 de Abril de 2026 02:41 AM

Estatísticas desatualizadas? ATUALIZE !

O resultado é de 66/100

Conteúdo SEO

Título

Realistic Text to Speech converter & AI Voice generator

Cumprimento : 55

Perfeito, o Título contém entre 10 e 70 caracteres.

Descrição

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

Cumprimento : 133

Perfeito, a Descrição META contém entre 70 e 160 caracteres.

Palavras-chave

Mau. Não detetámos palavras-chave META na sua página.

Propriedades Og Meta

Boa! Esta página tira vantagens das propriedades Og.

Propriedade Conteúdo
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

Cabeçalhos

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+'

Imagens

Encontrámos 72 imagens nesta página.

59 atributos ALT estão vazios ou em falta. É recomendado adicionar texto alternativo de modo a que os motores de busca identifiquem melhor o conteúdo das suas imagens.

Rácio Texto/HTML

Rácio : 8%

O rácio de texto para código HTML desta página é menor que 15 porcento, o que significa que provavelmente é necessário de adicionar mais conteúdos em forma de texto.

Flash

Perfeito, não foi encontrado conteúdo Flash nesta página.

Iframe

Excelente, não foram detetadas Iframes nesta página.

Reescrita de URL

Perfeito. As ligações aparentam ser limpas!

Underscores (traços inferiores) nas URLs

Perfeito. Não foram encontrados 'underscores' (traços inferiores) nas suas URLs.

Ligações para a própria página

Encontrámos um total de 27 ligações incluindo 0 ligações a ficheiros

Âncoras Tipo Sumo
Skip to editor Internas Passa sumo
Text to Speech Internas Passa sumo
AI Voices Internas Passa sumo
Subtitles to Audio Internas Passa sumo
API Internas Passa sumo
Audio to Text Internas Passa sumo
YT Transcribe Internas Passa sumo
Video to Text Internas Passa sumo
FAQ Internas Passa sumo
Pricing Internas Passa sumo
Log in Internas Passa sumo
History Internas Passa sumo
Saved Audios Internas Passa sumo
Scary & Horror Internas Passa sumo
Child TTS Internas Passa sumo
Brian Voice Internas Passa sumo
Speechgen_alex Externas Passa sumo
Docx to Speech Internas Passa sumo
Pdf to Speech Internas Passa sumo
Blog Internas Passa sumo
Сontact Internas Passa sumo
Telegram Group Externas noFollow
Telegram Chat Externas noFollow
GitHub Externas noFollow
Privacy Internas Passa sumo
DMCA Internas Passa sumo
reCAPTCHA Externas Passa sumo

Palavras-chave SEO

Núvem de palavras-chave

voices speechgen voice free characters text audio file sec speech

Consistência das Palavras-chave

Palavra-chave Conteúdo Título Palavras-chave Descrição Cabeçalhos
text 28
sec 20
audio 18
speech 17
voice 16

Usabilidade

Url

Domínio : speechgen.io

Cumprimento : 12

Favicon

Ótimo, o site tem um favicon.

Facilidade de Impressão

Fantástico. Encontrámos CSS apropriado para impressão.

Língua

Otimo! A língua declarada deste site é en.

Dublin Core

Esta página não tira vantagens do Dublin Core.

Documento

Tipo de Documento

HTML 5

Codificação

Perfeito. O conjunto de caracteres UTF-8 está declarado.

Validação W3C

Erros : 0

Avisos : 0

Privacidade do Email

Aviso! No mínimo, foi encontrado um endereço de email sob a forma de texto. Isto é um convite para que spammers entupam a caixa de correio deste endereço.

HTML obsoleto

Fantástico! Não detetámos etiquetas HTML obsoletas.

Dicas de Velocidade

Excelente, este site não usa tablelas dentro de tabelas.
Oh não, o site usa estilos CSS nas etiquetas HTML.
Boa, o site usa poucos ficheiros CSS.
Perfeito, o site usa poucos ficheiros JavaScript.
Perfeito, o site tira vantagens da compressão gzip.

Dispositivos Móveis

Otimização para dispositivos móveis

Icon Apple
Meta Viewport Tag
Conteúdo Flash

Otimização

XML Sitemap

Perfeito, o site tem um mapa XML do site (sitemap).

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

Robots.txt

https://speechgen.io/robots.txt

Perfeito, o seu site tem um ficheiro robots.txt.

Analytics

Em falta

Não detetámos nenhuma ferramenta analítica de análise de atividade.

Este tipo de ferramentas (como por exemplo o Google Analytics) permite perceber o comportamento dos visitantes e o tipo de atividade que fazem. No mínimo, uma ferramenta deve estar instalada, sendo que em algumas situações mais do que uma pode ser útil.

PageSpeed Insights


Dispositivo
Categorias

Free SEO Testing Tool

Free SEO Testing Tool é uma ferramenta gratuita que o ajuda a avaliar o seu site