1.依赖包

<!-- https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dashscope-sdk-java</artifactId>
    <version>2.22.0</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>

2.进行转换方法

public static String getAudioToTextUrl(String ossUrl) {
    Constants.baseHttpApiUrl = "https://dashscope.aliyuncs.com/api/v1";
    // 创建转写请求参数
        TranscriptionParam param =
                TranscriptionParam.builder()
                                  // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx")
                                  .apiKey("")
                                  .model("fun-asr")
                                  .fileUrls(Arrays.asList(ossUrl))
                                  .build();
        try {
            Transcription transcription = new Transcription();
            // 提交转写请求
            TranscriptionResult result = transcription.asyncCall(param);
            // 阻塞等待任务完成并获取结果
            result = transcription.wait(
                    TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
            return  new GsonBuilder().setPrettyPrinting().create().toJson(result.getOutput());
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        return null;
}
3.解析结果方法
public static String fetchTranscriptionText(String transcriptionUrl) throws Exception {
    URL url = new URL(transcriptionUrl);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("GET");
    conn.setConnectTimeout(5000);
    conn.setReadTimeout(5000);

    int status = conn.getResponseCode();
    if (status != 200) {
        throw new IOException("HTTP Error: " + status + ", Message: " + conn.getResponseMessage());
    }

    // 读取响应体
    BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    StringBuilder sb = new StringBuilder();
    String line;
    while ((line = reader.readLine()) != null) {
        sb.append(line).append("\n");
    }
    reader.close();
    conn.disconnect();

    // 解析 JSON
    JsonElement root = JsonParser.parseString(sb.toString());
    JsonObject jsonObject = root.getAsJsonObject();
    JsonElement resultJsonElement = jsonObject.get("transcripts");
    JsonArray resultJsonArray = resultJsonElement.getAsJsonArray();
    JsonObject resultObj = resultJsonArray.get(0).getAsJsonObject();

    // 提取 text 字段(最简单的场景)
    if (resultObj.has("text")) {
        JsonElement textElement = resultObj.get("text");
        String text = textElement.getAsString();
        return text;
    } else {
        System.err.println("No 'text' field found in transcription result.");
        return null;
    }
}

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐