parent
321605663f
commit
bec904c711
@ -80,7 +80,7 @@ public interface IVoiceService {
|
|||||||
os.close();
|
os.close();
|
||||||
}
|
}
|
||||||
if (saveFile != null) {
|
if (saveFile != null) {
|
||||||
// saveFile.delete();
|
saveFile.delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -106,11 +106,6 @@ public interface IVoiceService {
|
|||||||
*/
|
*/
|
||||||
String synthesis(String message, String per);
|
String synthesis(String message, String per);
|
||||||
|
|
||||||
/**
|
|
||||||
* 华为语音识别
|
|
||||||
*/
|
|
||||||
VoiceRecognitionResult huaweiVoiceRecognition(MultipartFile file, String lang);
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
@ -3,12 +3,6 @@ package club.joylink.rtss.services.voice.baidu;
|
|||||||
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
||||||
import club.joylink.rtss.services.IVoiceService;
|
import club.joylink.rtss.services.IVoiceService;
|
||||||
import club.joylink.rtss.vo.client.VoiceRecognitionResult;
|
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 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;
|
||||||
@ -18,20 +12,11 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.Base64;
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service("baiDuVoiceService")
|
@Service("baiDuVoiceService")
|
||||||
public class VoiceServiceImpl implements IVoiceService {
|
public class VoiceServiceImpl 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
|
@Autowired
|
||||||
private AsrService asrService;
|
private AsrService asrService;
|
||||||
|
|
||||||
@ -65,30 +50,4 @@ public class VoiceServiceImpl implements IVoiceService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public VoiceRecognitionResult huaweiVoiceRecognition(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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -255,7 +255,7 @@ public class ConversationManagerService {
|
|||||||
Simulation simulation = this.groupSimulationCache.getSimulationByGroup(group);
|
Simulation simulation = this.groupSimulationCache.getSimulationByGroup(group);
|
||||||
Conversation conversation = simulation.getSimulationConversationById(conversationId);
|
Conversation conversation = simulation.getSimulationConversationById(conversationId);
|
||||||
SimulationMember member = simulation.getSimulationMemberByUserId(userVO.getId());
|
SimulationMember member = simulation.getSimulationMemberByUserId(userVO.getId());
|
||||||
VoiceRecognitionResult recognitionResult = this.iVoiceService.huaweiVoiceRecognition(file, "");
|
VoiceRecognitionResult recognitionResult = this.iVoiceService.voiceRecognition(file, "");
|
||||||
String upperCaseResult = recognitionResult.getResult().toUpperCase();
|
String upperCaseResult = recognitionResult.getResult().toUpperCase();
|
||||||
String handledContent = this.simulationVoiceHandler.handle(upperCaseResult);
|
String handledContent = this.simulationVoiceHandler.handle(upperCaseResult);
|
||||||
this.chat(simulation, conversation, member, handledContent, recognitionResult.getFilePath());
|
this.chat(simulation, conversation, member, handledContent, recognitionResult.getFilePath());
|
||||||
|
Loading…
Reference in New Issue
Block a user