
    @i                         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
dS )u   说话人 ID 解析与预加载服务。

职责概览：
- 统一解析多种 speakerIds 输入形态（list/tuple/JSON 字符串/逗号分隔字符串）。
- 将持久化 speaker embedding 预加载到当前会话的 SpeakerRegistry。
    N)ListOptional   )SpeakerRegistryrawreturnc                    | g S t          | t                    rd | D             S t          | t                    rd t          |           D             S t          | t                    r~|                                 }|sg S 	 t          j        |          }t          |t                    rd |D             S n# t          $ r Y nw xY wd |                    d          D             S g S )Nc                     g | ]D}t          |                                          #t          |                                          ES  strstrip.0vs     #src\gzzm\services\speaker_loader.py
<listcomp>z%parse_speaker_ids.<locals>.<listcomp>   s9    >>>1s1vv||~~>A>>>    c                     g | ]D}t          |                                          #t          |                                          ES r   r   r   s     r   r   z%parse_speaker_ids.<locals>.<listcomp>   s9    DDD1SVV\\^^DADDDr   c                     g | ]D}t          |                                          #t          |                                          ES r   r   r   s     r   r   z%parse_speaker_ids.<locals>.<listcomp>!   s9    III1#a&&,,..IAIIIr   c                 ^    g | ]*}|                                 |                                 +S r   )r   )r   ss     r   r   z%parse_speaker_ids.<locals>.<listcomp>%   s-    @@@aaggii@		@@@r   ,)	
isinstancelisttupler   r   jsonloads	Exceptionsplit)r   textparseds      r   parse_speaker_idsr#      s   
{	#t ?>>>>>>#u EDDS		DDDD#s Ayy{{ 	I	Z%%F&$'' JIIIIIIJ 	 	 	D	 A@4::c??@@@@Is   4B8 8
CCregistryraw_speaker_idsc                     t          |          }|sg S 	 |                     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)   *   s_    
O
,
,C 	++DII666   			s   !7 AA)__doc__r   typingr   r   utils.speaker_idr   objectr   r#   r)   r   r   r   <module>r.      s      ! ! ! ! ! ! ! ! . . . . . .8F+ S	    8 8TZK[ `deh`i      r   