PageSourceSearch

https://www.framecompose.com/_next/static/chunks/7772.9b02e4f4aa105f6d.js

js framecompose.com collected 2026-09-24 14:45:20 UTC 8,522 bytes, 1 lines download raw bytes

1!function(){try{var e="u">typeof window?window:"u">typeof global?global:"u">typeof globalThis?globalThis:"u">typeof self?self:{},r=(new e.Error).stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="0eed81b2-5406-4efd-8916-cd924c6f70e0",e._sentryDebugIdIdentifier="sentry-dbid-0eed81b2-5406-4efd-8916-cd924c6f70e0")}catch(e){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2602,5391,7772],{45391:(e,r,t)=>{t.r(r),t.d(r,{KOKORO_DEVICE_STORAGE_KEY:()=>f,KOKORO_VOICES:()=>a,generateSpeech:()=>B,generateSpeechUrl:()=>F,getDevice:()=>p,getLoadProgress:()=>T,getTTSError:()=>E,isTTSLoaded:()=>S,isTTSLoading:()=>_,isWebGPUAvailable:()=>v,loadTTS:()=>O,onLoadProgress:()=>N,preloadTTS:()=>P,setDevice:()=>h});var o=t(92602);let a=[{voice_id:"af_heart",name:"Heart (Female)"},{voice_id:"af_bella",name:"Bella (Female)"},{voice_id:"af_nicole",name:"Nicole (Female)"},{voice_id:"af_sarah",name:"Sarah (Female)"},{voice_id:"af_sky",name:"Sky (Female)"},{voice_id:"am_adam",name:"Adam (Male)"},{voice_id:"am_michael",name:"Michael (Male)"},{voice_id:"bf_emma",name:"Emma (British Female)"},{voice_id:"bf_isabella",name:"Isabella (British Female)"},{voice_id:"bm_george",name:"George (British Male)"},{voice_id:"bm_lewis",name:"Lewis (British Male)"}],n=null,i=!1,l=0,s=null,c=[],u=!1,d=null,f="tts_device_kokoro",m=null;function w(){return null===m&&(m=(0,o.yH)(f,"cpu")),m}function p(){return w()}function h(e){let r="gpu"===e?"gpu":"cpu";w()!==r&&(m=r,(0,o.Tk)(f,r),n=null,l=0,s=null)}let y="https://cdn.jsdelivr.net/npm/[email protected]/dist/",b=`${y}ort.all.min.js`;async function g(){if(u)return;console.log("[BrowserTTS] Configuring ONNX runtime from CDN..."),await (d||("u"<typeof document?Promise.resolve():d=new Promise((e,r)=>{let t=document.querySelector(`script[src="${b}"]`);if(t)return void("true"===t.getAttribute("data-ort-loaded")?e():(t.addEventListener("load",()=>e(),{once:!0}),t.addEventListener("error",()=>r(Error("Failed to load ONNX runtime script")),{once:!0})));let o=document.createElement("script");o.src=b,o.async=!0,o.setAttribute("data-ort-script","true"),o.onload=()=>{o.setAttribute("data-ort-loaded","true"),e()},o.onerror=()=>r(Error("Failed to load ONNX runtime script")),document.head.appendChild(o)})));let e=window;if(!e.ort)throw Error("ONNX runtime did not initialize. ort global missing after CDN load.");let r=e.ort.env;if(!r)throw Error("ONNX runtime env not available after CDN load.");r.wasm=r.wasm||{wasmPaths:y,numThreads:1,proxy:!1},r.wasm.wasmPaths=y,r.wasm.numThreads=1,r.wasm.proxy=!1,console.log("[BrowserTTS] ONNX runtime configured with WASM paths:",y),u=!0}function v(){return"u">typeof navigator&&"gpu"in navigator}function T(){return l}function S(){return null!==n}function _(){return i}function E(){return s}function N(e){return c.push(e),()=>{c=c.filter(r=>r!==e)}}function k(e){l=e,c.forEach(r=>r(e))}async function O(){if(n)return n;if(i)return new Promise((e,r)=>{let t=setInterval(()=>{n?(clearInterval(t),e(n)):s&&(clearInterval(t),r(Error(s)))},100)});i=!0,s=null,k(0);try{console.log("[BrowserTTS] Loading Kokoro TTS model..."),await g(),function(){let e=globalThis,r=e.process,t=r&&"object"==typeof r&&"object"==typeof r.env?r.env:{},o=r&&"object"==typeof r?{...r,env:t||{}}:{env:{}};try{Object.defineProperty(e,"process",{value:o,writable:!0,configurable:!0,enumerable:!0});return}catch{}if(r&&"object"==typeof r)try{Object.defineProperty(r,"env",{value:t||{},writable:!0,configurable:!0,enumerable:!0})}catch{}}(),k(5);let e=(0,o.W3)();if("unavailable"===e)throw Error("This browser cannot stream the local Kokoro speech model safely.");let r=await Promise.all([t.e(2373),t.e(4565),t.e(9304),t.e(7012),t.e(5562)]).then(t.bind(t,34641)),a=r.KokoroTTS||r.default?.KokoroTTS;if(!a)throw Error("Failed to import KokoroTTS - module structure unexpected");k(10);try{let e=await Promise.all([t.e(4803),t.e(6669),t.e(359)]).then(t.bind(t,49868)),r=e.env||e.default?.env;r?.backends?.onnx?.wasm&&(r.backends.onnx.wasm.numThreads=1,r.backends.onnx.wasm.proxy=!1,r.backends.onnx.wasm.wasmPaths=y,console.log("[BrowserTTS] Transformers env configured"))}catch(e){console.warn("[BrowserTTS] Could not configure transformers env:",e)}k(20);let i=(0,o.hd)(w()),l="webgpu"===i?"fp32":"q8";console.log(`[BrowserTTS] Using device: ${i} (dtype=${l})`);let s="onnx-community/Kokoro-82M-v1.0-ONNX";console.log(`[BrowserTTS] Loading model: ${s}`);try{n=await a.from_pretrained(s,{dtype:l,device:i})}catch(e){if("webgpu"===i)console.warn("[BrowserTTS] WebGPU load failed, falling back to CPU/WASM:",e),i="wasm",l="q8",n=await a.from_pretrained(s,{dtype:l,device:i});else throw e}return k(100),console.log("[BrowserTTS] Kokoro TTS model loaded successfully"),n}catch(e){throw s=e instanceof Error?e.message:"Failed to load TTS model",console.error("[BrowserTTS] Error loading model:",e),console.error("[BrowserTTS] Full error:",JSON.stringify(e,Object.getOwnPropertyNames(e))),e}finally{i=!1}}async function B(e,r="af_heart"){let t,o;
1if(!e.trim())throw Error("Text cannot be empty");let a=await O();console.log(`[BrowserTTS] Generating speech: "${e.substring(0,50)}..." with voice ${r}`);try{t=await a.generate(e,{voice:r})}catch(e){throw console.error("[BrowserTTS] Generation failed:",e),Error(`TTS generation failed: ${e instanceof Error?e.message:String(e)}`)}try{o=await t.toBlob()}catch(e){throw console.error("[BrowserTTS] Audio encoding failed:",e),Error(`Unable to encode audio output: ${e instanceof Error?e.message:String(e)}`)}if(!o.size)throw Error("TTS produced empty audio output");return console.log(`[BrowserTTS] Generated audio: ${(o.size/1024).toFixed(1)}KB`),o}async function F(e,r="af_heart"){let t=await B(e,r);return URL.createObjectURL(t)}function P(){n||i||O().catch(e=>{console.warn("[BrowserTTS] Background preload failed:",e)})}},92602:(e,r,t)=>{function o(){if("u"<typeof ReadableStream||"u"<typeof Symbol||void 0===Symbol.asyncIterator)return"unavailable";let e=ReadableStream.prototype;if("function"==typeof e[Symbol.asyncIterator])return"native";if("function"!=typeof e.getReader)return"unavailable";try{return Object.defineProperty(ReadableStream.prototype,Symbol.asyncIterator,{value:function(){let e=this.getReader(),r=!1,t=!1,o=()=>{t||(t=!0,e.releaseLock())};return{async next(){if(r)return{done:!0,value:void 0};try{let t=await e.read();if(t.done)return r=!0,o(),{done:!0,value:void 0};return{done:!1,value:t.value}}catch(e){throw r=!0,o(),e}},async return(t){if(!r){r=!0;try{await e.cancel()}finally{o()}}return{done:!0,value:t}},async throw(t){if(!r){r=!0;try{await e.cancel(t)}finally{o()}}throw t},[Symbol.asyncIterator](){return this}}},configurable:!0,writable:!0}),"polyfilled"}catch{return"unavailable"}}t.d(r,{Tk:()=>u,W3:()=>o,cF:()=>i,dx:()=>l,hd:()=>s,oR:()=>f,yH:()=>c});let a="https://cdn.jsdelivr.net/npm/[email protected]/dist/",n=`${a}ort.all.min.js`;function i(){return"u">typeof navigator&&"gpu"in navigator}async function l(){if(!i())return{supported:!1,shaderF16:!1};try{let e=await navigator.gpu.requestAdapter();if(!e)return{supported:!1,shaderF16:!1};let r=e.features?.has?.("shader-f16")===!0;return{supported:!0,shaderF16:r}}catch{return{supported:!1,shaderF16:!1}}}function s(e){return"gpu"===e&&i()?"webgpu":"wasm"}function c(e,r="cpu"){try{let r=window.localStorage.getItem(e);if("cpu"===r||"gpu"===r)return r}catch{}return r}function u(e,r){try{window.localStorage.setItem(e,r)}catch{}}let d=null;async function f(){await (d||("u"<typeof document?Promise.resolve():d=new Promise((e,r)=>{let t=document.querySelector(`script[src="${n}"]`);if(t)return void("true"===t.getAttribute("data-ort-loaded")?e():(t.addEventListener("load",()=>e(),{once:!0}),t.addEventListener("error",()=>r(Error("Failed to load ONNX runtime script")),{once:!0})));let o=document.createElement("script");o.src=n,o.async=!0,o.setAttribute("data-ort-script","true"),o.onload=()=>{o.setAttribute("data-ort-loaded","true"),e()},o.onerror=()=>r(Error("Failed to load ONNX runtime script")),document.head.appendChild(o)})));let e=globalThis.ort;if(!e)throw Error("onnxruntime-web global (ort) was not found after loading the CDN script");try{var r,t;e.env?.wasm&&(e.env.wasm.wasmPaths=a,e.env.wasm.numThreads=(r="u">typeof self&&!0===self.crossOriginIsolated,t="u">typeof navigator?navigator.hardwareConcurrency:void 0,r?Math.min(4,Math.max(1,"number"==typeof t&&Number.isFinite(t)?Math.floor(t):1)):1),e.env.wasm.proxy=!1)}catch{}return e}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.