| 
                        1234567891011121314151617181920212223242526272829303132333435 | 
                        - import io
 - from werkzeug.datastructures import FileStorage
 - from core.model_providers.model_factory import ModelFactory
 - from services.errors.audio import NoAudioUploadedServiceError, AudioTooLargeServiceError, UnsupportedAudioTypeServiceError, ProviderNotSupportSpeechToTextServiceError
 - 
 - FILE_SIZE = 15
 - FILE_SIZE_LIMIT = FILE_SIZE * 1024 * 1024
 - ALLOWED_EXTENSIONS = ['mp3', 'mp4', 'mpeg', 'mpga', 'm4a', 'wav', 'webm']
 - 
 - 
 - class AudioService:
 -     @classmethod
 -     def transcript(cls, tenant_id: str, file: FileStorage):
 -         if file is None:
 -             raise NoAudioUploadedServiceError()
 -         
 -         extension = file.mimetype
 -         if extension not in [f'audio/{ext}' for ext in ALLOWED_EXTENSIONS]:
 -             raise UnsupportedAudioTypeServiceError()
 - 
 -         file_content = file.read()
 -         file_size = len(file_content)
 - 
 -         if file_size > FILE_SIZE_LIMIT:
 -             message = f"Audio size larger than {FILE_SIZE} mb"
 -             raise AudioTooLargeServiceError(message)
 - 
 -         model = ModelFactory.get_speech2text_model(
 -             tenant_id=tenant_id
 -         )
 - 
 -         buffer = io.BytesIO(file_content)
 -         buffer.name = 'temp.mp3'
 - 
 -         return model.run(buffer)
 
 
  |