audio.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. # -*- coding:utf-8 -*-
  2. import logging
  3. import services
  4. from controllers.console import api
  5. from controllers.console.app.error import (AppUnavailableError, AudioTooLargeError, CompletionRequestError,
  6. NoAudioUploadedError, ProviderModelCurrentlyNotSupportError,
  7. ProviderNotInitializeError, ProviderNotSupportSpeechToTextError,
  8. ProviderQuotaExceededError, UnsupportedAudioTypeError)
  9. from controllers.console.universal_chat.wraps import UniversalChatResource
  10. from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
  11. from core.model_runtime.errors.invoke import InvokeError
  12. from flask import request
  13. from models.model import AppModelConfig
  14. from services.audio_service import AudioService
  15. from services.errors.audio import (AudioTooLargeServiceError, NoAudioUploadedServiceError,
  16. ProviderNotSupportSpeechToTextServiceError, UnsupportedAudioTypeServiceError)
  17. from werkzeug.exceptions import InternalServerError
  18. class UniversalChatAudioApi(UniversalChatResource):
  19. def post(self, universal_app):
  20. app_model = universal_app
  21. app_model_config: AppModelConfig = app_model.app_model_config
  22. if not app_model_config.speech_to_text_dict['enabled']:
  23. raise AppUnavailableError()
  24. file = request.files['file']
  25. try:
  26. response = AudioService.transcript(
  27. tenant_id=app_model.tenant_id,
  28. file=file,
  29. )
  30. return response
  31. except services.errors.app_model_config.AppModelConfigBrokenError:
  32. logging.exception("App model config broken.")
  33. raise AppUnavailableError()
  34. except NoAudioUploadedServiceError:
  35. raise NoAudioUploadedError()
  36. except AudioTooLargeServiceError as e:
  37. raise AudioTooLargeError(str(e))
  38. except UnsupportedAudioTypeServiceError:
  39. raise UnsupportedAudioTypeError()
  40. except ProviderNotSupportSpeechToTextServiceError:
  41. raise ProviderNotSupportSpeechToTextError()
  42. except ProviderTokenNotInitError:
  43. raise ProviderNotInitializeError()
  44. except QuotaExceededError:
  45. raise ProviderQuotaExceededError()
  46. except ModelCurrentlyNotSupportError:
  47. raise ProviderModelCurrentlyNotSupportError()
  48. except InvokeError as e:
  49. raise CompletionRequestError(e.description)
  50. except ValueError as e:
  51. raise e
  52. except Exception as e:
  53. logging.exception("internal server error.")
  54. raise InternalServerError()