
    @i                     h    d Z ddlZddlmZmZ ddlmZ dee   dee   fdZ	d	ed
ee   dee   fdZ
y)u   说话人 ID 解析与预加载服务。

职责概览：
- 统一解析多种 speakerIds 输入形态（list/tuple/JSON 字符串/逗号分隔字符串）。
- 将持久化 speaker embedding 预加载到当前会话的 SpeakerRegistry。
    N)ListOptional   )SpeakerRegistryrawreturnc                 >   | g S t        | t              rA| D cg c]5  }t        |      j                         st        |      j                         7 c}S t        | t              rJt        |       D cg c]5  }t        |      j                         st        |      j                         7 c}S t        | t              r| j                         }|sg S 	 t        j                  |      }t        |t              rA|D cg c]5  }t        |      j                         st        |      j                         7 c}S 	 |j                  d      D cg c]#  }|j                         s|j                         % c}S g S c c}w c c}w c c}w # t        $ r Y Zw xY wc c}w )N,)	
isinstanceliststrstriptuplejsonloads	Exceptionsplit)r   vtextparsedss        $/app/gzzm/services/speaker_loader.pyparse_speaker_idsr      s>   
{	#t(+>1s1v||~A>>#u(,S	D	1SV\\^A	DD#syy{I	ZZ%F&$'06I1#a&,,.AII (
 $(::c?@?aaggi	?@@I' ? E J 		 AsL   E<E<3FF)F >FF8F F%FF 	FFregistryraw_speaker_idsc                 x    t        |      }|sg S 	 | j                  t        |            S # t        $ r g cY S w xY w)N)r   load_persisted_bulkr   r   )r   r   idss      r   preload_persisted_speakersr   *   sB    
O
,C	++DI66 	s   + 99)__doc__r   typingr   r   utils.speaker_idr   objectr   r   r        r   <module>r&      sX     ! .8F+ S	 8 8TZK[ `deh`i r%   