Android-使用改进型2发送.wav文件进行说话人识别

Android-使用改进型2发送.wav文件进行说话人识别,android,httprequest,speech-recognition,retrofit2,voice-recognition,Android,Httprequest,Speech Recognition,Retrofit2,Voice Recognition,我正在尝试在Android上使用Reformation2发送一个.wav文件,以便使用Microsoft Speaker Recognition API()的创建注册请求 但我总是得到以下错误: com.mobile.cir.voicerecognition D/OkHttp: <-- 400 Bad Request https://api.projectoxford.ai/spid/v1.0/verificationProfiles/94BC205B-FACD-42A7-9D80-485

我正在尝试在Android上使用Reformation2发送一个.wav文件,以便使用Microsoft Speaker Recognition API()的创建注册请求

但我总是得到以下错误:

com.mobile.cir.voicerecognition D/OkHttp: <-- 400 Bad Request https://api.projectoxford.ai/spid/v1.0/verificationProfiles/94BC205B-FACD-42A7-9D80-485403106627/enroll (3907ms)
com.mobile.cir.voicerecognition D/OkHttp: Cache-Control: no-cache
com.mobile.cir.voicerecognition D/OkHttp: Pragma: no-cache
com.mobile.cir.voicerecognition D/OkHttp: Content-Length: 123
com.mobile.cir.voicerecognition D/OkHttp: Content-Type: application/json; charset=utf-8
com.mobile.cir.voicerecognition D/OkHttp: Expires: -1
com.mobile.cir.voicerecognition D/OkHttp: X-AspNet-Version: 4.0.30319
com.mobile.cir.voicerecognition D/OkHttp: X-Powered-By: ASP.NET
com.mobile.cir.voicerecognition D/OkHttp: apim-request-id: e5472946-ec90-4662-a3c9-dda62c2c6b27
com.mobile.cir.voicerecognition D/OkHttp: Date: Fri, 12 Aug 2016 11:43:04 GMT
com.mobile.cir.voicerecognition D/OkHttp: }
com.mobile.cir.voicerecognition D/OkHttp: <-- END HTTP (123-byte body)
com.mobile.cir.voicerecognition D/EnableVoiceRecognition: Upload success
com.mobile.cir.voicerecognition D/error message: RequestError{code='null', message='null'}
该职位要求:

 @Multipart
 @POST("verificationProfiles/{VerificationProfileId}/enroll")
 Call<EnrollmentResponse> createEnrollment(@Path("VerificationProfileId") String profileId,
                                           @Header("Content-Type") String contentType,
                                           @Header("Ocp-Apim-Subscription-Key") String subscriptionKey,
                                           @Part("file") RequestBody audioFile);
}
@Multipart
@POST(“verificationProfiles/{VerificationProfileId}/enroll”)
调用createEnrollment(@Path(“VerificationProfileId”)字符串profileId,
@标题(“内容类型”)字符串contentType,
@标题(“Ocp Apim订阅密钥”)字符串订阅密钥,
@部分(“文件”)请求主体音频文件);
}
行动本身:

File audioFile = new File(fileDirectory + "my_voice.wav");
RequestBody requestAudioFile = RequestBody.create(MediaType.parse("application/octet-stream"), audioFile);
Call<EnrollmentResponse> call = apiService.createEnrollment(PROFILE_ID_TEST,"audio/wav; samplerate=1600",API_KEY,requestAudioFile);
call.enqueue(new Callback<EnrollmentResponse>() {
    @Override
    public void onResponse(Call<EnrollmentResponse> call, Response<EnrollmentResponse> response) {
        Log.d(TAG,"Upload success");
        RequestError error = ErrorUtils.parseError(response);
        Log.d("error message", error.toString());
        Log.d(TAG,"Response: " + response.body().toString());
    }

    @Override
    public void onFailure(Call<EnrollmentResponse> call, Throwable t) {
        Log.d(TAG,"Upload error: " + t.getMessage());
    }
});
File audioFile=新文件(fileDirectory+my_voice.wav);
RequestBody requestAudioFile=RequestBody.create(MediaType.parse(“应用程序/八位字节流”),audioFile;
Call Call=apiService.createEnrollment(PROFILE_ID_TEST,“audio/wav;samplerate=1600”,API_键,requestAudioFile);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
Log.d(标记“上传成功”);
RequestError error=ErrorUtils.parseError(响应);
Log.d(“错误消息”,error.toString());
Log.d(标记,“Response:+Response.body().toString());
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.d(标记“上载错误:+t.getMessage());
}
});
我哪里做错了

*编辑* 微软开发人员为这个API发布了Android库
()

您是否遵循音频持续时间限制?“音频文件应该至少有1秒长,不超过15秒。”是的,我有。音频长度为7/8秒。您是否遵守音频持续时间限制?“音频文件应该至少有1秒长,不超过15秒。”是的,我有。音频为7/8秒长。
File audioFile = new File(fileDirectory + "my_voice.wav");
RequestBody requestAudioFile = RequestBody.create(MediaType.parse("application/octet-stream"), audioFile);
Call<EnrollmentResponse> call = apiService.createEnrollment(PROFILE_ID_TEST,"audio/wav; samplerate=1600",API_KEY,requestAudioFile);
call.enqueue(new Callback<EnrollmentResponse>() {
    @Override
    public void onResponse(Call<EnrollmentResponse> call, Response<EnrollmentResponse> response) {
        Log.d(TAG,"Upload success");
        RequestError error = ErrorUtils.parseError(response);
        Log.d("error message", error.toString());
        Log.d(TAG,"Response: " + response.body().toString());
    }

    @Override
    public void onFailure(Call<EnrollmentResponse> call, Throwable t) {
        Log.d(TAG,"Upload error: " + t.getMessage());
    }
});