1. 배경
이번에는 요구 사항 기록을 가져옵니다. 최근에는 AI 생방송실에서 음성번역을 하고 있다. 그래서 이번에는 Alibaba Cloud의 음성 전용 인터랙션과 Alibaba Cloud의 oss 서비스를 이용했습니다.
첫 번째는 Alibaba Cloud의 음성 전용 상호 작용인 nls-portal.console.aliyun.com/overview 입니다 .
oss 서비스는 알리바바클라우드 공식검색으로 바로가기 하시면 더 많이 사용됩니다.
2. 기술 개요
2.1 개요
- 라이브 룸에 들어갈 때 사용합니다. 프런트 엔드는 xxx 사용자가 생방송 방에 들어오는 것을 감지합니다. 이 정보를 캡처한 후. 프런트 엔드는 사용자 별명을 서버로 전송합니다.
- 서버는 닉네임과 구성된 환영 사본을 연결하고 Alibaba Cloud Smart Voice를 호출하여 오디오를 생성합니다.
- Alibaba Cloud Smart Voice는 지정된 오디오 합성 모델에 따라 해당 오디오 파일을 생성합니다.
- 서버는 해당 오디오 스트림을 가져오고 oss 서비스를 호출하여 오디오 스트림을 해당 서버에 업로드합니다.
- 업로드가 완료되면 오디오 링크를 프런트 엔드로 반환합니다. 프런트 엔드는 해당 오디오 파일을 재생합니다.
2.2 오디오 프로젝트 만들기
- Alibaba Cloud에 로그인한 후 nls-portal.console.aliyun.com/applist는 음성 상호 작용만 활성화할 수 있습니다.
- 해당 프로젝트 생성
- 설정을 바꾸다
- 합성하려는 음성을 선택하십시오
3. 기술적 구현
3.1 토큰 생성
/**
* 获取token
*
* @return
* @throws IOException
*/
private static String getToken() throws IOException {
AccessToken accessToken = new AccessToken("accessKeyId", "accessKeySecret");
accessToken.apply();
String token = accessToken.getToken();
return token;
}
复制代码
3.2 해당 오디오 스트림 파일 생성
private void processGETRequest(String appkey, String accessToken, String text, String format, int sampleRate, String voice, String filePath) {
/**
* 设置HTTPS GET请求:
* 1.使用HTTPS协议
* 2.语音识别服务域名:nls-gateway-cn-shanghai.aliyuncs.com
* 3.语音识别接口请求路径:/stream/v1/tts
* 4.设置必须请求参数:appkey、token、text、format、sample_rate
* 5.设置可选请求参数:voice、volume、speech_rate、pitch_rate
*/
String url = "https://nls-gateway-cn-shanghai.aliyuncs.com/stream/v1/tts";
url = url + "?appkey=" + appkey;
url = url + "&token=" + accessToken;
url = url + "&text=" + text;
url = url + "&format=" + format;
url = url + "&voice=" + voice;
url = url + "&sample_rate=" + sampleRate;
/**
* 发送HTTPS GET请求,处理服务端的响应。
*/
Request request = new Request.Builder().url(url).get().build();
try {
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
String contentType = response.header("Content-Type");
if ("audio/mpeg".equals(contentType)) {
byte[] bytes = response.body().bytes();
ossService.ossUploadByStream(filePath, new ByteArrayInputStream(bytes));
} else {
String errorMessage = response.body().string();
}
response.close();
} catch (Exception e) {
e.printStackTrace();
}
}
复制代码
3.3 oss에 오디오 스트림 파일 업로드
public void ossUploadByStream(String filePath, InputStream input) {
OSS ossClient = new OSSClientBuilder().build(aLiYunConfig.getEndpoint(), aLiYunConfig.getAccessKeyId(),
aLiYunConfig.getSecretAccessKey());
PutObjectRequest putObjectRequest = new PutObjectRequest(aLiYunConfig.getBucketName(), filePath, input);
ossClient.putObject(putObjectRequest);
ossClient.shutdown();
}
复制代码
4. 요약
- 오디오 생성을 위해 oss에 직접 저장되므로 서버의 메모리를 점유할 필요가 없습니다. oss 서비스에 직접 업로드합니다. 사용하기 더 편리합니다.
- 오디오를 생성하려면 더 많은 문서를 읽어야 합니다. 공식 SDK도 제공됩니다. 직접 사용할 수도 있습니다.