o
    * iG                     @  sj   d dl mZ d dlZd dlZd dlZddlmZmZ dd	d
ZdddZ	dddZ
dddZdddZdS )    )annotationsN   )backendwave_backendversionstrreturnboolc                 C  sZ   |  d}t|d }t|d }t|d }|dk rdS |dkr+|dkr+|dkr+dS dS )N.r   r      FT)splitint)r   Zver_arrZv0v1v2 r   n/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/paddle/audio/backends/init_backend.py_check_version   s   
r   	list[str]c                  C  s   g } zddl }W n ty!   d}d| d| d}t| Y nw dtjv r=|j}t|s8d| d}t||j	 } | 
d	 | S )
ak  List available backends, the backends in paddleaudio and the default backend.

    Returns:
        list[str]: The list of available backends.

    Examples:
        .. code-block:: python

            >>> import paddle

            >>> sample_rate = 16000
            >>> wav_duration = 0.5
            >>> num_channels = 1
            >>> num_frames = sample_rate * wav_duration
            >>> wav_data = paddle.linspace(-1.0, 1.0, int(num_frames)) * 0.1
            >>> waveform = wav_data.tile([num_channels, 1])
            >>> wav_path = "./test.wav"

            >>> current_backend = paddle.audio.backends.get_current_backend()
            >>> print(current_backend)
            wave_backend

            >>> backends = paddle.audio.backends.list_available_backends()
            >>> # default backends is ['wave_backend']
            >>> # backends is ['wave_backend', 'soundfile'], if have installed paddleaudio >= 1.0.2
            >>> if 'soundfile' in backends:
            ...     paddle.audio.backends.set_backend('soundfile')
            ...
            >>> paddle.audio.save(wav_path, waveform, sample_rate)

    r   NpaddleaudiozFailed importing z. 
only wave_backend(only can deal with PCM16 WAV) supported.
if want soundfile_backend(more audio type supported),
please manually installed (usually with `pip install z >= 1.0.2`). z(the version of paddleaudio installed is z),
please ensure the paddleaudio >= 1.0.2.r   )r   ImportErrorwarningswarnsysmodules__version__r   backendsZlist_audio_backendsappend)r   r   packageZwarn_msgr   err_msgr   r   r   list_available_backends&   s(    




r   c                  C  s6   d} dt jv rddl}|j } tjj|jkr| S dS )a  Get the name of the current audio backend

    Returns:
        str: The name of the current backend,
        the wave_backend or backend imported from paddleaudio

    Examples:
        .. code-block:: python

            >>> import paddle

            >>> sample_rate = 16000
            >>> wav_duration = 0.5
            >>> num_channels = 1
            >>> num_frames = sample_rate * wav_duration
            >>> wav_data = paddle.linspace(-1.0, 1.0, int(num_frames)) * 0.1
            >>> waveform = wav_data.tile([num_channels, 1])
            >>> wav_path = "./test.wav"

            >>> current_backend = paddle.audio.backends.get_current_backend()
            >>> print(current_backend)
            wave_backend

            >>> backends = paddle.audio.backends.list_available_backends()
            >>> # default backends is ['wave_backend']
            >>> # backends is ['wave_backend', 'soundfile'], if have installed paddleaudio >= 1.0.2

            >>> if 'soundfile' in backends:
            ...     paddle.audio.backends.set_backend('soundfile')
            ...
            >>> paddle.audio.save(wav_path, waveform, sample_rate)

    Nr   r   r   )r   r   r   r   Zget_audio_backendpaddleaudioload)Zcurrent_backendr   r   r   r   get_current_backend`   s   "

r#   backend_nameNonec                 C  sh   | t  vrt| dkrt}nddl}|j|  |}dD ]}tt|t|| tt	j
|t|| qdS )a  Set the backend by one of the list_audio_backend return.

    Args:
        backend (str): one of the list_audio_backend. "wave_backend" is the default. "soundfile" imported from paddleaudio.

    Returns:
        None

    Examples:
        .. code-block:: python

            >>> import paddle

            >>> sample_rate = 16000
            >>> wav_duration = 0.5
            >>> num_channels = 1
            >>> num_frames = sample_rate * wav_duration
            >>> wav_data = paddle.linspace(-1.0, 1.0, int(num_frames)) * 0.1
            >>> waveform = wav_data.tile([num_channels, 1])
            >>> wav_path = "./test.wav"

            >>> current_backend = paddle.audio.backends.get_current_backend()
            >>> print(current_backend)
            wave_backend

            >>> backends = paddle.audio.backends.list_available_backends()
            >>> # default backends is ['wave_backend']
            >>> # backends is ['wave_backend', 'soundfile'], if have installed paddleaudio >= 1.0.2

            >>> if 'soundfile' in backends:
            ...     paddle.audio.backends.set_backend('soundfile')
            ...
            >>> paddle.audio.save(wav_path, waveform, sample_rate)

    r   r   Nsaver"   info)r   NotImplementedErrorr   r   r   Zset_audio_backendsetattrr   getattrr    r!   )r$   moduler   funcr   r   r   set_backend   s   
$r.   c                  C  s    dD ]} t t| tt|  qd S )Nr&   )r*   r   r+   r   )r-   r   r   r   _init_set_audio_backend   s   r/   )r   r   r   r	   )r   r   )r   r   )r$   r   r   r%   )r   r%   )
__future__r   r   r   r     r   r   r   r   r#   r.   r/   r   r   r   r   <module>   s   


:
,4