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

62 lines
7.5 KiB
Plaintext
Raw Normal View History

o
<00>2<EFBFBD>iL<00>@s<>dZddlZddlZddlZddlZddlmZmZddlm Z m
Z
ddl m Z e<01> dd<07>Z eje dd <09>e<03>e<10>ZGd
d <0B>d e<06>ZGd d <0A>d e<12>ZGdd<0F>de<12>ZGdd<11>de<12>ZGdd<13>d<13>Ze<16>ZdS)u0
TTS 语音合成模块
支持多种 TTS 方案
<EFBFBD>N)<02>ABC<42>abstractmethod)<02>Optional<61>Tuple)<01>datetime<6D> AUDIO_DIR<49> audio_cacheT)<01>exist_okc@sReZdZdZededeeeffdd<05><04>Zedefdd<07><04>Zede fdd <09><04>Z
d
S) <0B> TTSProvideruTTS 提供者抽象类<E8B1A1>text<78>returnc<00><00><00>dS)uT
合成语音
返回: (音频文件路径, 音频URL路径)
N<><00><02>selfr rr<00>H/home/xian/.openclaw/workspace-coder/works/voice-chat-web/tts_service.py<70>
synthesizes<02>zTTSProvider.synthesizecC<00>dS)u获取提供者名称Nr<00>rrrr<00>get_name <00>zTTSProvider.get_namecCr)u检查是否可用Nrrrrr<00> is_available%rzTTSProvider.is_availableN) <0B>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__r<00>strrrr<00>boolrrrrrr
sr
c @s<>eZdZdZdddddddd d
d d d d<0E> ZdZd deefdd<13>Zdede eeffdd<17>Z
defdd<19>Z defdd<1B>Z de fdd<1D>Zdefdd<1F>ZdS)!<21>EdgeTTSProvideru'Edge TTS 提供者微软免费TTSu晓晓u云希u云扬u晓晨u晓涵u晓梦u晓墨u晓睿u晓双u晓萱u晓颜u晓悠(女)) <0C>zh-CN-XiaoxiaoNeuralzzh-CN-YunxiNeuralzzh-CN-YunyangNeuralzzh-CN-XiaochenNeuralzzh-CN-XiaohanNeuralzzh-CN-XiaomengNeuralzzh-CN-XiaomoNeuralzzh-CN-XiaoruiNeuralzzh-CN-XiaoshuangNeuralzzh-CN-XiaoxuanNeuralzzh-CN-XiaoyanNeuralzzh-CN-XiaoyouNeuralrN<>voicecCs|p|j|_d|_dS<00>N)<03> DEFAULT_VOICEr <00>
_available<EFBFBD>rr rrr<00>__init__@s 
zEdgeTTSProvider.__init__r r c<00>sX<00>ddl}t<01><02>j<03>d<03>}tj<05>t|<03>}|<02>||j <09>}|<05>
|<04>IdHd|<03><00>}||fS)u使用 Edge TTS 合成语音rNz.mp3z/audio/) <0B>edge_tts<74>uuid<69>uuid4<64>hex<65>os<6F>path<74>joinr<00> Communicater <00>save)rr r&<00>filename<6D>filepath<74> communicate<74> audio_urlrrrrDs<02>
zEdgeTTSProvider.synthesizecCr)NzEdge TTSrrrrrrT<00>zEdgeTTSProvider.get_namecCs|j<00>|j|j<02>S)u获取当前音色名称)<03>VOICES<45>getr rrrr<00>get_voice_nameWszEdgeTTSProvider.get_voice_namecCsN|jdur$z ddl}d|_W|jSty#t<03>d<04>d|_Y|jSw|jS)u检查 Edge TTS 是否可用NrTzedge-tts not installedF)r#r&<00> ImportError<6F>logger<65>warning)rr&rrrr[s
 <0C>
<02>zEdgeTTSProvider.is_availablecCs*||jvr
||_dSt<02>d|<01>d<02><03>dS)u 设置音色zUnknown voice: z, using defaultN)r4r r8r9r$rrr<00> set_voicefs

zEdgeTTSProvider.set_voicer!)rrrrr4r"rrr%rrrr6rrr:rrrrr+s,<06> rc@sheZdZdZe<04>dd<03>Zdd<05>Zdede eeffdd <09>Z
defd
d <0B>Z de fd d <0A>Z de fdd<10>ZdS)<12>ChatTTSProvideru2ChatTTS 提供者本地部署预留接口<E58FA3> CHATTTS_URLzhttp://localhost:19020cCs
d|_dS)NF<4E>r#rrrrr%ts
zChatTTSProvider.__init__r r c<00>s
<00>td<01><01>)uH
使用 ChatTTS 合成语音
TODO: 后续实现
u2ChatTTS 尚未实现,请先部署 ChatTTS 服务)<01>NotImplementedErrorrrrrrws<02>zChatTTSProvider.synthesizecCr)N<>ChatTTSrrrrrr~r3zChatTTSProvider.get_namecCs|jS)u检查 ChatTTS 是否可用r=rrrrr<00>szChatTTSProvider.is_available<6C> availablecCs
||_dS)u'设置可用状态部署后调用Nr=)rr@rrr<00> set_available<6C>s
zChatTTSProvider.set_availableN)rrrrr*<00>getenvr<r%rrrrrrrArrrrr;ns r;c@sFeZdZdZdedeeeffdd<05>Zdefdd<07>Zdefdd <09>Z d
S) <0B> NoTTSProvideru 不使用 TTSr r c<00>r )N)NNrrrrrr<00>s<02>zNoTTSProvider.synthesizecCr)Nu无 TTSrrrrrr<00>r3zNoTTSProvider.get_namecCr)NTrrrrrr<00>r3zNoTTSProvider.is_availableN)
rrrrrrrrrrrrrrrC<00>s
rCc@s<>eZdZdZeeed<02>Zddefdd<06>Z dde
ed e fd
d <0B>Z defd d <0A>Z d efdd<0F>Zd efdd<11>Zddede
ed e
efdd<14>ZdS)<17>
TTSManageruTTS 方案管理)<03>edge<67>chattts<74>nonerG<00>default_providercCs@||_i|_t<02>}|<02><03>r||jd<t<04>|jd<t<05>|jd<dS)NrErFrG)<06>current_provider<65>
_providersrrr;rC)rrH<00> edge_providerrrrr%<00>s
 zTTSManager.__init__N<5F> provider_namer cCs|p|j}|j<01>||jd<00>S)u获取 TTS 提供者rG)rIrJr5)rrL<00>namerrr<00> get_provider<65>s
zTTSManager.get_providercCs(||jvr
||_dSt<02>d|<01><00><02>dS)u设置当前 TTS 方案zUnknown provider: N)rJrIr8r9)rrLrrr<00> set_provider<65>s

zTTSManager.set_providercCsdd<02>|j<00><01>D<00>S)u列出所有可用方案cSs$g|]\}}||<02><00>|<02><01>d<00><03>qS))rM<00> display_namer@)rr)<03>.0rM<00>providerrrr<00>
<listcomp><3E>s<02><04><06>z-TTSManager.list_providers.<locals>.<listcomp>)rJ<00>itemsrrrr<00>list_providers<72>s<06>zTTSManager.list_providerscCstjS)u获取 Edge TTS 可用音色)rr4rrrr<00>get_edge_voices<65>szTTSManager.get_edge_voicesr c
<00>s<><00>|<00>|<02>}|<03><01>st<02>d|<03><04><00>d<02><03>dSz |<03>|<01>IdH\}}|WSty?}zt<02>d|<06><00><02>WYd}~dSd}~ww)u6
合成语音
返回音频URL
z Provider z not availableNzTTS synthesis failed: )rNrr8r9rr<00> Exception<6F>error)rr rLrR<00>_r2<00>errrr<00>s<02>
<08><02>zTTSManager.synthesize)rGr!)rrrrrr;rC<00> PROVIDERSrr%rr
rNrO<00>listrU<00>dictrVrrrrrrD<00>s<06> $rD)rr*r'<00>logging<6E>asyncio<69>abcrr<00>typingrrrrBr<00>makedirs<72> getLoggerrr8r
rr;rCrD<00> tts_managerrrrr<00><module>s"  
C
F