1 |
- import{s as e,r as a,a1 as t,a3 as s,a as l,b as o,w as n,j as u,d as r,n as c,y as i,z as d,F as p,e as v,f as _,x as m,i as f,M as h,k as y,l as g,g as w}from"./index-39e65128.js";import{_ as b}from"./s-layout.69eddd84.js";import{_ as j}from"./_plugin-vue_export-helper.1b428a4d.js";import"./s-layout.vue_vue_type_style_index_0_scoped_0789db2f_lang.a57fff0d.js";import"./phone-international-input.vue_vue_type_style_index_0_scoped_a2d557af_lang.dec8d7d1.js";import"./s-tabbar.6c197486.js";import"./useGoods.133fe7ed.js";import"./phone-international-input.20ca2464.js";const x=""+new URL("audioPaly-372169db.png",import.meta.url).href,M=j({__name:"speechtotext",setup(j){const{safeAreaInsets:M,safeArea:D}=e.$platform.device,k=e.$platform.navbar,I=D.height-k-20-60,T=a([]),U=a(!1);let E=a(null);const R=a("");let A=null;const F=a(0);let L=null,P=[],z=a(!1);t((()=>{navigator.mediaDevices.getUserMedia({audio:!0}).then((e=>{L=new MediaRecorder(e),L.ondataavailable=e=>{P.push(e.data)},L.onstop=()=>{z.value||B(),P=[]}})).catch((e=>{console.error("Error accessing media devices.",e)}))}));const B=()=>{const e=new Blob(P,{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 l=new FormData;l.append("audio_file",e);try{const e=await fetch("http://192.168.3.41:8000/voice2text/",{method:"POST",body:l}),a=await e.json();a.success&&(T.value[s].transcription=a.transcription),console.log("Server response:",a)}catch(o){console.error("Error sending audio file:",o)}}(e,0,0,T.value.push({duration:t,audioUrl:a,transcription:""})-1),s((()=>{let e=document.getElementById("messages");e.scrollTop=e.scrollHeight}))},C=()=>{const e=Math.floor((new Date-E.value)/1e3);R.value=e+"s",e>=60&&S(new Event("mouseup"))},O=e=>{U.value||"mousedown"!==e.type&&"touchstart"!==e.type||(E.value=new Date,U.value=!0,A=setInterval(C,1e3),R.value="1s",e.preventDefault(),F.value=e.touches?e.touches[0].clientY:0,P=[],z.value=!1,L.start())},S=e=>{!U.value||"mouseup"!==e.type&&"touchend"!==e.type&&"mouseleave"!==e.type&&"touchcancel"!==e.type||(clearInterval(A),U.value=!1,R.value="",new Date-E.value>=500?L.stop():console.log("录音时间太短,不保存"))},Y=()=>{U.value&&(clearInterval(A),console.log("录音取消"),z.value=!0,L.stop(),$())},$=()=>{U.value=!1,R.value=0,E.value=null,P=[]},q=e=>{const a=e.touches[0].clientY;F.value-a>280&&Y()};return(e,a)=>{const t=g,s=w,j=f,M=h,D=u(y("s-layout"),b);return l(),o(D,{class:"chat-wrap",title:"语音转文字"},{default:n((()=>[r(j,{class:"chat-container"},{default:n((()=>[r(j,{class:"messages",style:c({height:I+"px"}),id:"messages"},{default:n((()=>[(l(!0),i(p,null,d(T.value,((e,a)=>(l(),o(j,{key:a,class:"message",onClick:e=>(e=>{const a=T.value[e];new Audio(a.audioUrl).play()})(a)},{default:n((()=>[r(j,{class:"bubble"},{default:n((()=>[r(t,{class:"duration"},{default:n((()=>[v(_(e.duration)+'" ',1)])),_:2},1024),r(t,{class:"ss-m-l-10"},{default:n((()=>[r(s,{src:x,class:"audioPaly"})])),_:1})])),_:2},1024),null!=e.transcription&&""!=e.transcription?(l(),o(j,{key:0,class:"text"},{default:n((()=>[v(_(e.transcription),1)])),_:2},1024)):m("",!0)])),_:2},1032,["onClick"])))),128))])),_:1},8,["style"]),r(j,{class:"input-area"},{default:n((()=>[r(M,{onMousedown:O,onMouseup:S,onMouseleave:Y,onTouchstart:O,onTouchend:S,onTouchcancel:Y,onTouchmove:q},{default:n((()=>[v(" 按住 说话 ")])),_:1}),U.value?(l(),o(j,{key:0,class:"recording-overlay"},{default:n((()=>[r(j,null,{default:n((()=>[v(_(R.value),1)])),_:1}),r(j,null,{default:n((()=>[v("上滑至此取消")])),_:1})])),_:1})):m("",!0)])),_:1})])),_:1})])),_:1})}}},[["__scopeId","data-v-d67bddcf"]]);export{M as default};
|