저는 Cognitive-SpeakerRecognition을 가지고 놀고 있었고 새로운 사용자를 등록하려고했습니다. 이를 위해 Microsoft API Reference의 예제를 따랐습니다. 슬프게도 나는 오류 응답을 얻을 :Microsoft Cognitive-SpeakerRecognition Java를 사용하는 BadRequst
{
"error": {
"code": "BadRequest",
"message": "Invalid Audio Format: Not a WAVE file - no RIFF header"
}
}
나는 문제를 googleing 많은 시간을 소비하고 github 및 StackOverflow에 관련된 무언가를 발견했다. 불행히도 github의 답변을 적용 할 수 없었습니다 (긴 오디오 예제로 문제를 해결했지만 시도했지만 오류 응답이 계속 나타남). 그래서 누군가 내가 잘못하고있는 것을 알아낼 수 있습니까? 읽어 주셔서 감사합니다 :) 여기 내 코드입니다 :
public static void main(String[] args) {
HttpClient httpclient = HttpClients.createDefault();
try {
URIBuilder builder = new URIBuilder("https://api.projectoxford.ai/spid/v1.0/identificationProfiles/{PROFIL}/enroll");
URI uri = builder.build();
HttpPost request = new HttpPost(uri);
request.setHeader("Content-Type", "multipart/form-data");
request.setHeader("Ocp-Apim-Subscription-Key", "API_KEY");
FileInputStream someStream = new FileInputStream(new File("test.wav"));
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int bytesRead;
byte[] bytes = new byte[1024];
while ((bytesRead = someStream.read(bytes)) > 0) {
byteArrayOutputStream.write(bytes, 0, bytesRead);
}
byte[] data = byteArrayOutputStream.toByteArray();
MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
entityBuilder.setStrictMode();
entityBuilder.addBinaryBody("enrollmentData", data, ContentType.MULTIPART_FORM_DATA, "test.wav");
request.setEntity(entityBuilder.build());
HttpResponse response = httpclient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null) {
System.out.println(EntityUtils.toString(entity));
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
편집 : 다음은이 서비스에 의해 다중 폼 데이터 처리 비표준입니다
공유 파일 test.wav –
I : 업데이트 된 엔드 포인트를 반영, 전체 Java 추가
: 당신은 단지 하나의 페이로드 유형이 있기 때문에 어느 쪽이든, 당신은 다음을 수행 불과합니다 질문이 끝날 때 추가했습니다. –
오디오가 꽤 짧습니다. 오디오를 길게 시도 했습니까? –