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 7342e953..c496e76e 100644 --- a/client/src/main/java/com/theokanning/openai/client/OpenAiApi.java +++ b/client/src/main/java/com/theokanning/openai/client/OpenAiApi.java @@ -159,10 +159,10 @@ 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); + Single createTranslation(@Body RequestBody requestBody); @POST("/v1/audio/speech") Single createSpeech(@Body CreateSpeechRequest 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 52ab6b0f..459727c7 100644 --- a/service/src/main/java/com/theokanning/openai/service/OpenAiService.java +++ b/service/src/main/java/com/theokanning/openai/service/OpenAiService.java @@ -330,7 +330,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) { @@ -356,7 +374,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) {