From fb0b54bf2c2ef98314179bbeb4a431f7e2579d14 Mon Sep 17 00:00:00 2001 From: Besmir Beqiri Date: Fri, 25 Aug 2023 12:27:49 +0200 Subject: [PATCH 1/2] Handle all response formats while creating an audio transcription --- .../theokanning/openai/client/OpenAiApi.java | 2 +- .../openai/service/OpenAiService.java | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/client/src/main/java/com/theokanning/openai/client/OpenAiApi.java b/client/src/main/java/com/theokanning/openai/client/OpenAiApi.java index 1563b91b..e5b30f26 100644 --- a/client/src/main/java/com/theokanning/openai/client/OpenAiApi.java +++ b/client/src/main/java/com/theokanning/openai/client/OpenAiApi.java @@ -117,7 +117,7 @@ public interface OpenAiApi { Single createImageVariation(@Body RequestBody requestBody); @POST("/v1/audio/transcriptions") - Single createTranscription(@Body RequestBody requestBody); + Single createTranscription(@Body RequestBody requestBody); @POST("/v1/audio/translations") Single createTranslation(@Body RequestBody requestBody); diff --git a/service/src/main/java/com/theokanning/openai/service/OpenAiService.java b/service/src/main/java/com/theokanning/openai/service/OpenAiService.java index 63da487c..93523ad8 100644 --- a/service/src/main/java/com/theokanning/openai/service/OpenAiService.java +++ b/service/src/main/java/com/theokanning/openai/service/OpenAiService.java @@ -280,7 +280,25 @@ public TranscriptionResult createTranscription(CreateTranscriptionRequest reques builder.addFormDataPart("language", request.getLanguage()); } - return execute(api.createTranscription(builder.build())); + try (ResponseBody responseBody = execute(api.createTranscription(builder.build()))) { + final String responseFormat = request.getResponseFormat() == null ? "json" : request.getResponseFormat(); + switch (responseFormat) { + case "json": + case "verbose_json": + final ObjectMapper objectMapper = defaultObjectMapper(); + return objectMapper.readValue(responseBody.string(), TranscriptionResult.class); + case "text": + case "vtt": + case "srt": + final TranscriptionResult result = new TranscriptionResult(); + result.setText(responseBody.string()); + return result; + default: + throw new IllegalArgumentException("Unknown response format: " + responseFormat); + } + } catch (IOException ex) { + throw new RuntimeException(ex); + } } public TranslationResult createTranslation(CreateTranslationRequest request, String audioPath) { From edbfb9ac0f06f551b4cdb1394aa5386b7578af2d Mon Sep 17 00:00:00 2001 From: Besmir Beqiri Date: Fri, 25 Aug 2023 12:29:34 +0200 Subject: [PATCH 2/2] Handle all response formats while creating an audio translation --- .../theokanning/openai/client/OpenAiApi.java | 2 +- .../openai/service/OpenAiService.java | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/client/src/main/java/com/theokanning/openai/client/OpenAiApi.java b/client/src/main/java/com/theokanning/openai/client/OpenAiApi.java index e5b30f26..e750e6a7 100644 --- a/client/src/main/java/com/theokanning/openai/client/OpenAiApi.java +++ b/client/src/main/java/com/theokanning/openai/client/OpenAiApi.java @@ -120,7 +120,7 @@ public interface OpenAiApi { Single createTranscription(@Body RequestBody requestBody); @POST("/v1/audio/translations") - Single createTranslation(@Body RequestBody requestBody); + Single createTranslation(@Body RequestBody requestBody); @POST("/v1/moderations") Single createModeration(@Body ModerationRequest request); diff --git a/service/src/main/java/com/theokanning/openai/service/OpenAiService.java b/service/src/main/java/com/theokanning/openai/service/OpenAiService.java index 93523ad8..442c33c5 100644 --- a/service/src/main/java/com/theokanning/openai/service/OpenAiService.java +++ b/service/src/main/java/com/theokanning/openai/service/OpenAiService.java @@ -324,7 +324,25 @@ public TranslationResult createTranslation(CreateTranslationRequest request, jav builder.addFormDataPart("temperature", request.getTemperature().toString()); } - return execute(api.createTranslation(builder.build())); + try (ResponseBody responseBody = execute(api.createTranslation(builder.build()))) { + final String responseFormat = request.getResponseFormat() == null ? "json" : request.getResponseFormat(); + switch (responseFormat) { + case "json": + case "verbose_json": + final ObjectMapper objectMapper = defaultObjectMapper(); + return objectMapper.readValue(responseBody.string(), TranslationResult.class); + case "text": + case "vtt": + case "srt": + final TranslationResult result = new TranslationResult(); + result.setText(responseBody.string()); + return result; + default: + throw new IllegalArgumentException("Unknown response format: " + responseFormat); + } + } catch (IOException ex) { + throw new RuntimeException(ex); + } } public ModerationResult createModeration(ModerationRequest request) {