2 lines
8.4 KiB
Java
2 lines
8.4 KiB
Java
var C=(r,c,v)=>new Promise((b,w)=>{var P=l=>{try{y(v.next(l))}catch(f){w(f)}},u=l=>{try{y(v.throw(l))}catch(f){w(f)}},y=l=>l.done?b(l.value):Promise.resolve(l.value).then(P,u);y((v=v.apply(r,c)).next())});import{e as H,o as G,r as _,d as J,C as d,z as p,Q as t,f as a,u as m,H as Q,G as U,F as $,D,A as x,K as W,R as Y,E as I}from"./vue-vendor-DNhG1Cve.js";import{B as O}from"./BasicForm-ClUSoD_-.js";import"./helper-DcLcf4v6.js";import{u as X}from"./useForm-D61zovon.js";import{d as A,u as Z,bR as ee,v as V,s as te,x as h,au as se}from"./index-X7Y8jykP.js";import"./index-BzChaRPg.js";import"./useAppInject-DPZGPcR3.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";import"./BasicForm.vue_vue_type_style_index_0_lang-B29PWQy0.js";import"./index-DO7ZhK45.js";import"./index-ByCwbQDV.js";import"./index-Upeu4GGa.js";import"./index-C4wWpZeQ.js";import"./useTimeout-D5AmIBZw.js";import"./index-M9QP6cvf.js";import"./Skeleton-CimgOdM7.js";import"./useScrollTo-0FPEw5-K.js";import"./useIntersectionObserver-BGOgyKyu.js";import"./index-saD4h7VJ.js";import"./useBreakpoint-DXhPW7nV.js";import"./useEventListener-BRXjwk7A.js";import"./breakpointEnum-BhAg6bcX.js";import"./uniqBy--vsL0WVB.js";import"./index-BDvqZ5j4.js";import"./BasicModal-xH56XuRZ.js";import"./ModalHeader-Sr8KwhJJ.js";import"./useWindowSizeFn-C-0M9_Ul.js";import"./index-CuWaQdlK.js";const oe=[{label:"倍速",field:"speed",component:"Slider",defaultValue:1,colProps:{span:24},componentProps:{min:.25,max:4,step:.1,marks:{.5:"0.5x",1:"1x",1.5:"1.5x",2:"2x",3:"3x",4:"4x"},tooltip:{formatter:r=>`${r.toFixed(1)}x`}}},{label:"音量增益(dB)",field:"volume",component:"Slider",defaultValue:0,colProps:{span:24},componentProps:{min:-10,max:10,step:1,marks:{"-10":"-10",0:"0",10:"10"}}},{label:"声色",field:"voice",component:"Select",required:!0,defaultValue:"tongtong",componentProps:{options:[{label:"彤彤",value:"tongtong"},{label:"锤锤",value:"chuichui"},{label:"小陈",value:"xiaochen"},{label:"Jam",value:"jam"},{label:"Kazi",value:"kazi"},{label:"Douji",value:"douji"},{label:"Luodo",value:"luodo"}],placeholder:"请选择声色"}},{label:"文案",field:"text",component:"InputTextArea",required:!0,colProps:{span:24},componentProps:{rows:6,placeholder:"请输入要合成的文案内容",maxlength:500,showCount:!0}}],le=r=>A.post({url:"/airag/voice/generateAsync",params:r},{isTransformResponse:!1}),ne=r=>A.get({url:`/airag/voice/queryTask/${r}`},{isTransformResponse:!1}),ie=r=>A.get({url:"/airag/voice/listByUser",params:r},{isTransformResponse:!1}),ae=r=>A.delete({url:"/airag/voice/deleteVoiceRecord",params:r},{isTransformResponse:!1,joinParamsToUrl:!0}),re={class:"ai-voice-page"},ce={class:"content-wrapper"},ue={class:"control-panel"},de={class:"form-container"},pe={class:"middle-wrapper"},me={class:"preview-panel"},ve={class:"preview-content"},fe={key:0,class:"empty-state"},ge={key:1,class:"audio-player-wrapper"},_e=["src"],ye={key:0,class:"audio-info-section"},he={class:"current-audio-info"},ke={class:"info-text"},xe={class:"input-section"},be={class:"form-item-group"},we={class:"preset-group"},Te={class:"preset-items"},Ce=["onClick"],Ue={class:"action-btn-group"},Ie={class:"history-panel"},Ve={class:"history-list-wrapper"},Se={key:0,class:"empty-history"},Ae={key:1,class:"history-list"},Pe={class:"item-header"},Re=["title"],ze={class:"item-time"},Be={class:"item-actions"},S="ai_voice_task_id",Fe=H({__name:"AiVoice",setup(r){const{createMessage:c}=te(),v=Z(),b=oe.filter(o=>!["text"].includes(o.field)),[w,{validate:P}]=X({schemas:b,showActionButtonGroup:!1,wrapperCol:{span:24},labelCol:{span:24}}),u=_(!1),y=_(null),l=_(""),f=_(""),g=_(""),R=_([]),z=_(!1);let k=null;function B(){return C(this,null,function*(){var o;try{const e=(o=v.getUserInfo)==null?void 0:o.id;if(!e)return;yield ie({userId:e}).then(s=>{if(s&&s.result){for(const i of s.result)i.voiceUrl&&(i.audioUrl=V(i.voiceUrl)||"");R.value=s.result||[]}})}catch(e){}})}B();const j=["欢迎来到我们的平台,祝您使用愉快!","今天的天气非常好,适合出门散步。","尊敬的客户,您的订单已发货,请注意查收。","Welcome to our platform, we hope you enjoy the experience!"];function E(o){z.value||(z.value=!0,g.value=o,setTimeout(()=>{z.value=!1},300))}function L(){return C(this,null,function*(){try{const o=yield P();if(!g.value.trim()){c.warn("请输入文案内容");return}u.value=!0,l.value="",o.content=g.value.trim();const e=yield le(o);if(e.success&&e.result){const s=e.result;localStorage.setItem(S,s),F(s)}else u.value=!1,c.error(e.message||"提交任务失败")}catch(o){u.value=!1}})}function F(o){const e=()=>{ne(o).then(s=>{s.success?s.result==="pending"||s.result===null?k=setTimeout(e,3e3):(u.value=!1,localStorage.removeItem(S),l.value=V(s.result.voiceUrl)||"",f.value=g.value,c.success("语音合成完成"),B()):(u.value=!1,localStorage.removeItem(S),c.error(s.message||"语音合成失败"))}).catch(()=>{k=setTimeout(e,3e3)})};e()}G(()=>{const o=localStorage.getItem(S);o&&(u.value=!0,l.value="",F(o))}),J(()=>{k&&(clearTimeout(k),k=null)});function N(o){l.value=V(o.voiceUrl)||"",f.value=o.content,setTimeout(()=>{var e,s;(s=(e=y.value)==null?void 0:e.play)==null||s.call(e)},0)}function q(o){g.value=o.content,c.success("已将文案填入输入框")}function K(o){const e=V(o.voiceUrl);if(!e){c.error("下载地址不存在");return}const s=document.createElement("a");s.href=e,s.download=o.fileName||"voice.wav",s.target="_blank",document.body.appendChild(s),s.click(),document.body.removeChild(s)}function M(o){return C(this,null,function*(){var s;const e=(s=v.getUserInfo)==null?void 0:s.id;if(e)try{const i=yield ae({userId:e,recordId:o});i.success?(c.success("已删除"),B()):c.error(i.message||"删除失败")}catch(i){c.error("删除失败")}})}return(o,e)=>{const s=ee,i=W("a-button");return p(),d("div",re,[e[14]||(e[14]=t("div",{class:"page-header"},[t("div",{class:"title"},"AI语音"),t("div",{class:"subtitle"},"将文本快速转换为自然流畅的语音")],-1)),t("div",ce,[t("div",ue,[e[1]||(e[1]=t("div",{class:"panel-title"},"语音控制",-1)),t("div",de,[a(m(O),{onRegister:m(w),schemas:m(b)},null,8,["onRegister","schemas"])])]),t("div",pe,[t("div",me,[e[5]||(e[5]=t("div",{class:"panel-title"},"试听区域",-1)),t("div",ve,[l.value?(p(),d("div",ge,[t("audio",{ref_key:"audioRef",ref:y,src:l.value,controls:"",class:"audio-control"},null,8,_e)])):(p(),d("div",fe,[a(m(h),{icon:"ant-design:customer-service-outlined",size:"72",color:"#c0c4cc"}),e[2]||(e[2]=t("p",null,"填写下方文案并点击「开始合成」",-1)),e[3]||(e[3]=t("p",{class:"tip"},"支持调整倍速、音量增益和声色,生成更加个性化的语音效果",-1))]))]),l.value?(p(),d("div",ye,[t("div",he,[e[4]||(e[4]=t("span",{class:"info-label"},"当前语音:",-1)),t("span",ke,U(f.value),1)])])):Q("",!0)]),t("div",xe,[t("div",be,[e[6]||(e[6]=t("label",{class:"form-label"},"文案",-1)),a(s,{value:g.value,"onUpdate:value":e[0]||(e[0]=n=>g.value=n),rows:4,maxlength:500,"show-count":"",placeholder:"请输入要合成的文案内容"},null,8,["value"])]),t("div",we,[e[7]||(e[7]=t("div",{class:"preset-label"},"常用场景",-1)),t("div",Te,[(p(),d($,null,D(j,n=>t("div",{key:n,class:"preset-item",onClick:Y(T=>E(n),["prevent"])},U(n),9,Ce)),64))])]),t("div",Ue,[a(i,{type:"primary",size:"large",block:"",loading:u.value,onClick:L},{default:x(()=>[a(m(h),{icon:"ant-design:sound-outlined"}),e[8]||(e[8]=I(" 开始合成 ",-1))]),_:1},8,["loading"])])])]),t("div",Ie,[e[13]||(e[13]=t("div",{class:"panel-title"},"生成历史",-1)),t("div",Ve,[R.value.length===0?(p(),d("div",Se,[...e[9]||(e[9]=[t("p",null,"暂无生成历史",-1)])])):(p(),d("div",Ae,[(p(!0),d($,null,D(R.value,n=>(p(),d("div",{key:n.id,class:"history-item"},[t("div",Pe,[t("span",{class:"item-title",title:n.content},U(n.content),9,Re),t("span",ze,U(n.createTime),1)]),t("div",Be,[a(i,{type:"text",size:"small",onClick:T=>N(n)},{default:x(()=>[a(m(h),{icon:"ant-design:sound-outlined"}),e[10]||(e[10]=I(" 播放 ",-1))]),_:1},8,["onClick"]),a(i,{type:"text",size:"small",onClick:T=>q(n)},{default:x(()=>[a(m(h),{icon:"ant-design:copy-outlined"}),e[11]||(e[11]=I(" 复用文案 ",-1))]),_:1},8,["onClick"]),a(i,{type:"text",size:"small",onClick:T=>K(n)},{default:x(()=>[a(m(h),{icon:"ant-design:download-outlined"}),e[12]||(e[12]=I(" 下载 ",-1))]),_:1},8,["onClick"]),a(i,{type:"text",size:"small",danger:"",onClick:T=>M(n.id)},{default:x(()=>[a(m(h),{icon:"ant-design:delete-outlined"})]),_:1},8,["onClick"])])]))),128))]))])])])])}}}),dt=se(Fe,[["__scopeId","data-v-573325b0"]]);export{dt as default};
|