基于 fun-asr模型实现录音文件识别
/ 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx")// 阻塞等待任务完成并获取结果。// 提取 text 字段(最简单的场景)// 创建转写请求参数。// 解析 JSON。
·
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;
}
}
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)