audio.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. # -*- coding:utf-8 -*-
  2. import logging
  3. from flask import request
  4. from werkzeug.exceptions import InternalServerError
  5. import services
  6. from controllers.console import api
  7. from controllers.console.app.error import AppUnavailableError, ProviderNotInitializeError, \
  8. ProviderQuotaExceededError, ProviderModelCurrentlyNotSupportError, CompletionRequestError, \
  9. NoAudioUploadedError, AudioTooLargeError, \
  10. UnsupportedAudioTypeError, ProviderNotSupportSpeechToTextError
  11. from controllers.console.explore.wraps import InstalledAppResource
  12. from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError
  13. from core.model_runtime.errors.invoke import InvokeError
  14. from services.audio_service import AudioService
  15. from services.errors.audio import NoAudioUploadedServiceError, AudioTooLargeServiceError, \
  16. UnsupportedAudioTypeServiceError, ProviderNotSupportSpeechToTextServiceError
  17. from models.model import AppModelConfig
  18. class ChatAudioApi(InstalledAppResource):
  19. def post(self, installed_app):
  20. app_model = installed_app.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 as ex:
  43. raise ProviderNotInitializeError(ex.description)
  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()
  55. api.add_resource(ChatAudioApi, '/installed-apps/<uuid:installed_app_id>/audio-to-text', endpoint='installed_app_audio')