| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- # -*- coding: utf-8 -*-
- import json
- from fastapi import APIRouter
- from fastapi.responses import JSONResponse
- from digitalHuman.utils import config, logger
- from digitalHuman.protocol import AudioMessage
- from digitalHuman.engine import EnginePool
- from digitalHuman.server.reponse import Response
- from digitalHuman.server.header import HeaderInfo
- from digitalHuman.server.models import *
- from digitalHuman.server.core.api_tts_v0_impl import *
- router = APIRouter(prefix="/tts/v0")
- enginePool = EnginePool()
- # ========================= 获取tts支持列表 ===========================
- @router.get("/engine", response_model=EngineListResp, summary="Get TTS Engine List")
- def api_get_tts_list():
- """
- 获取tts支持引擎列表
- """
- response = Response()
- try:
- response.data = get_tts_list()
- except Exception as e:
- response.data = []
- response.error(str(e))
- return JSONResponse(content=response.validate(EngineListResp), status_code=200)
- # ========================= 获取tts默认引擎 ===========================
- @router.get("/engine/default", response_model=EngineDefaultResp, summary="Get Default TTS Engine")
- def api_get_tts_default():
- """
- 获取默认tts引擎
- """
- response = Response()
- try:
- response.data = get_tts_default()
- except Exception as e:
- response.data = ""
- response.error(str(e))
- return JSONResponse(content=response.validate(EngineDefaultResp), status_code=200)
- # ========================= 获取tts引擎声音列表 ===========================
- @router.get("/engine/{engine}/voice", response_model=VoiceListResp, summary="Get TTS Engine Voice List")
- async def api_get_tts_voice(engine: str, config: str = '{}'):
- """
- 获取tts引擎配置参数列表
- """
- response = Response()
- config = json.loads(config) if config else {}
- try:
- response.data = await get_tts_voice(engine, **config)
- except Exception as e:
- response.data = []
- response.error(str(e))
- return JSONResponse(content=response.validate(VoiceListResp), status_code=200)
- # ========================= 获取tts引擎参数列表 ===========================
- @router.get("/engine/{engine}", response_model=EngineParam, summary="Get TTS Engine Param")
- def api_get_tts_param(engine: str):
- """
- 获取tts引擎配置参数列表
- """
- response = Response()
- try:
- response.data = get_tts_param(engine)
- except Exception as e:
- response.data = []
- response.error(str(e))
- return JSONResponse(content=response.validate(EngineParam), status_code=200)
- # ========================= 执行tts引擎 ===========================
- @router.post("/engine", response_model=TTSEngineOutput, summary="Text To Speech Inference")
- async def api_tts_infer(item: TTSEngineInput, header: HeaderInfo):
- """
- 执行tts引擎
- """
- if item.engine.lower() == "default":
- item.engine = config.SERVER.ENGINES.TTS.DEFAULT
- response = Response()
- try:
- output: AudioMessage = await tts_infer(header, item)
- response.data = output.data
- response.sampleRate = output.sampleRate
- response.sampleWidth = output.sampleWidth
- except Exception as e:
- response.data = None
- response.error(str(e))
- return JSONResponse(content=response.validate(TTSEngineOutput), status_code=200)
|