- 需要先請求任務,再請求結果,隔一段時間才能去取到結果
2.語音轉文本(任務)
2.1 需要依賴
<!-- 統一版本管理中-->
<tencentcloud.version>3.1.317</tencentcloud.version>
<!--騰訊語音識別-->
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java</artifactId>
<version>${tencentcloud.version}</version>
</dependency>
<!--然后在需要用到的地方引入這個-->
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java</artifactId>
</dependency>
2.2 使用
//分段,第一段獲取taskId,第二段獲取文本
//獲取語音轉文本任務id
private Long getVoiceTaskId(String url) {
//String url = "http://www.luyin.com/upload/duanjuyuyin1206010.mp3";
try {
String secretId = TencentSecret.SECRET_ID;
String secretKey = TencentSecret.SECRET_KEY;
Credential cred = new Credential(secretId, secretKey);
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("asr.tencentcloudapi.com");
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
AsrClient client = new AsrClient(cred, "", clientProfile);
CreateRecTaskRequest req = new CreateRecTaskRequest();
req.setEngineModelType("16k_zh");//中文語音通用
req.setChannelNum(1L);//單聲道
req.setResTextFormat(0L);//識別結果文本(含分段時間戳)
req.setSourceType(0L);//0:語音 URL
req.setUrl(url);//音頻地址
CreateRecTaskResponse resp = client.CreateRecTask(req);
String voiceTaskResult = CreateRecTaskResponse.toJsonString(resp);
VoiceReadResult voiceReadResult = JSON.parseObject(voiceTaskResult, VoiceReadResult.class);
if (voiceReadResult != null) {
Object taskData = voiceReadResult.getData();
VoiceReadResult res = (VoiceReadResult) taskData;
Long taskId = res.getData().getTaskId();
return taskId;
}
} catch (TencentCloudSDKException e) {
system.out.println("騰訊音頻轉化任務介面呼叫失敗,錯誤資訊:"+e);
return null;
}
return null;
}
//獲取語音轉文本查詢結果
private String getVoiceText(Long taskId) {
try {
String secretId = TencentSecret.SECRET_ID;
String secretKey = TencentSecret.SECRET_KEY;
Credential cred = new Credential(secretId, secretKey);
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("asr.tencentcloudapi.com");
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
AsrClient client = new AsrClient(cred, "", clientProfile);
DescribeTaskStatusRequest req = new DescribeTaskStatusRequest();
req.setTaskId(taskId);
DescribeTaskStatusResponse resp = client.DescribeTaskStatus(req);
String voiceTextResult = CreateRecTaskResponse.toJsonString(resp);
VoiceReadResult voiceReadResult = JSON.parseObject(voiceTextResult, VoiceReadResult.class);
if (voiceReadResult != null) {
Object textData = voiceReadResult.getData();
VoiceReadResult res = (VoiceReadResult) textData;
String text = res.getData().getResult();
return text;
}
} catch (TencentCloudSDKException e) {
system.out.println("騰訊音頻轉化任務介面呼叫失敗,錯誤資訊:"+ e);
return null;
}
return null;
}
2.3 參考api地址
#語音轉文本請求
- https://console.cloud.tencent.com/api/explorer?Product=asr&Version=2019-06-14&Action=CreateRecTask&SignVersion=
- https://cloud.tencent.com/document/product/1093/37823
#語音轉文本結果
- https://console.cloud.tencent.com/api/explorer?Product=asr&Version=2019-06-14&Action=DescribeTaskStatus&SignVersion=
- https://cloud.tencent.com/document/product/1093/37822
2.4 封裝的類
import lombok.Data;
@Data
public class VoiceReadResult {
private VoiceReadResultData data;
private String requestId;
}
import lombok.Data;
@Data
public class VoiceReadResultData {
private Long taskId;
private Long status;
private String statusStr;
private String result;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295034.html
標籤:其他
下一篇:霍夫變換直線檢測
