pages-chat-speechtotext.BBlooW_8.js 3.8 KB

1
  1. import{s as e,r as a,a3 as t,a5 as s,a as o,b as l,d as n,w as u,e as c,f as r,n as i,x as p,y as d,F as v,g as _,j as m,z as h,i as f,O as y,l as g,k as w}from"./index-DNuNVpwk.js";import{_ as j}from"./s-layout.D9p6eCz-.js";import{_ as x}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./s-menu-tools.CEs7fo1o.js";import"./s-search-block.vue_vue_type_style_index_0_scoped_f692e81a_lang.nx0iNK_l.js";import"./uni-icons.BwI1_kKT.js";import"./s-layout.vue_vue_type_style_index_0_scoped_d5f7c468_lang.C_5j2fBR.js";import"./phone-international-input.vue_vue_type_style_index_0_scoped_a793e264_lang.CZSqjCi7.js";import"./s-search-block.DtORRFbA.js";import"./useGoods.CrGbmvFq.js";import"./phone-international-input.CCPqViBY.js";const b=""+new URL("audioPaly-fK_Uw_CG.png",import.meta.url).href,k=x({__name:"speechtotext",setup(x){const{safeAreaInsets:k,safeArea:M}=e.$platform.device,D=e.$platform.navbar,U=M.height-D-20-60,I=a([]),T=a(!1);let E=a(null);const P=a("");let R=null;const A=a(0);let C=null,L=[],O=a(!1);t((()=>{navigator.mediaDevices.getUserMedia({audio:!0}).then((e=>{C=new MediaRecorder(e),C.ondataavailable=e=>{L.push(e.data)},C.onstop=()=>{O.value||z(),L=[]}})).catch((e=>{console.error("Error accessing media devices.",e)}))}));const z=()=>{const e=new Blob(L,{type:"audio/mpeg"}),a=URL.createObjectURL(e),t=Math.max(Math.floor((new Date-E.value)/1e3),1);!async function(e,a,t,s){const o=new FormData;o.append("audio_file",e);try{const e=await fetch("https://letcgo.com/voice2text/",{method:"POST",body:o}),a=await e.json();a.success&&(I.value[s].transcription=a.transcription),console.log("Server response:",a)}catch(l){console.error("Error sending audio file:",l)}}(e,0,0,I.value.push({duration:t,audioUrl:a,transcription:""})-1),s((()=>{let e=document.getElementById("messages");e.scrollTop=e.scrollHeight}))},B=()=>{const e=Math.floor((new Date-E.value)/1e3);P.value=e+"s",e>=60&&G(new Event("mouseup"))},F=e=>{T.value||"mousedown"!==e.type&&"touchstart"!==e.type||(E.value=new Date,T.value=!0,R=setInterval(B,1e3),P.value="1s",e.preventDefault(),A.value=e.touches?e.touches[0].clientY:0,L=[],O.value=!1,C.start())},G=e=>{!T.value||"mouseup"!==e.type&&"touchend"!==e.type&&"mouseleave"!==e.type&&"touchcancel"!==e.type||(clearInterval(R),T.value=!1,P.value="",new Date-E.value>=500?C.stop():console.log("录音时间太短,不保存"))},K=()=>{T.value&&(clearInterval(R),console.log("录音取消"),O.value=!0,C.stop(),S())},S=()=>{T.value=!1,P.value=0,E.value=null,L=[]},Y=e=>{const a=e.touches[0].clientY;A.value-a>280&&K()};return(e,a)=>{const t=g,s=w,x=f,k=y,M=o(l("s-layout"),j);return c(),n(M,{class:"chat-wrap",title:"语音转文字"},{default:u((()=>[r(x,{class:"chat-container"},{default:u((()=>[r(x,{class:"messages",style:i({height:U+"px"}),id:"messages"},{default:u((()=>[(c(!0),p(v,null,d(I.value,((e,a)=>(c(),n(x,{key:a,class:"message",onClick:e=>(e=>{const a=I.value[e];new Audio(a.audioUrl).play()})(a)},{default:u((()=>[r(x,{class:"bubble"},{default:u((()=>[r(t,{class:"duration"},{default:u((()=>[_(m(e.duration)+'" ',1)])),_:2},1024),r(t,{class:"ss-m-l-10"},{default:u((()=>[r(s,{src:b,class:"audioPaly"})])),_:1})])),_:2},1024),null!=e.transcription&&""!=e.transcription?(c(),n(x,{key:0,class:"text"},{default:u((()=>[_(m(e.transcription),1)])),_:2},1024)):h("",!0)])),_:2},1032,["onClick"])))),128))])),_:1},8,["style"]),r(x,{class:"input-area"},{default:u((()=>[r(k,{onMousedown:F,onMouseup:G,onMouseleave:K,onTouchstart:F,onTouchend:G,onTouchcancel:K,onTouchmove:Y},{default:u((()=>[_(" 按住 说话 ")])),_:1}),T.value?(c(),n(x,{key:0,class:"recording-overlay"},{default:u((()=>[r(x,null,{default:u((()=>[_(m(P.value),1)])),_:1}),r(x,null,{default:u((()=>[_("上滑至此取消")])),_:1})])),_:1})):h("",!0)])),_:1})])),_:1})])),_:1})}}},[["__scopeId","data-v-05810301"]]);export{k as default};