o
    Ö­j9  ã                   @  s˜  d dl mZ d dlZd dlmZ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
edd�Zddœd+dd„ZedkrÊd 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rŸe 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+r³ej+e*d)< ej,r»ej,e*d*< ede(fi e*¤ŽZ-e.e-ƒ dS dS ),é    )ÚannotationsN)ÚLiteralÚ	TypedDict)Ú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 )
ÚOpenAIOptionalParametersz…OpenAI speech transcription's optional parameters.

    https://platform.openai.com/docs/api-reference/audio/createTranscription
    ÚstrÚlanguageÚpromptzLiteral['json']Úresponse_formatÚfloatÚtemperatureN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__© r   r   ún/var/www/html/CropPilot/venv/lib/python3.10/site-packages/speech_recognition/recognizers/whisper_api/openai.pyr
      s   
 r
   F)Útotalr	   )Ú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 (and OpenAI-compatible self-hosted endpoints).

    OpenAI hosted service: requires an OpenAI account; visit https://platform.openai.com/signup, then generate API Key in `API keys <https://platform.openai.com/api-keys>`__ in your project.
    Set environment variable ``OPENAI_API_KEY``; otherwise openai library will raise a ``openai.OpenAIError``.

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

    OpenAI-compatible self-hosted endpoints (e.g., vLLM, Ollama): set ``OPENAI_BASE_URL`` to your custom endpoint URL with dummy ``OPENAI_API_KEY``.
    r   Nz>missing openai module: ensure that openai is set up correctly.)ÚopenaiÚImportErrorr   r   ÚOpenAIÚ	recognize)Ú
recognizerr   r   r   r    Ú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   r   Útyping_extensionsr   Úspeech_recognition.audior   Úspeech_recognition.exceptionsr   Ú/speech_recognition.recognizers.whisper_api.baser   r   r
   r#   r   Úargparser'   r-   ÚsrÚArgumentParserÚparserÚadd_argumentÚ
parse_argsÚargsÚverboseÚ	getLoggerÚspeech_recognition_loggerÚsetLevelÚDEBUGÚStreamHandlerÚconsole_handlerÚ	FormatterÚconsole_formatterÚsetFormatterÚ
addHandlerÚ	from_filer(   r   r   Úrecognize_argsr   r   ÚtranscriptionÚprintr   r   r   r   Ú<module>   sX    ÿü
ÿ
ÿ




Ü