o
�J�h� � @ s� d dl Z d dlZd dlZd dlmZmZmZmZm Z m
Z
d dlZd dl
Z
d dlZd dlmZ d dlmZmZmZmZ d dlmZ d dlT G dd� de�ZdS ) � N)�BinaryIO�Union�Tuple�List�Callable�Optional)� Namespace)�WHISPER_MODELS_DIR�DIARIZATION_MODELS_DIR�
OUTPUT_DIR�UVR_MODELS_DIR)�BaseTranscriptionPipeline)�*c s� e Zd Zeeeefdedededef� fdd�
Ze �
� dfdeeej
ejf d e j
d
ee deee ef fdd
�Ze �
� fdeded e j
fdd�Z� ZS )�WhisperInference� model_dir�diarization_model_dir�
uvr_model_dir�
output_dirc s t � j||||d� d S )N)r r r r )�super�__init__)�selfr r r r �� __class__� �IC:\pinokio\api\whisper-webui.git\app\modules\whisper\whisper_Inference.pyr s
�zWhisperInference.__init__N�audio�progress�progress_callback�returnc s� t � � }t�t|��}|j| jks| jdu s| j|jkr%| � |j|j� � � fdd�}| jj
||jd|j|j
|j|jr=dnd|jdkrEdnd|j|j|j|j|d �
d
}g }|D ]} |�t| d | d | d
d�� qXt � � | }
||
fS )a
transcribe method for faster-whisper.
Parameters
----------
audio: Union[str, BinaryIO, np.ndarray]
Audio path or file binary or Audio numpy array
progress: gr.Progress
Indicator to show progress directly in gradio.
progress_callback: Optional[Callable]
callback function to show progress. Can be used to update progress in the backend.
*whisper_params: tuple
Parameters related with whisper. This will be dealt with "WhisperParameters" data class
Returns
----------
segments_result: List[Segment]
list of Segment that includes start, end timestamps and transcribed text
elapsed_time: float
elapsed time for transcription
Nc s � | dd� d S )NzTranscribing..��descr )�progress_value�r r r r >