
    ͑i                        S SK Jr  S SKrS SKJrJrJr  S SKJr  S SK	J
r
  SSKJr  \(       a  SSKJrJr  / r " S	 S
\5      rg)    )annotationsN)TYPE_CHECKINGAny
NamedTuple)	DATA_HOME)download   )AudioClassificationDataset)_FeatTypeLiteral_ModeLiteralc                     ^  \ rS rSr% SrSSS.rS\S'   / SQrS	\S
'   SrS\S'    " S S\	5      r
     S             SU 4S jjjrSS jr        SS jrSrU =r$ )TESS   a  
TESS is a set of 200 target words were spoken in the carrier phrase
"Say the word _____' by two actresses (aged 26 and 64 years) and
recordings were made of the set portraying each of seven emotions(anger,
disgust, fear, happiness, pleasant surprise, sadness, and neutral).
There are 2800 stimuli in total.

Reference:
    Toronto emotional speech set (TESS) https://tspace.library.utoronto.ca/handle/1807/24487
    https://doi.org/10.5683/SP2/E8H2MF

Args:
   mode (str, optional): It identifies the dataset mode (train or dev). Defaults to train.
   n_folds (int, optional): Split the dataset into n folds. 1 fold for dev dataset and n-1 for train dataset. Defaults to 5.
   split (int, optional): It specify the fold of dev dataset. Defaults to 1.
   feat_type (str, optional): It identifies the feature type that user wants to extract of an audio file. Defaults to raw.
   archive(dict): it tells where to download the audio archive. Defaults to None.

Returns:
    :ref:`api_paddle_io_Dataset`. An instance of TESS dataset.

Examples:

    .. code-block:: python

        >>> # doctest: +TIMEOUT(60)
        >>> import paddle

        >>> mode = 'dev'
        >>> tess_dataset = paddle.audio.datasets.TESS(mode=mode,  # type: ignore[arg-type]
        ...                                         feat_type='raw')
        >>> for idx in range(5):
        ...     audio, label = tess_dataset[idx]
        ...     # do something with audio, label
        ...     print(audio.shape, label)
        ...     # [audio_data_length] , label_id

        >>> tess_dataset = paddle.audio.datasets.TESS(mode=mode,  # type: ignore[arg-type]
        ...                                         feat_type='mfcc',
        ...                                         n_mfcc=40)
        >>> for idx in range(5):
        ...     audio, label = tess_dataset[idx]
        ...     # do something with mfcc feature, label
        ...     print(audio.shape, label)
        ...     # [feature_dim, num_frames] , label_id
zPhttps://bj.bcebos.com/paddleaudio/datasets/TESS_Toronto_emotional_speech_set.zip 1465311b24d1de704c4c63e4ccc470c7)urlmd5zdict[str, str]archive)angrydisgustfearhappyneutralpssadz	list[str]
label_list!TESS_Toronto_emotional_speech_setstr
audio_pathc                  4    \ rS rSr% S\S'   S\S'   S\S'   Srg)TESS.meta_info_   r   speakerwordemotion N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r%       Z/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/audio/datasets/tess.py	meta_infor    _   s    	r,   r.   c                   > [        U[        5      (       a  US:  d
   SU 35       eU[        SUS-   5      ;   d   SU SU 35       eUb  XPl        U R	                  XU5      u  px[
        T	U ]  " SXxUS.UD6  g )Nr	   z8the n_folds should be integer and n_folds >= 1, but got zAThe selected split should be integer and should be 1 <= split <= z
, but got )fileslabels	feat_typer%   )
isinstanceintranger   	_get_datasuper__init__)
selfmoden_foldssplitr2   r   kwargsr0   r1   	__class__s
            r-   r8   TESS.__init__d   s     '3''W\ 	
FwiP	
: a1-- 	
OPWyXbchbij	
- "Lte< 	
)	
?E	
r,   c                    / nU HR  n[         R                  R                  U5      S S nUR                  U R                  " UR                  S5      6 5        MT     U$ )N_)ospathbasenameappendr.   r<   )r9   r0   retfilebasename_without_extends        r-   _get_meta_infoTESS._get_meta_infoz   sU    D&(gg&6&6t&<Sb&A#JJt~~'>'D'DS'IJK  
r,   c                   [         R                  R                  [         R                  R                  [        U R
                  5      5      (       d5  [        R                  " U R                  S   [        U R                  S   SS9  / n[         R                  " [         R                  R                  [        U R
                  5      5       HU  u  pVnU HI  nUR                  S5      (       d  M  UR                  [         R                  R                  XX5      5        MK     MW     U R                  U5      n	/ n/ n
[        U	5       H  u  pUu    pmU R                  R                  U5      nX-  S-   nUS:X  a3  [!        U5      U:w  a$  UR                  XK   5        U
R                  U5        US:w  d  Mm  [!        U5      U:X  d  M~  UR                  XK   5        U
R                  U5        M     Xz4$ )Nr   r   T)
decompressz.wavr	   train)rC   rD   isdirjoinr   r   r   get_path_from_urlr   walkendswithrF   rJ   	enumerater   indexr4   )r9   r:   r;   r<   	wav_filesrootrB   r0   rH   r.   r1   idxsampler$   targetfolds                   r-   r6   TESS._get_data   st    ww}}RWW\\)T__EFF&&U#U#	 	 ggbggll9doo&NONDU==(($$RWW\\$%=>  P
 ''	2	$Y/KC"MAq__**73F=1$Dw3t9#5Y^,f%w3t9#5Y^,f% 0 }r,   )r   )rN      r	   rawN)r:   r   r;   r4   r<   r4   r2   r   r   zdict[str, str] | Noner=   r   returnNone)r_   zlist[meta_info])r:   r   r;   r4   r<   r4   r_   ztuple[list[str], list[int]])r&   r'   r(   r)   __doc__r   r*   r   r   r   r.   r8   rJ   r6   r+   __classcell__)r>   s   @r-   r   r      s    -` b1G^ 
J	  :J9J  %&+)-

 
 	

 $
 '
 
 

 
,"""%".1"	$" "r,   r   )
__future__r   rC   typingr   r   r   paddle.dataset.commonr   paddle.utilsr   datasetr
   esc50r   r   __all__r   r%   r,   r-   <module>rj      s6    # 	 1 1 + ! /5
E% Er,   