OpenAI Whisper API,响应状态码400错误

问题描述 投票:0回答:1

我正在尝试在 Android 中使用 Whisper API,但我遇到了请求代码始终返回 400 错误的问题。 首先,由于它在使用 Postman 时工作正常,我相信问题与密钥或内容标头值无关。 因此,根据我目前的假设,我认为使用 okhttp3 可能会出错。

下面是我的Android代码。

public void requestWhisper(String file, Callback callback) {

        OkHttpClient client = new OkHttpClient();
        MediaType mediaType = MediaType.parse("audio/mpeg"); 
        File audioFile = new File(file);

        RequestBody requestBody = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("model", "whisper-1")
                .addFormDataPart("file", audioFile.getName(), 
                                  RequestBody.create(audioFile, mediaType))
                .build();

        Request request = new Request.Builder()
                .url(whisper_api)
                .post(requestBody)
                .addHeader("Authorization", "Bearer " + key)
                .addHeader("Content-Type", "multipart/form-data")
                .build();


        client.newCall(request).enqueue(new okhttp3.Callback() {
            @Override
            public void onResponse(@NonNull Call call, @NonNull okhttp3.Response response) throws IOException {
                if (response.isSuccessful()) {
                    String result = response.body().string();
                    callback.onCallback(result);
                } else {
                    callback.onCallback("Error: " + response.message());
                }
            }
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
                callback.onCallback("Error: " + e.getMessage());
            }
        });
}

下面是回应。

Response{protocol=h2, code=400, message=, url=https://api.openai.com/v1/audio/transcriptions}

我目前正面临障碍。如果您能提供任何建议或意见,我将不胜感激。

除了上面提到的代码之外,这是我尝试的另一段代码。

OkHttpClient client = new OkHttpClient().newBuilder().build();
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
  .addFormDataPart("model","whisper-1")
  .addFormDataPart("file","VOICE_FILE.mp3",
    RequestBody.create(MediaType.parse("application/octet-stream"),
    new File("FILE_PATH")))
  .build();
Request request = new Request.Builder()
  .url("https://api.openai.com/v1/audio/transcriptions")
  .method("POST", body)
  .addHeader("Authorization", "Bearer " + key)
  .addHeader("Content-Type", "multipart/form-data")
  .build();
Response response = client.newCall(request).execute();

然而,结果是一样的

java android okhttp openai-api openai-whisper
1个回答
0
投票

欢迎来到 Stack Overflow!

尝试获取音频文件的绝对路径,并在向 Whisper API 发送 POST 请求时发送音频文件的内容

根据 python 和节点的示例请求 API Reference for Creating transcriptions 您需要获取音频文件的绝对路径,读取音频文件的内容,并将其分配给一个变量并将该变量用作

file
您对 OpenAI Whisper API 的 POST 请求的参数

© www.soinside.com 2019 - 2024. All rights reserved.