package com.rj.dto; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; import java.util.List; /** * 语音转文本响应DTO * * @author rj * @date 2025-01-02 */ @Data @Schema(description = "语音转文本响应结果") public class AsrResponse { /** * 是否成功 */ @Schema(description = "是否成功") private boolean success; /** * 消息 */ @Schema(description = "响应消息") private String message; /** * 识别结果文本 */ @Schema(description = "识别结果文本") private String text; /** * 识别结果列表(包含时间戳和说话人信息) */ @Schema(description = "识别结果列表") private List results; /** * 音频时长(秒) */ @Schema(description = "音频时长(秒)") private Double duration; /** * 处理时间(毫秒) */ @Schema(description = "处理时间(毫秒)") private Long processingTimeMs; /** * 任务ID */ @Schema(description = "任务ID") private String taskId; /** * 请求ID */ @Schema(description = "请求ID") private String requestId; /** * 错误代码 */ @Schema(description = "错误代码") private String errorCode; /** * 错误信息 */ @Schema(description = "错误信息") private String errorMessage; /** * 创建时间 */ @Schema(description = "创建时间") private LocalDateTime createTime; /** * 识别结果详情 */ @Data @Schema(description = "识别结果详情") public static class AsrResult { /** * 开始时间(秒) */ @Schema(description = "开始时间(秒)") private Double startTime; /** * 结束时间(秒) */ @Schema(description = "结束时间(秒)") private Double endTime; /** * 识别文本 */ @Schema(description = "识别文本") private String text; /** * 说话人ID */ @Schema(description = "说话人ID") private String speakerId; /** * 置信度 */ @Schema(description = "置信度") private Double confidence; } /** * 创建成功响应 */ public static AsrResponse success(String text, List results, Double duration, Long processingTimeMs, String taskId, String requestId) { AsrResponse response = new AsrResponse(); response.setSuccess(true); response.setMessage("语音识别成功"); response.setText(text); response.setResults(results); response.setDuration(duration); response.setProcessingTimeMs(processingTimeMs); response.setTaskId(taskId); response.setRequestId(requestId); response.setCreateTime(LocalDateTime.now()); return response; } /** * 创建错误响应 */ public static AsrResponse error(String message) { return error(message, null, null); } /** * 创建错误响应 */ public static AsrResponse error(String message, String errorCode, String errorMessage) { AsrResponse response = new AsrResponse(); response.setSuccess(false); response.setMessage(message); response.setErrorCode(errorCode); response.setErrorMessage(errorMessage); response.setCreateTime(LocalDateTime.now()); return response; } }