U
    ,:%e                     @   s   d dl Z d dlmZ d dlmZmZ d dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZ dZd	Zd
dddddddZeeeeeeeeeeeeef dddZG dd de
ZdS )    N)Path)TupleUnion)Tensor)Dataset)download_url_to_file)_extract_tartrain-clean-100ZLibriTTSZ@da0864e1bd26debed35da8a869dd5c04dfc27682921936de7cff9c8a254dbe1aZ@d413eda26f3a152ac7c9cf3658ef85504dfb1b625296e5fa83727f5186cca79cZ@234ea5b25859102a87024a4b9b86641f5b5aaaf1197335c95090cde04fe9a4f5Z@33a5342094f3bba7ccc2e0500b9e72d558f72eb99328ac8debe1d9080402f10dZ@c5608bf1ef74bb621935382b8399c5cdd51cd3ee47cec51f00f885a64c6c7f6bZ@ce7cff44dcac46009d18379f37ef36551123a1dc4e5c8e4eb73ae57260de4886Z@e35f7e34deeb2e2bdfe4403d88c8fdd5fbf64865cae41f027a185a6965f0a5df)z4http://www.openslr.org/resources/60/dev-clean.tar.gzz4http://www.openslr.org/resources/60/dev-other.tar.gzz5http://www.openslr.org/resources/60/test-clean.tar.gzz5http://www.openslr.org/resources/60/test-other.tar.gzz:http://www.openslr.org/resources/60/train-clean-100.tar.gzz:http://www.openslr.org/resources/60/train-clean-360.tar.gzz:http://www.openslr.org/resources/60/train-other-500.tar.gz)fileidpath	ext_audioext_original_txtext_normalized_txtreturnc              	   C   s   |  d\}}}}| }|| }	tj||||	}	|| }
tj||||
}
|| }tj||||}t|\}}t|
}| }
W 5 Q R X t|	d}| }	W 5 Q R X |||
|	t|t||fS )N_r)	splitosr   join
torchaudioloadopenreadlineint)r
   r   r   r   r   Z
speaker_idZ
chapter_idZ
segment_idZutterance_idZnormalized_textZoriginal_textZ
file_audioZwaveformZsample_rateft r   [/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/torchaudio/datasets/libritts.pyload_libritts_item   s*    
r   c                	   @   sr   e Zd ZdZdZdZdZeedfe	e
ef e
e
edddd	Zeeeee
e
eee
f d
ddZedddZdS )LIBRITTSa  *LibriTTS* :cite:`Zen2019LibriTTSAC` dataset.

    Args:
        root (str or Path): Path to the directory where the dataset is found or downloaded.
        url (str, optional): The URL to download the dataset from,
            or the type of the dataset to dowload.
            Allowed type values are ``"dev-clean"``, ``"dev-other"``, ``"test-clean"``,
            ``"test-other"``, ``"train-clean-100"``, ``"train-clean-360"`` and
            ``"train-other-500"``. (default: ``"train-clean-100"``)
        folder_in_archive (str, optional):
            The top-level directory of the dataset. (default: ``"LibriTTS"``)
        download (bool, optional):
            Whether to download the dataset if it is not found at root path. (default: ``False``).
    z.original.txtz.normalized.txtz.wavFN)rooturlfolder_in_archivedownloadr   c           
      C   s   |dkr"d}d}t j||| }t |}t j|}t j||}|dd }t j||}t j||| _|rt j| jst j|st	
|d }	t|||	d t| n t j| jstd| j dtd	d
 t| jd| j D | _d S )N)z	dev-cleanz	dev-otherz
test-cleanz
test-otherr	   ztrain-clean-360ztrain-other-500z.tar.gzz$http://www.openslr.org/resources/60/.r   )Zhash_prefixz	The path zT doesn't exist. Please check the ``root`` path or set `download=True` to download itc                 s   s   | ]}t |jV  qd S N)strstem).0pr   r   r   	<genexpr>   s     z$LIBRITTS.__init__.<locals>.<genexpr>z*/*/*)r   r   r   fspathbasenamer   _pathisdirisfile
_CHECKSUMSgetr   r   existsRuntimeErrorsortedr   glob
_ext_audio_walker)
selfr   r    r!   r"   Zext_archivebase_urlr+   archiveZchecksumr   r   r   __init__U   s*    


zLIBRITTS.__init__)nr   c                 C   s"   | j | }t|| j| j| j| jS )a  Load the n-th sample from the dataset.

        Args:
            n (int): The index of the sample to be loaded

        Returns:
            Tuple of the following items;

            Tensor:
                Waveform
            int:
                Sample rate
            str:
                Original text
            str:
                Normalized text
            int:
                Speaker ID
            int:
                Chapter ID
            str:
                Utterance ID
        )r6   r   r,   r5   _ext_original_txt_ext_normalized_txt)r7   r;   r
   r   r   r   __getitem__   s    
zLIBRITTS.__getitem__)r   c                 C   s
   t | jS r$   )lenr6   )r7   r   r   r   __len__   s    zLIBRITTS.__len__)__name__
__module____qualname____doc__r<   r=   r5   URLFOLDER_IN_ARCHIVEr   r%   r   boolr:   r   r   r   r>   r@   r   r   r   r   r   A   s    
1"!r   )r   pathlibr   typingr   r   r   Ztorchr   Ztorch.utils.datar   Ztorchaudio._internalr   Ztorchaudio.datasets.utilsr   rE   rF   r/   r%   r   r   r   r   r   r   r   <module>   s2   )