PageSourceSearch

https://murf.ai/static/js/5297.5d11f9b8.chunk.js

js murf.ai collected 2026-10-01 08:34:46 UTC 16,805 bytes, 5 lines download raw bytes

1"use strict";
2!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="2b879b4e-8038-5d8b-a4e5-5afcd94c88ed")}catch(e){}}();
3(self.webpackChunkmurf_web=self.webpackChunkmurf_web||[]).push([[5297],{15744:(e,t,s)=>{s.d(t,{A:()=>a});var i=s(65043),n=s(37939),o=s(91688),r=s(96679),l=s(57546);const a=e=>{let{disableFrom:t=!1}=e;const s=(0,i.useContext)(n.l7),a=(0,o.useHistory)(),c=(0,o.useLocation)(),{getAllUtmParams:d}=(0,l.A)(),u=d();return void 0===s||(null===s?a.replace({pathname:"/studio/login",state:t?{}:{from:`${c.pathname}${c.search}`},search:window.mobileCheck()?`?type=CREATE_ACCOUNT&${u}`:`?${u}`}):(0,r.KRr)(s)&&a.replace({pathname:"/user/onboarding",state:t?{}:{from:`${c.pathname}${c.search}`},search:`?${u}`})),null}},65297:(e,t,s)=>{s.r(t),s.d(t,{default:()=>J});var i=s(65043),n=s(51008),o=s.n(n),r=s(77172),l=s.n(r),a=s(32354),c=s.n(a),d=s(61072),u=s(78602),m=s(53519),h=s(65970),f=s(41591),x=s(15744),p=s(38846),g=s(24682),w=s(25078),j=s(74273),N=s(36664),C=s(37939),v=s(29313),R=s(96679),S=s(14556),A=s(52348),b=s(52777),E=s(10881),y=s(83740),I=s(21777),T=s(29662),O=s(8006),k=s(94063),U=s(91688),G=s(70579);const D=e=>{let{className:t,title:s,large:i,minimal:n}=e;return(0,G.jsx)(g.m_,{popoverClassName:[w.KJG,"murf-tooltip"],targetClassName:t,content:s,children:(0,G.jsx)(g.vw,{round:!0,intent:p.J.WARNING,minimal:n,large:i,children:"Beta"})})};var P=s(45414),W=s(57546);l().microphone=c(),window.mfblobs=window.mfblobs||{};const M=(0,i.forwardRef)(((e,t)=>{let{setRecorderState:s,activeUtt:r,setPlaying:a,setReady:c,countdown:d,setCountdown:u,gotoNext:m}=e;(0,i.useImperativeHandle)(t,(()=>({startRecording:p,stopRecording:g,play:f,pause:x})));const h=(0,S.wA)();(0,i.useLayoutEffect)((()=>{window.murfWs||((e,t)=>{window.murfWs=l().create({container:document.querySelector("#myAudio"),backend:"WebAudio",waveColor:"#36393b",progressColor:"#10965E",height:70,displayMilliseconds:!0,cursorWidth:0,hideScrollbar:!0,interact:!1,plugins:[l().microphone.create({constraints:{video:!1,audio:!0},numberOfInputChannels:1})]}),window.murfWs.on("play",(()=>e(!0))),window.murfWs.on("pause",(()=>e(!1))),window.murfWs.on("finish",(()=>e(!1))),window.murfWs.on("ready",(()=>t(!0)))})(a,c),a(!1),r&&window.mfblobs[r.identifier]?(window.mfActiveBlob!==r.identifier&&(window.murfWs.loadBlob(window.mfblobs[r.identifier]),c(!0)),window.mfActiveBlob=r.identifier):r&&r.assetUrl?(c(!1),window.murfWs.load(r.assetUrl),window.mfActiveBlob=void 0):(window.murfWs.empty(),window.mfActiveBlob=void 0,c(!0))}),[r,a,c]),(0,i.useEffect)((()=>{if(d>0)setTimeout((()=>u(d-(window.murfRecorder?1:0))),1e3);else if(0===d){if(u(-1),!window.murfRecorder)return(0,A.Qg)("Please allow microphone access to proceed with the recording"),void s("NOT_RECORDING");window.murfRecorder.setRecordingDuration(15e3).onRecordingStopped((()=>{console.log("timeout stopRecordingCallback CALLBACK"),(0,A.Qg)("Took too long to record the sentence. Please try again!"),window.murfWs.microphone.stop(),s("NOT_RECORDING")})),window.murfRecorder.startRecording(),s("RECORDING"),console.log("SETTING STATE=RECORDING")}}),[d,u,s]);const f=()=>{window.murfWs.play()},x=()=>{window.murfWs.stop()},p=e=>{window.murfWs.microphone.on("deviceReady",(e=>{console.log("deviceReady CALLED"),window.murfRecorder=o()(e,{recorderType:n.StereoAudioRecorder,mimeType:"audio/wav",type:"audio"}),s("RECORDING"),console.log("SETTING STATE=RECORDING"),u(3),window.murfWs.play()})),window.murfWs.microphone.on("deviceError",(e=>{(0,A.Qg)("Failed to access the microphone, please ensure you've granted access."),console.dir(e)})),window.murfWs.microphone.start()},g=()=>{window.murfRecorder.stopRecording((()=>{console.log("manual stopRecording CALLBACK"),s("NOT_RECORDING"),window.murfWs.microphone.stop();const e=window.murfRecorder.getBlob(),t=r,i=(0,R.uRe)()+"_"+t.categoryId+"_"+t.utteranceId+".wav",n=new File([e],i,{type:"audio/wav"});window.mfblobs[r.identifier]=e,window.murfWs.loadBlob(e),h(E.sR.actions.updateUtteranceStatus({status:"QUEUED",identifier:r.identifier})),b.r.putFile(t.putUrl,n,(()=>{})).then((()=>h(E.sR.actions.updateUtteranceStatus({status:"UPLOADED",identifier:r.identifier})))).catch((()=>{(0,A.Qg)(`Failed to upload recording for ${t.sentence.substring(0,50)}`)}))}))};return(0,G.jsx)("div",{id:"myAudio"})})),_=e=>{const t=document.querySelector(`#utt${e}`);t&&t.scrollIntoView({block:"center"})},L=e=>e===p.J.NONE?N.j7p:e===p.J.WARNING?N.x7g:N.nGU,B=e=>
3{let{authUser:t,versionId:s,cloneStatus:n,customUid:o,callAddMoreRecordings:r,addMoreStatus:l}=e;const a=(0,S.d4)((e=>e.voiceClone.completionPercent)),c=(0,S.d4)((e=>e.voiceClone.minutesToCompletion)),d=(0,S.wA)(),u=(0,U.useHistory)(),m=(0,i.useCallback)((()=>{let e;d((0,v.NR)({authUser:t,versionId:s,customUid:o})).then((()=>{clearTimeout(e),"TRAINING_COMPLETE"!==n&&(e=setTimeout(m,1e4))}))}),[t,n,d,s,o]);return(0,i.useEffect)((()=>{m()}),[m]),(0,G.jsxs)(g.lG,{isOpen:!0,icon:N.Bvv,title:"TRAINING_COMPLETE"===n?"Cloning complete":"Cloning in progress",canOutsideClickClose:!1,isCloseButtonShown:!1,style:{minWidth:"50vw",lineHeight:"unset"},children:["PROCESSING"===l&&(0,G.jsxs)("div",{className:`${w.sar} text-center`,style:{lineHeight:"unset"},children:[(0,G.jsx)("div",{className:"d-flex align-items-center h-100 w-100",children:(0,G.jsx)(g.y$,{className:"container text-center"})}),"Adding new sentences for recording"]}),"PROCESSING"!==l&&(0,G.jsxs)("div",{className:w.sar,style:{lineHeight:"unset"},children:[(0,G.jsx)("h2",{children:"TRAINING_COMPLETE"===n?"Clone is available in the studio now !":"Voice cloning in progress"}),(0,G.jsx)("h4",{children:`Estimated time to completion : ${(0,R.dpu)(c)}`}),(0,G.jsx)("br",{}),(0,G.jsxs)("strong",{className:"mt-3",children:[a,"% completed"]}),(0,G.jsx)(g.z2,{stripes:100!==a,animate:100!==a,intent:p.J.SUCCESS,value:a/100}),(0,G.jsxs)("div",{className:"w-100 text-center mt-5",children:[(0,G.jsx)("button",{onClick:r,className:"mt-1 mr-2 btn btn-outline-info btn-md",children:"Record More"}),(0,G.jsx)("button",{onClick:e=>(0,R.ooL)(u,"/studio","OpenStudio")(e),className:"mt-1 ml-2 btn btn-info btn-md",children:"Open Studio"})]})]})]})},J=e=>{let{match:t}=e;const s=(0,i.useContext)(C.l7),{query:n}=(0,W.A)(),o=n.get("customUid"),r=t.params.versionId;((e,t,s,n)=>{const o=(0,S.wA)();(0,i.useEffect)((()=>{t&&t.getIdToken&&o(e({authUser:t,versionId:s,customUid:n}))}),[e,t,s,o,n])})(v.NR,s,r,o);const[l,a]=(0,i.useState)(),[c,R]=(0,i.useState)(),[b,U]=(0,i.useState)("NOT_RECORDING"),[J,$]=(0,i.useState)(!1),[H,Y]=(0,i.useState)(!1),[z,F]=(0,i.useState)(-1),Q=(0,S.d4)((e=>e.voiceClone.utterances)),V=(0,S.d4)((e=>e.voiceClone.allowAddingUtterances)),[K,q]=(0,i.useState)(0),Z=(0,S.d4)((e=>e.voiceClone.status)),X=(0,S.d4)((e=>e.voiceClone.submitForCloneStatus)),ee=(0,S.d4)((e=>e.voiceClone.addMoreStatus)),te=(0,i.useRef)(),se=(0,i.useRef)(),ie=(0,S.wA)(),[ne,oe]=(0,i.useState)(-1),[re,le]=(0,i.useState)(!1),[ae,ce]=(0,i.useState)(!1),[de,ue]=(0,i.useState)(!1),[me,he]=(0,i.useState)(!0),fe=(0,i.useCallback)((()=>{const e=Q.findIndex(((e,t)=>("INCOMPLETE"===e.status||"BAD_RECORDING"===e.status)&&c!==t));e&&e>-1?(a(Q[e]),R(e),setTimeout((()=>_(e)),200)):(a(Q[0]),R(0))}),[c,Q]);(0,i.useEffect)((()=>{if(!l&&Q)fe();else if(Q&&l){const e=Q.find((e=>l.identifier===e.identifier));e!==l&&a(e)}Q&&(oe(Q.filter((e=>"COMPLETE"===e.status)).length),q(Q.length))}),[l,Q,fe]),(0,i.useEffect)((()=>{0===ne&&le(!0)}),[ne]);const xe=(0,i.useRef)(0);(0,i.useEffect)((()=>{if(Q){const e=t=>()=>{console.log(t),ie((0,v.pE)({authUser:s,utterances:t,versionId:r})).then((t=>{if(t&&t.payload&&t.payload.utterances){const s=t.payload.utterances.filter((e=>"UPLOADED"===e.status));s.length>0&&(clearTimeout(xe.current),xe.current=setTimeout(e(s),3e3))}}))},t=Q.filter((e=>"UPLOADED"===e.status));t.length>0&&(xe.current=setTimeout(e(t),3e3))}return()=>{clearTimeout(xe.current)}}),[s,ie,Q,r]);const pe=()=>{"PROCESSING"!==ee&&(ne/K<.95?(0,A.Qg)("You must finish recording atleast 95% of the sentences before adding more"):V?se.current.confirm((0,G.jsx)(i.Fragment,{children:"Voice quality can be further improved by recording more sentences. Ensure that you stay in character throughout the rest of the recordings as well."}),(()=>{ie((0,v.bD)({authUser:s,versionId:r})).then(fe)}),(()=>{})):(0,A.Qg)("Contact [email protected] to upload more recordings to improve your clone"))};return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(x.A,{}),(0,G.jsxs)(f.m,{children:[(0,G.jsx)("title",{children:"Murf Studio | Voice cloning in progress."}),(0,G.jsx)("meta",{name:"description",content:"Free voice over video maker with in-built text to speech generator. 120+ Human-like voices for making voice over videos and presentations."}),(0,G.jsx)("link",{rel:"canonical",href:"https://murf.ai/studio/voice-clone"})]}),(0,G.jsx)(h.Y,{}),!Q&&!Z&&(0,G.jsx)("div",{className:"d-flex align-items-center h-100 w-100",children:(0,G.jsx)(g.y$,{className:"container text-center"})}),"NOT_SUBMITTED"===Z&&Q&&(0,G.jsxs)(m.A,{fluid:!0,className:"murf-voice-clone-container mf-header-buffer",children:[(0,G.jsxs)(d.A,{children:[(0,G.jsx)(u.A,{sm:6,children:(0,G.jsx)("h2",{children:"Recordings"})}),(0,G.jsx)(u.A,{sm:6,children:(0,G.jsx)(D,{large:!0,className:"float-right",title:(0,G.jsxs)(G.Fragment,{children:["Voice cloning feature is in Beta stage currently. ",(0,G.jsx)("br",{}
3),"Please share your feedback on the chat or to [email protected]"]})})})]}),(0,G.jsxs)(d.A,{className:"h-100",children:[(0,G.jsxs)(u.A,{sm:me?1:4,className:"h-100 overflow-auto smooth-resize",children:[l&&Q.map(((e,t)=>(0,G.jsxs)("div",{className:"thin-pbar w-100",children:[("QUEUED"===e.status||"UPLOADED"===e.status)&&(0,G.jsx)(g.z2,{}),(0,G.jsx)(g.vw,{id:`utt${t}`,className:"mb-2 p-2 clickable w-100",interactive:!0,title:e.extra?e.extra:void 0,intent:l.identifier===e.identifier?p.J.PRIMARY:e.simplifiedStatus,minimal:l.identifier!==e.identifier,icon:l.identifier===e.identifier?N.$Vl:L(e.simplifiedStatus),onClick:s=>{if("RECORDING"===b)return(0,A.Qg)("Stop recording to proceed"),void s.preventDefault();c!==t&&(a(e),R(t))},children:(0,G.jsxs)(g.EY,{ellipsize:!0,small:!0,children:[t+1,!me&&`. ${e.sentence}`]})})]},`utt${t}`))),(0,G.jsx)(g.Zp,{className:"mf-rounded d-flex align-items-center mb-2",interactive:!0,onClick:pe,children:(0,G.jsxs)("div",{className:"text-center w-100",children:[(0,G.jsx)(g.Aj,{large:!0,minimal:!0,icon:N.b9t,loading:"PROCESSING"===ee}),!me&&(0,G.jsx)("div",{children:"Improve clone quality by recording more"})]})})]}),(0,G.jsxs)(u.A,{sm:me?11:8,className:"text-center h-100 overflow-auto thin-pbar smooth-resize",children:[me&&(0,G.jsx)(y.A,{className:"float-left clickable",size:20,onClick:()=>he(!1)}),!me&&(0,G.jsx)(I.A,{className:"float-left clickable",size:20,onClick:()=>he(!0)}),Q&&(0,G.jsxs)("div",{className:"w-100",style:{minHeight:"75px"},children:[ne," of ",K," recordings done",(0,G.jsx)(g.Aj,{className:"float-right",intent:p.J.SUCCESS,outlined:!0,large:!0,text:"Create my clone",onClick:()=>{0!==K&&ne/K<.95?((0,A.Qg)(`${K-ne} recording${K-ne===1?" is":"s are"} still pending. At least 95% of the sentences must be completed in order to submit`),fe()):(ue(!1),ce(!0))}}),(0,G.jsx)("br",{}),l&&(0,G.jsx)(g.vw,{minimal:!0,intent:l.simplifiedStatus,icon:L(l.simplifiedStatus),className:w.KJG,multiline:!0,children:l.simplifiedStatus===p.J.SUCCESS?"Uploaded":l.extra?l.extra:"Pending"})]}),Q&&(0,G.jsx)(g.z2,{stripes:!1,animate:!1,intent:p.J.SUCCESS,value:ne/K}),l&&(0,G.jsxs)(g.Zp,{elevation:j.e.THREE,className:"w-100 mb-5",style:{position:"relative"},children:[z>0&&(0,G.jsx)("div",{className:"mf-countdown w-100 h-100 d-flex align-items-center",children:(0,G.jsxs)("div",{className:"w-100 mf-accent-text",children:[(0,G.jsx)("strong",{children:"Recording starts in"}),(0,G.jsx)("h1",{children:z})]})}),(0,G.jsxs)(m.A,{fluid:!0,children:[(0,G.jsx)(d.A,{children:(0,G.jsx)(u.A,{xs:12,children:(0,G.jsx)(M,{ref:te,setRecorderState:U,activeUtt:l,setPlaying:$,setReady:Y,countdown:z,setCountdown:F,gotoNext:fe})})}),l&&(0,G.jsx)(d.A,{style:{minHeight:"250px"},children:(0,G.jsx)(u.A,{xs:12,style:{fontSize:"1.5rem"},className:"d-flex align-items-center text-center",children:(0,G.jsx)("div",{className:"w-100",children:l.sentence})})}),(0,G.jsxs)(d.A,{children:[(0,G.jsx)(u.A,{sm:2,children:c>0&&(0,G.jsx)(T.A,{size:40,className:"clickable",intent:p.J.WARNING,large:!0,icon:N.ExT,onClick:()=>{a(Q[c-1]),R(c-1),_(c-1)}})}),(0,G.jsxs)(u.A,{sm:8,children:[(0,G.jsx)(g.Aj,{className:"ml-1 mr-1",intent:p.J.PRIMARY,large:!0,disabled:!("NOT_RECORDING"===b&&"INCOMPLETE"!==l.status&&"TRY_AGAIN"!==l.status),icon:N.Uty,text:"Try again",outlined:!0,onClick:()=>{ie(E.sR.actions.updateUtteranceStatus({status:"TRY_AGAIN",identifier:l.identifier}))}}),"NOT_RECORDING"===b&&("INCOMPLETE"===l.status||"TRY_AGAIN"===l.status)&&(0,G.jsx)(g.Aj,{className:"ml-1 mr-1",large:!0,icon:(0,G.jsx)(O.A,{}),text:"Record",intent:p.J.SUCCESS,onClick:e=>{e.persist(),te.current.startRecording(e)}}),"RECORDING"===b&&(0,G.jsx)(g.Aj,{className:"ml-1 mr-1",large:!0,icon:N.VWS,text:"Done",intent:p.J.PRIMARY,onClick:()=>{te.current.stopRecording()}}),(0,G.jsx)(g.Aj,{className:"ml-1 mr-1",intent:p.J.PRIMARY,large:!0,outlined:!0,disabled:!H||"RECORDING"===b||"INCOMPLETE"===l.status,icon:J?N.Hz6:N.trG,text:"Listen",onClick:()=>{J?te.current.pause():te.current.play()},loading:!H})]}),(0,G.jsx)(u.A,{sm:2,children:K>c+1&&(0,G.jsx)(k.A,{size:40,className:"clickable",intent:p.J.WARNING,large:!0,icon:N.Dpm,onClick:()=>{a(Q[c+1]),R(c+1),_(c+1)}})})]})]})]})]})]})]}),"NOT_SUBMITTED"===Z&&re&&(0,G.jsx)(g.lG,{isOpen:re,onClose:()=>le(!1),icon:(0,G.jsx)(O.A,{className:"mr-2"}),title:"How to record better",canOutsideClickClose:!1,isCloseButtonShown:!1,style:{minWidth:"50vw",lineHeight:"unset"}
3,children:(0,G.jsxs)("div",{className:w.sar,style:{lineHeight:"unset"},children:[(0,G.jsxs)("ul",{className:"list-group list-group-flush mf-callout-list text-left",children:[(0,G.jsxs)("li",{className:"list-group-item",children:[(0,G.jsx)("span",{children:"1"}),"Ensure noise-free environment"]}),(0,G.jsxs)("li",{className:"list-group-item",children:[(0,G.jsx)("span",{children:"2"}),"Use a studio grade microphone and speak 'into' it"]}),(0,G.jsxs)("li",{className:"list-group-item",children:[(0,G.jsx)("span",{children:"3"}),"Stay in character throughout the process"]}),(0,G.jsxs)("li",{className:"list-group-item",children:[(0,G.jsx)("span",{children:"4"}),"Speak clearly and listen to your recordings before proceeding"]})]}),(0,G.jsx)("div",{className:"text-center w-100 mt-2",children:(0,G.jsx)(g.Aj,{large:!0,intent:p.J.SUCCESS,text:"Got it!",onClick:()=>le(!1)})})]})}),"NOT_SUBMITTED"===Z&&ae&&(0,G.jsx)(g.lG,{isOpen:ae,onClose:()=>ce(!1),icon:(0,G.jsx)(O.A,{className:"mr-2"}),title:"Submit your recordings",canOutsideClickClose:!1,isCloseButtonShown:!1,style:{minWidth:"50vw"},children:(0,G.jsxs)("div",{className:w.sar,style:{lineHeight:"unset"},children:[(0,G.jsxs)("ul",{className:`list-group list-group-flush mf-callout-list text-left ${w.wK9}`,children:[(0,G.jsxs)("li",{className:"list-group-item",children:[(0,G.jsx)("span",{children:"1"}),"You accept to not use Murf for defamation, scams, fake news, illicit content, or other use cases where you are 'hiding behind a fake voice'."]}),(0,G.jsxs)("li",{className:"list-group-item",children:[(0,G.jsx)("span",{children:"2"}),"You declare that these voice recordings are yours and you are providing explicit permission to Murf to create a voice clone, which would only be accessible to you."]})]}),(0,G.jsxs)("div",{className:"text-center w-100 mt-2",children:[(0,G.jsxs)("label",{className:"justify-content-md-center d-flex align-items-center mb-3",children:[(0,G.jsx)("input",{type:"checkbox",checked:de,onChange:()=>ue(!de)}),(0,G.jsxs)("span",{className:"bp3-text-small pl-2",children:["I accept the above listed terms and conditions and"," ",(0,G.jsx)("a",{href:"/resources/terms_of_service/",target:"_blank",children:"Murf's terms of service."})]})]}),(0,G.jsx)(g.Aj,{disabled:"PROCESSING"===X,large:!0,outlined:!0,className:"mr-4",intent:p.J.SUCCESS,text:"Cancel",onClick:()=>ce(!1)}),(0,G.jsx)(g.Aj,{disabled:!de,large:!0,intent:p.J.SUCCESS,text:"Submit my voice recordings",onClick:()=>{ie((0,v.W7)({authUser:s,versionId:r}))},loading:"PROCESSING"===X})]})]})}),Z&&"NOT_SUBMITTED"!==Z&&(0,G.jsx)(B,{authUser:s,versionId:r,cloneStatus:Z,customUid:o,callAddMoreRecordings:pe,addMoreStatus:ee}),(0,G.jsx)(P.m,{ref:se,confirmButtonText:"Let's do it",intent:p.J.PRIMARY,icon:N.nGU})]})}}}]);
4//# sourceMappingURL=5297.5d11f9b8.chunk.js.map
5//# debugId=2b879b4e-8038-5d8b-a4e5-5afcd94c88ed

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.