Skip to content

heartbeat" field in DaUnrecognizedPropertyException for "shScopeAudioTranscriptionApi$RealtimeResponse$Payload$Output$Sentence during real-time audio transcription #575

@Mr-Pudding

Description

@Mr-Pudding

组件:com.anlibaba.cloud.ai DashScope 音频流式转录(DashScopeAudioTranscriptionApi),具体涉及实时流处理(realtimeStream 方法)。

相关功能:实时音频转录(Audio Transcription)。

描述错误
在调用 DashScopeAudioTranscriptionApi 的 realtimeStream 方法进行实时音频转录时,遇到 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException 异常。错误原因是 API 响应中包含一个未识别的字段 "heartbeat",但 DashScopeAudioTranscriptionApi$RealtimeResponse$Payload$Output$Sentence 类中未定义该字段,导致 JSON 反序列化失败。

错误日志如下:
reactor.core.Exceptions$ErrorCallbackNotImplemented: com.alibaba.cloud.ai.dashscope.common.DashScopeException: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "heartbeat" (class com.alibaba.cloud.ai.dashscope.api.DashScopeAudioTranscriptionApi$RealtimeResponse$Payload$Output$Sentence), not marked as ignorable (9 known properties: "end_time", "begin_time", "stash", "sentence_id", "words", "speaker_id", "text", "sentence_end", "channel_id"])
at [Source: REDACTED (StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION disabled); line: 1, column: 370] (through reference chain: com.alibaba.cloud.ai.dashscope.api.DashScopeAudioTranscriptionApi$RealtimeResponse["payload"]->com.alibaba.cloud.ai.dashscope.api.DashScopeAudioTranscriptionApi$RealtimeResponse$Payload["output"]->com.alibaba.cloud.ai.dashscope.api.DashScopeAudioTranscriptionApi$RealtimeResponse$Payload$Output["sentence"]->com.alibaba.cloud.ai.dashscope.api.DashScopeAudioTranscriptionApi$RealtimeResponse$Payload$Output$Sentence["heartbeat"])

步骤重现此行为:

转至 DashScopeAudioTranscriptionModel 类中的 stream 方法。
使用一个有效的音频文件(例如 WAV 格式)创建一个 AudioTranscriptionPrompt。
调用 model.stream(prompt) 方法以启动实时音频转录。
查看错误日志,观察 UnrecognizedPropertyException 异常,提示 "heartbeat" 字段未识别。

预期行为
预期 realtimeStream 方法能够成功处理 API 响应,并将实时转录结果流式传输到客户端,而不会因未识别的 "heartbeat" 字段导致反序列化失败。DashScopeAudioTranscriptionApi$RealtimeResponse$Payload$Output$Sentence 类应该能够处理所有 API 响应字段,或者忽略未知字段。

附加上下文
库版本:spring-ai-alibaba-core-1.0.0-M6.2-SNAPSHOT(开发快照版本)基于 spring-ai-alibaba-core-1.0.0-M6.1 的未正式发布的github版本。
环境:Java 17,Spring AI 框架,WebSocket 通信。
可能原因:DashScope API 可能更新了实时流转录的响应格式,新增了 "heartbeat" 字段,但客户端库未同步更新,导致模型类 Sentence 缺少该字段。
调查结果:在 Alibaba Cloud DashScope 文档 和 GitHub 仓库中未找到关于 "heartbeat" 字段的明确记录,可能是未文档化的变更。

建议修复:
在 Sentence 记录中添加 "heartbeat" 字段,例如 @JsonProperty("heartbeat") String heartbeat。
在类上添加 @JsonIgnoreProperties(ignoreUnknown = true) 以忽略未知字段。
发布新版本的库,同步 API 变更。

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions