speechgen.io

Evaluation du site speechgen.io

Realistic Text to Speech converter & AI Voice generator

 Généré le 11 Avril 2026 02:41

Vieilles statistiques? UPDATE !

Le score est de 66/100

Optimisation du contenu

Titre

Realistic Text to Speech converter & AI Voice generator

Longueur : 55

Parfait, votre titre contient entre 10 et 70 caractères.

Description

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

Longueur : 133

Génial, votre balise META description contient entre 70 et 160 caractères.

Mots-clefs

Très mauvais. Nous n'avons pas trouvé de balise META keywords sur votre page. Utilisez ce générateur gratuit de balises META en ligne pour créer des mots-clés.

Propriétés Open Graph

Bien, cette page profite des balises META Open Graph.

Propriété Contenu
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

Niveaux de titre

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

Images

Nous avons trouvé 72 image(s) sur cette page Web.

59 attribut(s) alt sont vides ou manquants. Ajouter un texte alternatif permet aux moteurs de recherche de mieux comprendre le contenu de vos images.

Ratio texte/HTML

Ratio : 8%

le ratio de cette page texte/HTML est au-dessous de 15 pour cent, ce qui signifie que votre site manque de contenu textuel.

Flash

Parfait, aucun contenu FLASH n'a été détecté sur cette page.

Iframe

Génial, il n'y a pas d'Iframes détectés sur cette page.

Réécriture d'URLs

Bien. Vos liens sont optimisés!

Tiret bas dans les URLs

Parfait! Aucuns soulignements détectés dans vos URLs.

Liens dans la page

Nous avons trouvé un total de 27 lien(s) dont 0 lien(s) vers des fichiers

Texte d'ancre Type Juice
Skip to editor Interne Passing Juice
Text to Speech Interne Passing Juice
AI Voices Interne Passing Juice
Subtitles to Audio Interne Passing Juice
API Interne Passing Juice
Audio to Text Interne Passing Juice
YT Transcribe Interne Passing Juice
Video to Text Interne Passing Juice
FAQ Interne Passing Juice
Pricing Interne Passing Juice
Log in Interne Passing Juice
History Interne Passing Juice
Saved Audios Interne Passing Juice
Scary & Horror Interne Passing Juice
Child TTS Interne Passing Juice
Brian Voice Interne Passing Juice
Speechgen_alex Externe Passing Juice
Docx to Speech Interne Passing Juice
Pdf to Speech Interne Passing Juice
Blog Interne Passing Juice
Сontact Interne Passing Juice
Telegram Group Externe noFollow
Telegram Chat Externe noFollow
GitHub Externe noFollow
Privacy Interne Passing Juice
DMCA Interne Passing Juice
reCAPTCHA Externe Passing Juice

Mots-clefs

Nuage de mots-clefs

characters voices audio file speechgen text free voice speech sec

Cohérence des mots-clefs

Mot-clef Contenu Titre Mots-clefs Description Niveaux de titre
text 28
sec 20
audio 18
speech 17
voice 16

Ergonomie

Url

Domaine : speechgen.io

Longueur : 12

Favicon

Génial, votre site web dispose d'un favicon.

Imprimabilité

Génial. L'impression est optimisée grâce aux styles CSS.

Langue

Bien. Votre langue est : en.

Dublin Core

Cette page ne profite pas des métadonnées Dublin Core.

Document

Doctype

HTML 5

Encodage

Parfait. Votre charset est UTF-8.

Validité W3C

Erreurs : 0

Avertissements : 0

E-mail confidentialité

Attention! Au moins une adresse e-mail a été trouvée en texte clair. Utilisez une protection anti-spam gratuite pour cacher vos e-mails aux spammeurs.

HTML obsolètes

Génial! Nous n'avons pas trouvé de balises HTML obsolètes dans votre code.

Astuces vitesse

Excellent, votre site n'utilise pas de tableaux imbriqués.
Mauvais, votre site web utilise des styles css inline.
Génial, votre site web contient peu de fichiers CSS.
Parfait, votre site web contient peu de fichiers javascript.
Parfait : votre site tire parti de gzip.

Mobile

Optimisation mobile

Icône Apple
Méta tags viewport
Contenu FLASH

Optimisation

Sitemap XML

Votre site web dispose d’une sitemap XML, ce qui est optimal.

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

Robots.txt

https://speechgen.io/robots.txt

Votre site dispose d’un fichier robots.txt, ce qui est optimal.

Mesures d'audience

Manquant

Nous n'avons trouvé aucun outil d'analytics sur ce site.

Un outil de mesure d'audience vous permet d'analyser l’activité des visiteurs sur votre site. Vous devriez installer au moins un outil Analytics. Il est souvent utile d’en rajouter un second, afin de confirmer les résultats du premier.

PageSpeed Insights


Dispositif
Les catégories

Free SEO Testing Tool

Free SEO Testing Tool est un outil gratuit de référencement qui vous aidera à analyser vos pages web