
    ͑iO                        % S SK Jr  S SKrS SKJrJrJrJr  S SKJ	r	  S SK
Jr  S SKJr  SSKJr  \(       a  \S	   rS
\S'   \S   rS
\S'   / r " S S\5      rg)    )annotationsN)TYPE_CHECKINGAnyLiteral
NamedTuple)	TypeAlias)	DATA_HOME)download   )AudioClassificationDataset)traindevr   _ModeLiteral)rawmelspectrogrammfcclogmelspectrogramspectrogram_FeatTypeLiteralc                  6  ^  \ rS rSr% SrSSS.rS\S'   / SQrS	\S
'   \R                  R                  SSS5      rS\S'   \R                  R                  SS5      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$ )ESC50+   a  
The ESC-50 dataset is a labeled collection of 2000 environmental audio recordings
suitable for benchmarking methods of environmental sound classification. The dataset
consists of 5-second-long recordings organized into 50 semantical classes (with
40 examples per class)

Reference:
    ESC: Dataset for Environmental Sound Classification
    http://dx.doi.org/10.1145/2733373.2806390

Args:
   mode (str, optional): It identifies the dataset mode (train or dev). Default:train.
   split (int, optional): It specify the fold of dev dataset. Default:1.
   feat_type (str, optional): It identifies the feature type that user wants to extract of an audio file. Default:raw.
   archive(dict, optional): it tells where to download the audio archive. Default:None.

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

Examples:

    .. code-block:: python

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

        >>> mode = 'dev'
        >>> esc50_dataset = paddle.audio.datasets.ESC50(mode=mode,  # type: ignore[arg-type]
        ...                                         feat_type='raw')
        >>> for idx in range(5):
        ...     audio, label = esc50_dataset[idx]
        ...     # do something with audio, label
        ...     print(audio.shape, label)
        ...     # [audio_data_length] , label_id
        [220500] 0
        [220500] 14
        [220500] 36
        [220500] 36
        [220500] 19

        >>> esc50_dataset = paddle.audio.datasets.ESC50(mode=mode,  # type: ignore[arg-type]
        ...                                         feat_type='mfcc',
        ...                                         n_mfcc=40)
        >>> for idx in range(5):
        ...     audio, label = esc50_dataset[idx]
        ...     # do something with mfcc feature, label
        ...     print(audio.shape, label)
        ...     # [feature_dim, length] , label_id
        [40, 1723] 0
        [40, 1723] 14
        [40, 1723] 36
        [40, 1723] 36
        [40, 1723] 19

z<https://paddleaudio.bj.bcebos.com/datasets/ESC-50-master.zip 7771e4b9d86d0945acce719c7a59305a)urlmd5zdict[str, str]archive)2DogRoosterPigCowFrogCatHenzInsects (flying)SheepCrowRainz	Sea waveszCrackling fireCricketszChirping birdszWater dropsWindzPouring waterzToilet flushThunderstormzCrying babySneezingClapping	BreathingCoughing	FootstepsLaughingzBrushing teethSnoringzDrinking, sippingz
Door knockzMouse clickzKeyboard typingzDoor, wood creakszCan openingzWashing machinezVacuum cleanerzClock alarmz
Clock tickzGlass breaking
HelicopterChainsawSirenzCar hornEngineTrainzChurch bellsAirplane	FireworkszHand sawz	list[str]
label_listzESC-50-mastermetaz	esc50.csvstraudio
audio_pathc                  \    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S	'   S
rg)ESC50.meta_info   r:   filenamefoldtargetcategoryesc10src_filetake N)__name__
__module____qualname____firstlineno____annotations____static_attributes__rG       [/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/audio/datasets/esc50.py	meta_infor>      s%    	
	rN   rP   c                   > U[        SS5      ;   d
   SU 35       eUb  X@l        U R                  X5      u  pg[        TU ]  " SXgUS.UD6  g )Nr      zCThe selected split should be integer, and 1 <= split <= 5, but got )fileslabels	feat_typerG   )ranger   	_get_datasuper__init__)	selfmodesplitrU   r   kwargsrS   rT   	__class__s	           rO   rY   ESC50.__init__   sh     a# 	
QRWQXY	
# "Lt3 	
)	
?E	
rN   c           	     Z   / n[        [        R                  R                  [        U R
                  5      S5       nUR                  5       SS   H>  nUR                  U R                  " UR                  5       R                  S5      6 5        M@     S S S 5        U$ ! , (       d  f       U$ = f)Nrr   ,)openospathjoinr	   r9   	readlinesappendrP   stripr\   )rZ   retrflines       rO   _get_meta_infoESC50._get_meta_info   s    "'',,y$))4c:bqr*

4>>4::<+=+=c+BCD + ; 
 ;: 
s   AB
B*c                   [         R                  R                  [         R                  R                  [        U R
                  5      5      (       aP  [         R                  R                  [         R                  R                  [        U R                  5      5      (       d5  [        R                  " U R                  S   [        U R                  S   SS9  U R                  5       n/ n/ nU H  nUu  pxn	      n
US:X  ag  [        U5      U:w  aX  UR                  [         R                  R                  [        U R
                  U5      5        UR                  [        U	5      5        US:w  d  M  [        U5      U:X  d  M  UR                  [         R                  R                  [        U R
                  U5      5        UR                  [        U	5      5        M     XE4$ )Nr   r   T)
decompressr   )rd   re   isdirrf   r	   r<   isfiler9   r
   get_path_from_urlr   rm   intrh   )rZ   r[   r\   rP   rS   rT   sampler@   rA   rB   _s              rO   rW   ESC50._get_data   sG    ww}}GGLLDOO4
 
Y		 BCC&&U#U#	 '')	F17.HFAq!Qw3t9#5RWW\\)T__hOPc&k*w3t9#5RWW\\)T__hOPc&k*   }rN   )r   )r   r   r   N)r[   r   r\   rt   rU   r   r   zdict[str, str] | Noner]   r   returnNone)rx   zlist[meta_info])r[   r   r\   rt   rx   ztuple[list[str], list[int]])rH   rI   rJ   rK   __doc__r   rL   r8   rd   re   rf   r9   r<   r   rP   rY   rm   rW   rM   __classcell__)r^   s   @rO   r   r   +   s    6r N1G^ 
8J	 8r _fkBD#Bggll?G<J<J  %&+)-

 
 $	

 '
 
 

 
$ ),	$ rN   r   )
__future__r   rd   typingr   r   r   r   typing_extensionsr   paddle.dataset.commonr	   paddle.utilsr
   datasetr   r   rL   r   __all__r   rG   rN   rO   <module>r      sg    # 	 : : ' + ! /%	L)  #*	#i  w& wrN   