o
    dZhG                     @  s  d dl 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 dlmZ ed ZG d	d
 d
Zddd)ddZedkrd dlZd dlmZ d dlZe Zed ejddeedd edd edd  ejd!d"d#d$ e Zejred%Zeej e Z e!d&Z"e #e" e$e  ej%ej&Z'dej(iZ)ej*rej*e)d'< ej+rej+e)d(< ede'fi e)Z,e-e, dS dS )*    )annotationsN)Literal)Unpack)	AudioData)
SetupError)OpenAICompatibleRecognizer)	whisper-1zgpt-4o-transcribezgpt-4o-mini-transcribec                   @  s2   e Zd ZU dZded< ded< ded< ded< d	S )
OpenAIOptionalParameterszOpenAI speech transcription's optional parameters.

    https://platform.openai.com/docs/api-reference/audio/createTranscription
    strlanguagepromptzLiteral['json']Zresponse_formatfloatZtemperatureN)__name__
__module____qualname____doc____annotations__ r   r   `/var/www/auris/lib/python3.10/site-packages/speech_recognition/recognizers/whisper_api/openai.pyr	      s   
 r	   r   )model
audio_data'AudioData'r   WhisperModelkwargs Unpack[OpenAIOptionalParameters]returnr
   c                K  sD   zddl }W n ty   tdw t| }|j||fi |S )a  Performs speech recognition on ``audio_data`` (an ``AudioData`` instance), using the OpenAI Whisper API.

    This function requires an OpenAI account; visit https://platform.openai.com/signup, then generate API Key in `User settings <https://platform.openai.com/account/api-keys>`__.

    Detail: https://platform.openai.com/docs/guides/speech-to-text

    Set environment variable ``OPENAI_API_KEY``; otherwise openai library will raise a ``openai.OpenAIError``.
    r   Nz>missing openai module: ensure that openai is set up correctly.)openaiImportErrorr   r   ZOpenAI	recognize)Z
recognizerr   r   r   r   Zopenai_recognizerr   r   r   r   "   s   r   __main__)get_args
audio_filez-mz--model)choicesdefaultz-lz
--languagez-pz--promptz-vz	--verbose
store_true)actionspeech_recognitionzL%(asctime)s | %(levelname)s | %(name)s:%(funcName)s:%(lineno)d - %(message)sr   r   )r   r   r   r   r   r   r   r
   ).
__future__r   loggingtypingr   Ztyping_extensionsr   Zspeech_recognition.audior   Zspeech_recognition.exceptionsr   Z/speech_recognition.recognizers.whisper_api.baser   r   r	   r   r   argparser    r&   srArgumentParserparseradd_argument
parse_argsargsverbose	getLoggerZspeech_recognition_loggersetLevelDEBUGStreamHandlerZconsole_handler	FormatterZconsole_formattersetFormatter
addHandler	from_filer!   r   r   Zrecognize_argsr   r   Ztranscriptionprintr   r   r   r   <module>   sX    






