mirror of
https://github.com/langgenius/dify.git
synced 2025-12-20 06:32:45 +00:00
refactor: split changes for api/controllers/web/audio.py (#29856)
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
@@ -1,7 +1,8 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import fields, marshal_with, reqparse
|
from flask_restx import fields, marshal_with
|
||||||
|
from pydantic import BaseModel, field_validator
|
||||||
from werkzeug.exceptions import InternalServerError
|
from werkzeug.exceptions import InternalServerError
|
||||||
|
|
||||||
import services
|
import services
|
||||||
@@ -20,6 +21,7 @@ from controllers.web.error import (
|
|||||||
from controllers.web.wraps import WebApiResource
|
from controllers.web.wraps import WebApiResource
|
||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from core.model_runtime.errors.invoke import InvokeError
|
||||||
|
from libs.helper import uuid_value
|
||||||
from models.model import App
|
from models.model import App
|
||||||
from services.audio_service import AudioService
|
from services.audio_service import AudioService
|
||||||
from services.errors.audio import (
|
from services.errors.audio import (
|
||||||
@@ -29,6 +31,25 @@ from services.errors.audio import (
|
|||||||
UnsupportedAudioTypeServiceError,
|
UnsupportedAudioTypeServiceError,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from ..common.schema import register_schema_models
|
||||||
|
|
||||||
|
|
||||||
|
class TextToAudioPayload(BaseModel):
|
||||||
|
message_id: str | None = None
|
||||||
|
voice: str | None = None
|
||||||
|
text: str | None = None
|
||||||
|
streaming: bool | None = None
|
||||||
|
|
||||||
|
@field_validator("message_id")
|
||||||
|
@classmethod
|
||||||
|
def validate_message_id(cls, value: str | None) -> str | None:
|
||||||
|
if value is None:
|
||||||
|
return value
|
||||||
|
return uuid_value(value)
|
||||||
|
|
||||||
|
|
||||||
|
register_schema_models(web_ns, TextToAudioPayload)
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@@ -88,6 +109,7 @@ class AudioApi(WebApiResource):
|
|||||||
|
|
||||||
@web_ns.route("/text-to-audio")
|
@web_ns.route("/text-to-audio")
|
||||||
class TextApi(WebApiResource):
|
class TextApi(WebApiResource):
|
||||||
|
@web_ns.expect(web_ns.models[TextToAudioPayload.__name__])
|
||||||
@web_ns.doc("Text to Audio")
|
@web_ns.doc("Text to Audio")
|
||||||
@web_ns.doc(description="Convert text to audio using text-to-speech service.")
|
@web_ns.doc(description="Convert text to audio using text-to-speech service.")
|
||||||
@web_ns.doc(
|
@web_ns.doc(
|
||||||
@@ -102,18 +124,11 @@ class TextApi(WebApiResource):
|
|||||||
def post(self, app_model: App, end_user):
|
def post(self, app_model: App, end_user):
|
||||||
"""Convert text to audio"""
|
"""Convert text to audio"""
|
||||||
try:
|
try:
|
||||||
parser = (
|
payload = TextToAudioPayload.model_validate(web_ns.payload or {})
|
||||||
reqparse.RequestParser()
|
|
||||||
.add_argument("message_id", type=str, required=False, location="json")
|
|
||||||
.add_argument("voice", type=str, location="json")
|
|
||||||
.add_argument("text", type=str, location="json")
|
|
||||||
.add_argument("streaming", type=bool, location="json")
|
|
||||||
)
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
message_id = args.get("message_id", None)
|
message_id = payload.message_id
|
||||||
text = args.get("text", None)
|
text = payload.text
|
||||||
voice = args.get("voice", None)
|
voice = payload.voice
|
||||||
response = AudioService.transcript_tts(
|
response = AudioService.transcript_tts(
|
||||||
app_model=app_model, text=text, voice=voice, end_user=end_user.external_user_id, message_id=message_id
|
app_model=app_model, text=text, voice=voice, end_user=end_user.external_user_id, message_id=message_id
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user