语音识别修改

This commit is contained in:
DU 2021-04-12 11:14:38 +08:00
parent d681f9c29a
commit d7cadb46b7
2 changed files with 74 additions and 5 deletions

View File

@ -6,7 +6,6 @@ import club.joylink.rtss.vo.client.VoiceRecognitionResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
@ -15,7 +14,7 @@ import java.io.InputStream;
@Slf4j @Slf4j
@Service("baiDuVoiceService") @Service("baiDuVoiceService")
public class VoiceServiceImpl implements IVoiceService { public class BaiduVoiceServiceImpl implements IVoiceService {
@Autowired @Autowired
private AsrService asrService; private AsrService asrService;
@ -23,9 +22,6 @@ public class VoiceServiceImpl implements IVoiceService {
@Autowired @Autowired
private TtsService ttsService; private TtsService ttsService;
@Autowired
private RestTemplate restTemplate;
@Override @Override
public VoiceRecognitionResult voiceRecognition(MultipartFile multipartFile, String lang) { public VoiceRecognitionResult voiceRecognition(MultipartFile multipartFile, String lang) {
try { try {

View File

@ -0,0 +1,73 @@
package club.joylink.rtss.services.voice.huawei;
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
import club.joylink.rtss.services.IVoiceService;
import club.joylink.rtss.services.voice.baidu.AsrService;
import club.joylink.rtss.services.voice.baidu.TokenHolder;
import club.joylink.rtss.services.voice.baidu.TtsService;
import club.joylink.rtss.services.voice.baidu.VoiceAsrResult;
import club.joylink.rtss.vo.client.VoiceRecognitionResult;
import com.huawei.sis.bean.AuthInfo;
import com.huawei.sis.bean.SisConfig;
import com.huawei.sis.bean.request.AsrCustomShortRequest;
import com.huawei.sis.bean.response.AsrCustomShortResponse;
import com.huawei.sis.client.AsrCustomizationClient;
import com.huawei.sis.exception.SisException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Base64;
@Slf4j
@Service("HuaweiVoiceService")
public class HuaweiVoiceServiceImpl implements IVoiceService {
/**
* 华为语音识别配置
*/
private final String ak = "YDUXTXRYGAHGPHAIXZCU";
private final String sk = "Kcbm3sTDCYEou8kGeAhKxfBkgWybIn6IjJyGBX3p";
private final String region = "cn-north-4";
private final String projectId = "0aada8176180f28c2f34c0196f5394e8";
@Autowired
private RestTemplate restTemplate;
@Override
public String synthesis(String message, String per) {
throw BusinessExceptionAssertEnum.THIRD_SERVICE_CALL_EXCEPTION.exception("功能暂未实现");
}
@Override
public VoiceRecognitionResult voiceRecognition(MultipartFile file, String lang) {
String filePath;
try {
filePath = IVoiceService.handleAndSaveFile(file);
} catch (IOException e) {
throw BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.exception("语音文件上传失败", e);
}
AuthInfo authInfo = new AuthInfo(ak, sk, region, projectId);
SisConfig sisConfig = new SisConfig();
AsrCustomizationClient client = new AsrCustomizationClient(authInfo, sisConfig);
String data;
try {
data = Base64.getEncoder().encodeToString(file.getBytes());
} catch (IOException e) {
throw BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.exception("语音文件编码失败", e);
}
try {
AsrCustomShortRequest request = new AsrCustomShortRequest(data, "pcm16k16bit", "chinese_16k_common");
AsrCustomShortResponse response = client.getAsrShortResponse(request);
return new VoiceRecognitionResult(filePath, response.getResult().getText());
} catch (SisException e) {
throw BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.exception("语音识别失败", e);
}
}
}