From 6e3dbbaacb7860da2d205d910dddc8852d3ac518 Mon Sep 17 00:00:00 2001 From: lrh <1585126058@qq.com> Date: Tue, 6 Jun 2023 11:02:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=9F=B3=E8=89=B2=E9=A2=84?= =?UTF-8?q?=E8=A7=88=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/VoiceMouldController.java | 10 +++--- .../iformall/service/sm/VoiceInfoService.java | 3 +- .../sm/impl/PersonPhotoServiceImpl.java | 6 +++- .../service/sm/impl/VoiceInfoServiceImpl.java | 36 ++++++++----------- .../java/com/iformall/sm/AiPreviewParam.java | 12 +++++++ .../java/com/iformall/sm/AiPreviewResult.java | 14 ++++++++ .../java/com/iformall/sm/AiVideoHelper.java | 35 ++++++++++++++++++ 7 files changed, 87 insertions(+), 29 deletions(-) create mode 100644 suimangService/src/main/java/com/iformall/sm/AiPreviewParam.java create mode 100644 suimangService/src/main/java/com/iformall/sm/AiPreviewResult.java diff --git a/suimangCApi/src/main/java/com/iformall/controller/VoiceMouldController.java b/suimangCApi/src/main/java/com/iformall/controller/VoiceMouldController.java index 18515cb..525679c 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/VoiceMouldController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/VoiceMouldController.java @@ -13,6 +13,7 @@ import com.iformall.enums.*; import com.iformall.language.LanguageDetect; import com.iformall.mapper.VoiceLanguageMapper; import com.iformall.service.sm.*; +import com.iformall.sm.AiPreviewParam; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -157,12 +158,9 @@ public class VoiceMouldController extends BaseController { @AuthIgnore @ApiOperation("TTS音色预览") @GetMapping("/preview") - @ApiImplicitParams({ - @ApiImplicitParam(name = "genTxt", value = "需要生成的文字", dataType = "String", paramType = "query", required = true), - @ApiImplicitParam(name = "voiceId", value = "音色ID", dataType = "Long", paramType = "query", required = true), - @ApiImplicitParam(name = "voiceStyle", value = "语音风格", dataType = "String", paramType = "query", required = true)}) - public ResultData voicePreview(String genTxt, Long voiceId, String voiceStyle) { + @ApiImplicitParams({}) + public ResultData voicePreview(@RequestBody AiPreviewParam aiPreviewParam) { logger.debug("[" + getIpAddr() + "] MouldPatchController::voicePreview"); - return new ResultData(voiceInfoService.voicePreview(genTxt, voiceId, voiceStyle)); + return new ResultData(voiceInfoService.voicePreview(aiPreviewParam)); } } diff --git a/suimangService/src/main/java/com/iformall/service/sm/VoiceInfoService.java b/suimangService/src/main/java/com/iformall/service/sm/VoiceInfoService.java index 11c44ee..27d64e3 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/VoiceInfoService.java +++ b/suimangService/src/main/java/com/iformall/service/sm/VoiceInfoService.java @@ -5,6 +5,7 @@ import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.po.sm.VoiceInfo; import com.iformall.domain.po.sm.VoiceLanguage; +import com.iformall.sm.AiPreviewParam; import java.util.List; @@ -14,5 +15,5 @@ public interface VoiceInfoService { VoiceInfo getById(Long voiceMouldId); - ResultData voicePreview(String genTxt, Long voiceId, String voiceStyle); + ResultData voicePreview(AiPreviewParam aiPreviewParam); } diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/PersonPhotoServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/PersonPhotoServiceImpl.java index 545bfe8..9756d65 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/PersonPhotoServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/PersonPhotoServiceImpl.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.sm.MaterialMould; @@ -138,6 +139,9 @@ public class PersonPhotoServiceImpl implements PersonPhotoService { AiCheckPhotoParam param = new AiCheckPhotoParam(); param.setImg(Base64Util.imageUrlToBase64(material)); AiCheckPhotoResult result = AiVideoHelper.checkPhoto(param); - return new ResultData(result.getCode(), result.getMsg()); + if (result.isSuccess()){ + return new ResultData(); + } + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), result.getMsg()); } } diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java index 8444d3a..1ee2783 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java @@ -5,14 +5,14 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.google.common.collect.Lists; +import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.po.sm.VoiceInfo; import com.iformall.enums.EnumSex; import com.iformall.enums.EnumSpeakType; import com.iformall.mapper.VoiceMapper; import com.iformall.service.sm.VoiceInfoService; -import com.iformall.sm.AiPhotoSpeakResult; -import com.iformall.sm.AiVideoHelper; +import com.iformall.sm.*; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -51,27 +51,21 @@ public class VoiceInfoServiceImpl implements VoiceInfoService { } @Override - public ResultData voicePreview(String genTxt, Long voiceId, String voiceStyle) { - if (voiceId == null || StringUtils.isBlank(genTxt)) { + public ResultData voicePreview(AiPreviewParam aiPreviewParam) { + if (aiPreviewParam.getVoiceId() == null || StringUtils.isBlank(aiPreviewParam.getGenTxt())) { return new ResultData(); } - VoiceInfo voiceInfo = voiceMapper.selectOne(new LambdaQueryWrapper().eq(VoiceInfo::getIsDel, 0).eq(VoiceInfo::getId, voiceId)); - JSONObject jsonObject = new JSONObject(); - jsonObject.put("gen_txt", genTxt); - jsonObject.put("voice_id", voiceInfo.getMouldSmId()); - jsonObject.put("voice_style", StringUtils.isBlank(voiceStyle) ? "default" : voiceStyle); - jsonObject.put("gender", voiceInfo.getSex() == 1 ? "male" : "female"); - String response = AiVideoHelper.doPost("http://nas.pucao.cn:2002/tts_wav", jsonObject.toJSONString()); - if (StringUtils.isNotBlank(response)) { - String str = "http://nas.pucao.cn:2002"; - JSONObject object = JSON.parseObject(response); - JSONObject status = object.getJSONObject("status"); - Integer code = status.getInteger("code"); - if (code.intValue() == 3000) { - JSONObject data = object.getJSONObject("data"); - return new ResultData(str + data.getString("url")); - } + VoiceInfo voiceInfo = voiceMapper.selectOne(new LambdaQueryWrapper().eq(VoiceInfo::getIsDel, 0).eq(VoiceInfo::getId, aiPreviewParam.getVoiceId())); + + AiPreviewParam param = new AiPreviewParam(); + param.setGenTxt(aiPreviewParam.getGenTxt()); + param.setVoiceId(voiceInfo.getMouldSmId()); + param.setVoiceStyle(StringUtils.isBlank(aiPreviewParam.getVoiceStyle()) ? "default" : aiPreviewParam.getVoiceStyle()); + param.setGender(voiceInfo.getSex() == 1 ? "male" : "female"); + AiPreviewResult result = AiVideoHelper.voicePreview(param); + if (result.isSuccess()){ + return new ResultData(); } - return new ResultData(); + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), result.getMsg()); } } diff --git a/suimangService/src/main/java/com/iformall/sm/AiPreviewParam.java b/suimangService/src/main/java/com/iformall/sm/AiPreviewParam.java new file mode 100644 index 0000000..a2d0733 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/sm/AiPreviewParam.java @@ -0,0 +1,12 @@ +package com.iformall.sm; + +import lombok.Data; + +@Data +public class AiPreviewParam { + private String genTxt; + private String voiceId; + private String voiceStyle; + private String gender; + +} diff --git a/suimangService/src/main/java/com/iformall/sm/AiPreviewResult.java b/suimangService/src/main/java/com/iformall/sm/AiPreviewResult.java new file mode 100644 index 0000000..8de7f6c --- /dev/null +++ b/suimangService/src/main/java/com/iformall/sm/AiPreviewResult.java @@ -0,0 +1,14 @@ +package com.iformall.sm; + +import io.swagger.models.auth.In; +import lombok.Data; + +@Data +public class AiPreviewResult { + + private boolean success; + private Integer code; + private String msg; + private String url; + +} diff --git a/suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java b/suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java index 3c43373..46daa71 100644 --- a/suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java +++ b/suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java @@ -34,6 +34,7 @@ public class AiVideoHelper { public static String url = "http://nas.pucao.cn:2002"; public static String photo_speak_suffix = "/img_talking"; public static String image_quality_suffix = "/image_qualit"; + public static String voice_preview = "/tts_wav"; public static String doPost(String url, String params) { return HttpUtil.doAiVideoPost(url,params); @@ -163,6 +164,39 @@ public class AiVideoHelper { return result; } + public static AiPreviewResult voicePreview(AiPreviewParam param) { + String response = doPost(url + voice_preview, JSONObject.toJSONString(param)); + log.info("TTS音色预览 end response:" + response); + AiPreviewResult result = new AiPreviewResult(); + + if (StringUtils.isBlank(response)) { + result.setSuccess(false); + result.setMsg("TTS音色预览失败,请稍后重试"); + return result; + } + JSONObject jsonObject = JSON.parseObject(response); + JSONObject status = jsonObject.getJSONObject("status"); + JSONObject data = jsonObject.getJSONObject("data"); + Integer code = status.getInteger("code"); + String msg = status.getString("msg"); + if (code == null) { + result.setSuccess(false); + result.setMsg("TTS音色预览异常,请稍后重试"); + return result; + } + if (code.intValue() == 3000) { + result.setCode(200); + result.setSuccess(true); + result.setUrl(url + data.getString("url")); + result.setMsg(msg); + } else { + result.setCode(code); + result.setSuccess(false); + result.setMsg(msg); + } + return result; + } + public static void main(String[] args) { // AiVideoParam videoParam = new AiVideoParam(); // videoParam.setGen_txt("我写了一篇小说,你帮我看看。"); @@ -201,4 +235,5 @@ public class AiVideoHelper { } + }