Team Ai
Apppublic

Underground-Digital/Workflow-Engine

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
audio.py127 linesDownload Raw Back to explore
1import logging2 3from flask import request4from werkzeug.exceptions import InternalServerError5 6import services7from controllers.console import api8from controllers.console.app.error import (9    AppUnavailableError,10    AudioTooLargeError,11    CompletionRequestError,12    NoAudioUploadedError,13    ProviderModelCurrentlyNotSupportError,14    ProviderNotInitializeError,15    ProviderNotSupportSpeechToTextError,16    ProviderQuotaExceededError,17    UnsupportedAudioTypeError,18)19from controllers.console.explore.wraps import InstalledAppResource20from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError21from core.model_runtime.errors.invoke import InvokeError22from models.model import AppMode23from services.audio_service import AudioService24from services.errors.audio import (25    AudioTooLargeServiceError,26    NoAudioUploadedServiceError,27    ProviderNotSupportSpeechToTextServiceError,28    UnsupportedAudioTypeServiceError,29)30 31 32class ChatAudioApi(InstalledAppResource):33    def post(self, installed_app):34        app_model = installed_app.app35 36        file = request.files["file"]37 38        try:39            response = AudioService.transcript_asr(app_model=app_model, file=file, end_user=None)40 41            return response42        except services.errors.app_model_config.AppModelConfigBrokenError:43            logging.exception("App model config broken.")44            raise AppUnavailableError()45        except NoAudioUploadedServiceError:46            raise NoAudioUploadedError()47        except AudioTooLargeServiceError as e:48            raise AudioTooLargeError(str(e))49        except UnsupportedAudioTypeServiceError:50            raise UnsupportedAudioTypeError()51        except ProviderNotSupportSpeechToTextServiceError:52            raise ProviderNotSupportSpeechToTextError()53        except ProviderTokenNotInitError as ex:54            raise ProviderNotInitializeError(ex.description)55        except QuotaExceededError:56            raise ProviderQuotaExceededError()57        except ModelCurrentlyNotSupportError:58            raise ProviderModelCurrentlyNotSupportError()59        except InvokeError as e:60            raise CompletionRequestError(e.description)61        except ValueError as e:62            raise e63        except Exception as e:64            logging.exception("internal server error.")65            raise InternalServerError()66 67 68class ChatTextApi(InstalledAppResource):69    def post(self, installed_app):70        from flask_restful import reqparse71 72        app_model = installed_app.app73        try:74            parser = reqparse.RequestParser()75            parser.add_argument("message_id", type=str, required=False, location="json")76            parser.add_argument("voice", type=str, location="json")77            parser.add_argument("text", type=str, location="json")78            parser.add_argument("streaming", type=bool, location="json")79            args = parser.parse_args()80 81            message_id = args.get("message_id", None)82            text = args.get("text", None)83            if (84                app_model.mode in {AppMode.ADVANCED_CHAT.value, AppMode.WORKFLOW.value}85                and app_model.workflow86                and app_model.workflow.features_dict87            ):88                text_to_speech = app_model.workflow.features_dict.get("text_to_speech")89                voice = args.get("voice") or text_to_speech.get("voice")90            else:91                try:92                    voice = args.get("voice") or app_model.app_model_config.text_to_speech_dict.get("voice")93                except Exception:94                    voice = None95            response = AudioService.transcript_tts(app_model=app_model, message_id=message_id, voice=voice, text=text)96            return response97        except services.errors.app_model_config.AppModelConfigBrokenError:98            logging.exception("App model config broken.")99            raise AppUnavailableError()100        except NoAudioUploadedServiceError:101            raise NoAudioUploadedError()102        except AudioTooLargeServiceError as e:103            raise AudioTooLargeError(str(e))104        except UnsupportedAudioTypeServiceError:105            raise UnsupportedAudioTypeError()106        except ProviderNotSupportSpeechToTextServiceError:107            raise ProviderNotSupportSpeechToTextError()108        except ProviderTokenNotInitError as ex:109            raise ProviderNotInitializeError(ex.description)110        except QuotaExceededError:111            raise ProviderQuotaExceededError()112        except ModelCurrentlyNotSupportError:113            raise ProviderModelCurrentlyNotSupportError()114        except InvokeError as e:115            raise CompletionRequestError(e.description)116        except ValueError as e:117            raise e118        except Exception as e:119            logging.exception("internal server error.")120            raise InternalServerError()121 122 123api.add_resource(ChatAudioApi, "/installed-apps/<uuid:installed_app_id>/audio-to-text", endpoint="installed_app_audio")124api.add_resource(ChatTextApi, "/installed-apps/<uuid:installed_app_id>/text-to-audio", endpoint="installed_app_text")125# api.add_resource(ChatTextApiWithMessageId, '/installed-apps/<uuid:installed_app_id>/text-to-audio/message-id',126#                  endpoint='installed_app_text_with_message_id')127