CoolFace
Apppublic

Muteeah/tajweed_backend

sourceHugging Faceupdated 4mo agoView on Hugging Face
0likes
app.cpython-314.pyc29 linesDownload Raw Back to __pycache__
1+
2~�yi�����^RIHtHtHtHtHt^RIHt^RIt^RI	t	^RI3t^RIt^RI
t
^RIt^RIt^RIHtHt^RIHt^RIHtHtHtHt]!4tRt]P:!]4t]P:!]4t]P@PC4'dRMR	t"]PG]"4PI4R4t%]PL!]%RR7]PNPQR
R4t)]PT!])RR7t+]+PXPZP]4]+n,Rt/]PaR4]!R43RRll4t1]2R8Xd^RI3t3]3Ph!]RRR7R#R#)�)�FastAPI�5UploadFile�File�Form�
HTTPException)�JSONResponseN)�Wav2Vec2Processor�Wav2Vec2ForCTC)�AudioSegment)�normalize_phonemes�get_phoneme_timestamps�compare_full_phoneme_sequence�ARABIC_TO_PHONEMEz,jonatasgrosman/wav2vec2-large-xlsr-53-arabic�cuda�cpu�uploadsT)�exist_ok�dataz
metadata.xlsm�openpyxl)�enginec���\P!V4pVPR4P^4pVP	R^4^,R,pVPVRR7V#)�>�.z_16k.wav�wav)�format)r�	from_file�set_frame_rate�set_channels�rsplit�export)�6input_path�audio�wav_paths&  �6C:\Users\RYZEN\OneDrive\Desktop\tajweed_backend\app.py�ensure_wav_16kr%#s^���"�"�:�.�E�� � ��'�4�4�Q�7�E�� � ��a�(��+�j�8�H�	�L�L��%�L�(��O�z
/upload-audio.c�0�V^8�dQhR\R\/#)��word_id�file)�strr)rs"r$�__annotate__r,-s��?H�?H�3�?H�j�?Hr&c7���"�\P!4RVP2p\PP\V4p\VR4;_uu_4p\P!VPV4RRR4\V4p\P!VRR7wrg\V4V,p\RVR
R24\R\V424\V4R	8d\!R	R8RVR
R2/R
7#\"\"R,V8H,p	V	P$'d\'RRR7h\)V	P*^,R,4p9\-VRRRR7p\.P0!4;_uu_4\3VP4P7\844P:pRRR4\.P<!XR!R7P?4PA4PC4p
VPD^,p\PF!VR7p\IW�V\,4pVUUUu.uF!wpppV\J9gK\JV,NK#	pppp\MV10V4p\PN!V4\PN!V4\R4RV	P*^,R,RT11RTR\V4^8HRV'dV/#R/# +'giEL�;i +'giELQ;iuupppi \Pd:p\R\ST424\!R R12\ST4/R
7uRp?#Rp?ii;i5i)"�_�wbNr)�sru📊 [API] Audio Duration: z.2fz secondsu📈 [API] Total Samples: i��errorzAudio too short (z's). Please record at least 0.5 seconds.)�status_code�content�idi�zWord ID not found)r2�detail�phenome�ptT)�
sampling_rate�return_tensors�padding)�dim)�pathu0✅ [API] Analysis Complete. Returning feedback.�word�expected_phonemes�detected_phonemes�13is_correct�feedbackzPerfect pronunciation!u❌ [API] Server Error: i������)*�uuid�uuid4�filename�osr<�join�14UPLOAD_DIR�open�shutil�copyfileobjr*r%�librosa�load�len�printr�df�emptyrr�iloc�	processor�torch�no_grad�model�input_values�to�device�logits�argmax�squeezer�numpy�shape�get_durationr
rr�remove�	Exceptionr+)r)r*�
temp_filenamer!�buffer�
processed_wav�speechr0�duration�row�ref_phoneme_seq�inputsrZ�
predicted_ids�15num_frames�audio_duration�letter_segments�l�s�e�
user_phonemesrAs&&                    r$�analyze_tajweedrr,s����>H��:�:�<�.��$�-�-��9�
��W�W�\�\�*�m�<�16�
�*�d�
#�
#�v����t�y�y�&�1�$�'�z�2�
��\�\�-�E�:�17���v�;��#��
�+�H�S�>��B�C�
�*�3�v�;�-�8�9��v�;����� �$5�h�s�^�Cj�"k�l��
���D��W�$�%���9�9�9��C�8K�L�L�,�S�X�X�a�[��-C�D���6��t�UY�Z��
�]�]�_�_��6�.�.�1�1�&�9�:�A�A�F�����V��4�<�<�>�B�B�D�J�J�L�
��\�\�!�_�18� �-�-�=�A��1��N�\e�f��=L�g�_�'�!�Q��PQ�Uf�Pf�-�*�1�-�-�_�
�g�1��-�P��	�	�	�*��19�	�	�-� �
�@�A��C�H�H�Q�K��'������#�h�-�1�,��H��20�	21�223K�23�	24�a$�
#�
#��:�_�_��h��$�H�
�(��Q���1�2���g�s�1�v�5F�G�G��H�s��M2�AL+� "K<�B	L+�M2�,L+�9AL+�3L�BL+�L$�)L$�:A>L+�8M2�9L+�;M2�<L
	�	L+�L!	�L+�+M/�6.M*�$M/�%M2�*M/�/M2�__main__z0.0.0.0i@)�host�port)5�fastapirrrrr�fastapi.responsesrrTrL�pandas�pdrFrJrCr]�np�transformersr	r25�pydubr�utils.alignmentrr
rr�app�MODEL_ID�from_pretrainedrSrVr�is_availablerYrX�evalrH�makedirsr<rG�
METADATA_PATH�26read_excelrP�columnsr+�lowerr%�postrr�__name__�uvicorn�run�r&r$�<module>r�s2��B�B�*����	�
���:����27�i��:���-�-�h�7�	��&�&�x�0���:�:�*�*�,�,��%�����������28����J��&������V�_�5�
��]�]�=��4��
�Z�Z�^�^�
!�
!�
#��29�����/��;?��9�?H��?H�B�z����K�K��)�$�/�r&