Files
voice-chat-web/__pycache__/server.cpython-310.pyc

67 lines
7.1 KiB
Plaintext
Raw Normal View History

o
<00>4<EFBFBD>i<00>@sxdZddlZddlZddlmZddlmZddlZddlmZm Z m
Z
m Z m Z ddl mZddlmZddlmZdd lmZdd
lmZmZe<01>d d <0C>Zee<01>d d<0E><02>Zejejd<0F>e<02>e<1F>Z edddd<13>Z!e!j"edgddgdgd<16>Gdd<18>de<14>Z#Gdd<1A>de<14>Z$e!<21>%d<1B>dd<1D><00>Z&e!j%de$d<1F>d d!<21><00>Z'e!j(d"e#d<1F>e
d#d$d%<25>e dd&d%<25>fd'e d(ee)fd)d*<2A><05>Z*e!j(d+e#d<1F>e d#d,d%<25>e dd&d%<25>fd-e)d(ee)fd.d/<2F><05>Z+e!<21>,d0<64>d(e)fd1d2<64><04>Z-Gd3d4<64>d4e<14>Z.Gd5d6<64>d6e<14>Z/e!<21>%d7<64>d8d9<64><00>Z0e!<21>(d:<3A>d;e.fd<d=<3D><04>Z1e!<21>(d><3E>e d#<23>e d<02>fd-e)d?ee)fd@dA<64><05>Z2e!j3dBeedC<64>d'dD<64>edEk<02>r:ddl4Z4e4j5e!dFedG<64>dSdS)HuC
语音交互网页后端
代理转发到 Qwen2-Audio 模型服务
<EFBFBD>N)<01>Optional)<01>datetime)<05>FastAPI<50>
UploadFile<EFBFBD>File<6C> HTTPException<6F>Form)<01>CORSMiddleware)<01> StaticFiles)<01> FileResponse)<01> BaseModel)<02> tts_manager<65> AUDIO_DIR<49>MODEL_SERVICE_URLzhttp://localhost:19018<31>PORT<52>19019)<01>levelzVoice Chat Webu语音交互网页后端z1.0.0)<03>title<6C> description<6F>version<6F>*T)<04> allow_origins<6E>allow_credentials<6C> allow_methods<64> allow_headersc@s*eZdZUdZeed<eed<eed<dS)<06> VoiceResponseu 语音响应<E5938D>reply<6C>conversation_id<69> timestampN)<06>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__<5F>str<74>__annotations__<5F>r%r%<00>C/home/xian/.openclaw/workspace-coder/works/voice-chat-web/server.pyr-<00>
 rc@s*eZdZUdZeed<eed<eed<dS)<06>StatusResponseu 状态响应<E5938D>status<75> model_service<63> model_onlineN)rr r!r"r#r$<00>boolr%r%r%r&r(4r'r(<00>/c<00>s <00>ddd<03>S)u根路径返回状态<E78AB6>okzvoice-chat-web)r)<00>servicer%r%r%r%r&<00>root;s<02>
r0z/status)<01>response_modelc
<00>s&<00>zpt<00><01>4IdH<00>[}|jt<03>d<02>tjdd<04>d<05>4IdH<00>3}|jdkrF|<01><06>IdH}tdtdd <09>Wd<00>IdHWd<00>IdHWSWd<00>IdHn 1IdHsVwYWd<00>IdHn 1IdHskwYWnty<>}zt <09>
d
|<03><00><02>WYd}~nd}~wwtd td d <09>S) u检查服务状态Nr-<00><00><01>total<61><01>timeout<75><74>r.T)r)r*r+zModel service check failed: <20>partialF) <0B>aiohttp<74> ClientSession<6F>getr<00> ClientTimeoutr)<00>jsonr(<00> Exception<6F>logger<65>warning)<04>session<6F>resp<73>data<74>er%r%r&<00>
get_statusAs4<02>&
<04><14><18>*<2A>(<28><04> <08><02><06>rEz /voice/chat.u 音频文件)ru对话ID<49>audiorc
<00>s<><00>z<>|<00><00>IdH}t<01><02>4IdH<00><>}t<01><03>}|jd||jpd|jp"dd<05>|r-|<04>d|<01>|jt<08>d<07>|tj dd <09>d
<EFBFBD>4IdH<00>K}|j
d kr\|<05> <0B>IdH}t <0C> d |<06><00><02>t|j
|d <0A><02>|<05><0F>IdH}t|d|d|<07>dt<12><13><00><14><00>d<10>Wd<00>IdHWd<00>IdHWS1IdHs<>wYWd<00>IdHWdS1IdHs<>wYWdStjy<>}zt <0C> d|<08><00><02>tddd <0A><02>d}~wty<>}zt j d|<08><00>dd<16>tdt|<08>d <0A><02>d}~ww)u6
语音聊天接口
转发到模型服务
NrFz audio.wavz audio/wav)<02>filename<6D> content_typerz/api/voice/inference<63>xr3<00>rCr6r7<00>Model service error: <20><02> status_code<64>detailrr<00>rrr<00>Connection error: <20><><00>模型服务连接失败zVoice chat error: T<><01>exc_info<66><6F>)<18>readr9r:<00>FormData<74> add_fieldrGrH<00>postrr<r)<00>textr?<00>errorrr=rr;r<00>now<6F> isoformat<61> ClientErrorr>r#) rFr<00> audio_bytesrA<00>formrB<00>
error_textrCrDr%r%r&<00>
voice_chatXsT<02> <06> 
<0E>
<04><14><18> 2<> <08><08><02>rbz /voice/textu 文本消息rZc
2026-04-21 18:51:08 +08:00
<00>s<><00>z<>t<00><01>4IdH<00><>}t<00><02>}|<03>d|<00>|r|<03>d|<01>|jt<05>d<04>|tjdd<06>d<07>4IdH<00>K}|jdkrL|<04><08>IdH}t <09>
d |<05><00><02>t |j|d
<EFBFBD><02>|<04> <0C>IdH}t |d |d|<06>d t<0F><10><00><11><00>d <0A>Wd<00>IdHWd<00>IdHWS1IdHs<>wYWd<00>IdHWdS1IdHs<>wYWdStjy<>}zt <09>
d|<07><00><02>t ddd
<EFBFBD><02>d}~wty<>}zt j
d|<07><00>dd<13>t dt|<07>d
<EFBFBD><02>d}~ww)u6
文字聊天接口
转发到模型服务
NrZrz/api/voice/textrIr3rJr7rKrLrrrOrPrQrRzText chat error: TrSrU)r9r:rWrXrYrr<r)rZr?r[rr=rr;rr\r]r^r>r#)rZrrAr`rBrarCrDr%r%r&<00> text_chat<61>sH<02>   
2026-04-21 18:51:08 +08:00
<0E>
<04><14><18>2<> <08><08><02>rcz/conversation/{conversation_id}c
<00>s<><00>z_t<00><01>4IdH<00>I}|jt<03>d|<00><00>tjdd<04>d<05>4IdH<00>}|<02><05>IdHWd<00>IdHWd<00>IdHWS1IdHsBwYWd<00>IdHWdS1IdHsYwYWdSty|}zt<07>d|<03><00><02>t dt
|<03>d<08><02>d}~ww) u 删除对话Nz/api/voice/conversation/<2F>
r3r5zDelete conversation error: rUrL) r9r:<00>deleterr<r=r>r?r[rr#)rrArBrDr%r%r&<00>delete_conversation<6F>s$<02> 
<0E> <14><18>2<><08><02>rfc@s.eZdZUdZdZeed<dZeeed<dS)<06> TTSSettingsu
TTS 设置<E8AEBE>none<6E>providerN<72>voice) rr r!r"rir#r$rjrr%r%r%r&rg<00>s
 rgc@s&eZdZUdZeeed<eed<dS)<05> TTSResponseu
TTS 响应<E5938D> audio_urlriN)rr r!r"rr#r$r%r%r%r&rk<00>s
  rkz/tts/providersc<00>s <00>t<00><01>}t<00><02>}||tjd<01>S)u 获取可用的 TTS 方案列表)<03> providers<72>voices<65>current)r <00>list_providers<72>get_edge_voices<65>current_provider)rmrnr%r%r&<00>get_tts_providers<72>s<02><06>rsz /tts/settings<67>settingsc<00>sL<00>t<00>|j<02>|jdkr|jrt<00>d<01>}t|d<02>r|<01>|j<03>|j|jd<03>S)u设置 TTS 方案<E696B9>edge<67> set_voice)rirj)r <00> set_providerrirj<00> get_provider<65>hasattrrv)rtrir%r%r&<00>set_tts_settings<67>s<02> 

 <06>rzz/tts/synthesizeric
<00>sb<00>zt<00>||<01>IdH}t||ptjd<02>WSty0}zt<05>d|<03><00><02>tdt|<03>d<05><02>d}~ww)u1
合成语音
返回音频文件 URL
N)rlrizTTS synthesis error: rUrL) r <00>
synthesizerkrrr>r?r[rr#)rZrirlrDr%r%r&<00>synthesize_tts<74>s<02><08><08><02>r|z/audio)<01> directory)<01>name<6D>__main__z0.0.0.0)<02>host<73>port)6r"<00>os<6F>logging<6E>typingrrr9<00>fastapirrrrr<00>fastapi.middleware.corsr <00>fastapi.staticfilesr
<00>fastapi.responsesr <00>pydanticr <00> tts_servicer r<00>getenvr<00>intr<00> basicConfig<69>INFO<46> getLoggerrr?<00>app<70>add_middlewarerr(r;r0rErYr#rbrcrerfrgrkrsrzr|<00>mount<6E>uvicorn<72>runr%r%r%r&<00><module>s<>       
<06><06> 
 
 

2026-04-21 18:51:08 +08:00
<04><02> <0C> 1

<04><02> <0C>(
 &
<04>