defmodule OpenAI.Audio do
@moduledoc """
Learn how to turn audio into text.
Related guide: [Speech to text](https://platform.openai.com/docs/guides/speech-to-text)
https://platform.openai.com/docs/api-reference/audio
"""
alias OpenAI.Client
@type create_transcription_params :: %{
required(:file) => String.t(),
required(:model) => String.t(),
optional(:prompt) => String.t(),
optional(:response_format) => String.t(),
optional(:temperature) => float(),
optional(:language) => String.t()
}
@doc """
Transcribes audio into the input language.
"""
@spec create_transcription(Client.t(), create_transcription_params(), Keyword.t()) ::
Client.result()
def create_transcription(client, params, opts \\ []) do
client
|> Client.post("/v1/audio/transcriptions", params, opts)
|> Client.handle_response(opts)
end
@type create_translation_params :: %{
required(:file) => String.t(),
required(:model) => String.t(),
optional(:prompt) => String.t(),
optional(:response_format) => String.t(),
optional(:temperature) => float()
}
@doc """
Translates audio into English.
"""
@spec create_translation(Client.t(), create_translation_params(), Keyword.t()) ::
Client.result()
def create_translation(client, params, opts \\ []) do
client
|> Client.post("/v1/audio/translations", params, opts)
|> Client.handle_response(opts)
end
end