From e27e094183d375bdc547c6a93f6451c4175eac09 Mon Sep 17 00:00:00 2001 From: msh-agent Date: Sun, 3 May 2026 03:05:37 +0800 Subject: [PATCH] =?UTF-8?q?fix(asr):=20=E4=B8=80=E5=8F=A5=E8=AF=9D?= =?UTF-8?q?=E8=AF=86=E5=88=AB=20sourceType=3D1=20=E6=97=B6=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=98=BE=E5=BC=8F=20voiceFormat=EF=BC=88test-0415=20?= =?UTF-8?q?=E5=8F=8D=E9=A6=883-1=20=E7=BB=AD=E4=BF=AE=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 老逻辑:req.setVoiceFormat(getVoiceFormat(request.getUrl())) sourceType=1 时 url 为空 → 默认 wav → 把 mp3 数据当 wav 给腾讯云 → "Audio decoding failed" - 修复:TencentAsrRequest 新增 voiceFormat 字段(前端已透传 'mp3') ToolTencentAsrServiceImpl.sentenceRecognition 优先使用 request.getVoiceFormat(), 缺省回落到 getVoiceFormat(url) 兼容老调用 Co-Authored-By: Claude Opus 4.7 (1M context) --- .../zbkj/common/request/tencent/TencentAsrRequest.java | 3 +++ .../service/impl/tool/ToolTencentAsrServiceImpl.java | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/msh_crmeb_22/crmeb-common/src/main/java/com/zbkj/common/request/tencent/TencentAsrRequest.java b/msh_crmeb_22/crmeb-common/src/main/java/com/zbkj/common/request/tencent/TencentAsrRequest.java index 39984a8..6f352de 100644 --- a/msh_crmeb_22/crmeb-common/src/main/java/com/zbkj/common/request/tencent/TencentAsrRequest.java +++ b/msh_crmeb_22/crmeb-common/src/main/java/com/zbkj/common/request/tencent/TencentAsrRequest.java @@ -50,4 +50,7 @@ public class TencentAsrRequest { @ApiModelProperty(value = "是否显示词级别时间戳") private Boolean wordInfo; + + @ApiModelProperty(value = "音频格式(sourceType=1 时必传:mp3/wav/m4a/aac/pcm/silk)", example = "mp3") + private String voiceFormat; } diff --git a/msh_crmeb_22/crmeb-service/src/main/java/com/zbkj/service/service/impl/tool/ToolTencentAsrServiceImpl.java b/msh_crmeb_22/crmeb-service/src/main/java/com/zbkj/service/service/impl/tool/ToolTencentAsrServiceImpl.java index 93c6fa9..e5b2ab6 100644 --- a/msh_crmeb_22/crmeb-service/src/main/java/com/zbkj/service/service/impl/tool/ToolTencentAsrServiceImpl.java +++ b/msh_crmeb_22/crmeb-service/src/main/java/com/zbkj/service/service/impl/tool/ToolTencentAsrServiceImpl.java @@ -179,7 +179,13 @@ public class ToolTencentAsrServiceImpl implements ToolTencentAsrService { request.getEngineModelType() : asrConfig.getDefaultEngineModel()); req.setSourceType(request.getSourceType() != null ? request.getSourceType().longValue() : 0L); - req.setVoiceFormat(getVoiceFormat(request.getUrl())); + // test-0415 反馈3-1:sourceType=1 时 url 为空,从 url 推断会默认 wav,导致 mp3 数据被当 wav 解 → "Audio decoding failed" + // 优先使用前端显式传入的 voiceFormat + String voiceFormat = request.getVoiceFormat(); + if (voiceFormat == null || voiceFormat.isEmpty()) { + voiceFormat = getVoiceFormat(request.getUrl()); + } + req.setVoiceFormat(voiceFormat); if (request.getSourceType() != null && request.getSourceType() == 1) { req.setData(request.getData());