From c7f1be2a153ca3746919497c5997e8fe8eab2070 Mon Sep 17 00:00:00 2001 From: liuzhaotian Date: Sun, 28 Apr 2024 14:55:01 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E5=B7=A5=E5=BA=8F=E4=BB=A3?= =?UTF-8?q?=E7=A0=81-=E8=AF=AD=E9=9F=B3=E5=8F=82=E6=95=B0-=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/voice/VoiceController.java | 8 +++-- .../controller/admin/voice/vo/VoiceReqVO.java | 3 +- .../manage/service/voice/VoiceService.java | 3 +- .../service/voice/VoiceServiceImpl.java | 36 +++++++++++++++++-- .../src/main/resources/bootstrap-dev.yaml | 2 +- .../src/main/resources/bootstrap-local.yaml | 2 +- 6 files changed, 45 insertions(+), 9 deletions(-) diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/voice/VoiceController.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/voice/VoiceController.java index c1573a5fa..826be6071 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/voice/VoiceController.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/voice/VoiceController.java @@ -28,17 +28,21 @@ public class VoiceController { private VoiceService voiceService; - @PostMapping("/") + @PostMapping() @Operation(summary = "语音播报") @PreAuthorize("@ss.hasPermission('manage:voice:insert')") public CommonResult voiceAnnouncements(@Valid @RequestBody VoiceReqVO reqVO ) throws Exception { - String sourceFile = voiceService.voiceAnnouncements(reqVO.getText()); + String sourceFile = voiceService.voiceAnnouncements(reqVO.getData()); String gzipFile = sourceFile+".zip"; + // 压缩语音文件 voiceService.zipFiles(sourceFile, gzipFile); + // 删除生成的 mp3 文件 + voiceService.deleteFiles(sourceFile); + return CommonResult.success(gzipFile); } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/voice/vo/VoiceReqVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/voice/vo/VoiceReqVO.java index b28c4574e..2585b0391 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/voice/vo/VoiceReqVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/voice/vo/VoiceReqVO.java @@ -15,5 +15,6 @@ public class VoiceReqVO { @Schema(description = "语音数据", requiredMode = Schema.RequiredMode.REQUIRED) - private String text; + private String data; + } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/voice/VoiceService.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/voice/VoiceService.java index 3ad2b61ff..a5b73ebc8 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/voice/VoiceService.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/voice/VoiceService.java @@ -7,10 +7,11 @@ public interface VoiceService { // 生成音频文件 - String voiceAnnouncements(String text); + String voiceAnnouncements(String data); // 把生成的音频文件进行压缩 void zipFiles(String sourceFile, String gzipFile) throws IOException; + void deleteFiles(String sourceFile); } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/voice/VoiceServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/voice/VoiceServiceImpl.java index 18f68819e..e33d4047a 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/voice/VoiceServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/voice/VoiceServiceImpl.java @@ -33,11 +33,15 @@ public class VoiceServiceImpl implements VoiceService{ private VocieParameters vocieParameters; + static { + System.loadLibrary("jacob-1.18-x64"); + } // 生成音频文件 @Override - public String voiceAnnouncements(String text) { - // + public String voiceAnnouncements(String data) { + + // 音频保存的路径 String path = vocieParameters.getPath(); @@ -80,7 +84,7 @@ public class VoiceServiceImpl implements VoiceService{ // 设置朗读速度 -10 ~ +10 Dispatch.put(spVoice, "Rate", new Variant(readingSpeed)); - Dispatch.call(spVoice, "Speak", new Variant(text)); + Dispatch.call(spVoice, "Speak", new Variant(data)); System.out.println("输出语音文件成功!"); @@ -132,6 +136,7 @@ public class VoiceServiceImpl implements VoiceService{ System.out.println("文件压缩成功"); + } catch (Exception e) { log.error("batchZipFiles error fileNames:"); } finally { @@ -142,9 +147,34 @@ public class VoiceServiceImpl implements VoiceService{ } + // 删除生成的 mp3 文件 + @Override + public void deleteFiles(String sourceFile) { + // 检查文件路径是否为空 + if (sourceFile == null || sourceFile.isEmpty()) { + System.out.println("文件路径为空"); + } + File file = new File(sourceFile); + // 检查文件是否存在 + if (!file.exists()) { + System.out.println("文件不存在:" + sourceFile); + } + + // 检查是否是文件 + if (!file.isFile()) { + System.out.println("路径指向的不是文件:" + sourceFile); + } + + // 尝试删除文件 + if (file.delete()) { + System.out.println("文件删除成功:" + sourceFile); + } else { + System.out.println("文件删除失败:" + sourceFile); + } + } } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/bootstrap-dev.yaml b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/bootstrap-dev.yaml index eff6d09c7..85d60b65e 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/bootstrap-dev.yaml +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/bootstrap-dev.yaml @@ -19,7 +19,7 @@ spring: # Nacos Config 配置项,对应 NacosConfigProperties 配置属性类 config: server-addr: 192.168.1.205:8848 # Nacos 服务器地址 - namespace: dev # 命名空间 dev 的ID,不能直接使用 dev 名称。创建命名空间的时候需要指定ID为 dev,这里使用 dev 开发环境 + namespace: # 命名空间 dev 的ID,不能直接使用 dev 名称。创建命名空间的时候需要指定ID为 dev,这里使用 dev 开发环境 group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP name: ${spring.application.name} # 使用的 Nacos 配置集的 dataId,默认为 spring.application.name file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/bootstrap-local.yaml b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/bootstrap-local.yaml index dc9bc86c2..427d44813 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/bootstrap-local.yaml +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/bootstrap-local.yaml @@ -17,7 +17,7 @@ spring: # Nacos Config 配置项,对应 NacosConfigProperties 配置属性类 config: server-addr: 127.0.0.1:8848 # Nacos 服务器地址 - namespace: dev # 命名空间 dev 的ID,不能直接使用 dev 名称。创建命名空间的时候需要指定ID为 dev,这里使用 dev 开发环境 + namespace: # 命名空间 dev 的ID,不能直接使用 dev 名称。创建命名空间的时候需要指定ID为 dev,这里使用 dev 开发环境 group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP name: ${spring.application.name} # 使用的 Nacos 配置集的 dataId,默认为 spring.application.name file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties