o
    iK                     @  s  d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	m
Z
 er6d dlZd dlmZ d dlmZ d dlmZ G d	d
 d
ZG dd deddZG dd deddZ			d"d#ddZed krd dlZd dlZe Zed! e Zej ej!Z"ede"Z#e$e# dS dS )$    )annotations)TYPE_CHECKINGLiteral	TypedDict)	AudioData)TranscribeOutputBaseWhisperCompatibleRecognizerNWhisperModel)Segment)Unpackc                   @  s    e Zd ZdddZdd
dZdS )TranscribableAdaptermodelr
   returnNonec                 C  s
   || _ d S N)r   )selfr    r   n/home/kuhnn/.local/lib/python3.10/site-packages/speech_recognition/recognizers/whisper_local/faster_whisper.py__init__   s   
zTranscribableAdapter.__init__audio_array
np.ndarrayTranscribeOutputBase[Segment]c                 K  s>   | j j|fi |\}}t|}ddd |D ||jdS )N c                 s  s    | ]}|j V  qd S r   )text).0segmentr   r   r   	<genexpr>   s    z2TranscribableAdapter.transcribe.<locals>.<genexpr>)r   segmentslanguage)r   
transcribelistjoinr   )r   r   kwargssegments_generatorinfor   r   r   r   r       s   zTranscribableAdapter.transcribeN)r   r
   r   r   )r   r   r   r   )__name__
__module____qualname__r   r    r   r   r   r   r      s    
r   c                   @  s&   e Zd ZU ded< ded< ded< dS )InitOptionalParameterszLiteral['cpu', 'gpu', 'auto']devicestrcompute_typedownload_rootNr&   r'   r(   __annotations__r   r   r   r   r)   !      
 r)   F)totalc                   @  s&   e Zd ZU ded< ded< ded< dS )TranscribeOptionalParametersr+   r   z"Literal['transcribe', 'translate']taskint	beam_sizeNr.   r   r   r   r   r2   )   r0   r2   base
audio_datar   r   r+   	show_dictboolinit_optionsInitOptionalParameters | Nonetranscribe_options$Unpack[TranscribeOptionalParameters]r   #str | TranscribeOutputBase[Segment]c                 K  sB   ddl m} ||fi |pi }tt|}|j|fd|i|S )a  Performs speech recognition on ``audio_data`` (an ``AudioData`` instance), using Whisper.

    Pick ``model`` size (Same as Whisper).

    If ``show_dict`` is true, returns the detailed response from Whisper, including the detected language. Otherwise returns only the transcription.

    You can specify:

        * ``language``: recognition language, an uncapitalized 2 letters language name like "en" or "fr".

            * If not set, Faster Whisper will automatically detect the language.

        * ``task``

            * If you want transcribe + **translate** to english, set ``task="translate"``.

    Other values are passed directly to whisper. See https://github.com/SYSTRAN/faster-whisper/blob/master/faster_whisper/transcribe.py for all options.
    r   r	   r8   )faster_whisperr
   r   r   	recognize)
recognizerr7   r   r8   r:   r<   r
   whisper_recognizerr   r   r   r@   1   s   r@   __main__
audio_file)r6   FN)r7   r   r   r+   r8   r9   r:   r;   r<   r=   r   r>   )%
__future__r   typingr   r   r   speech_recognition.audior   1speech_recognition.recognizers.whisper_local.baser   r   numpynpr?   r
   faster_whisper.transcriber   typing_extensionsr   r   r)   r2   r@   r&   argparsespeech_recognitionsrArgumentParserparseradd_argument
parse_argsargs	from_filerD   r7   transcriptionprintr   r   r   r   <module>   s4    %

