Current section
Files
Jump to
Current section
Files
lib/operations/audio.ex
defmodule OpenAi.Audio do
@moduledoc """
Provides API endpoints related to audio
"""
@default_client OpenAi.Client
@doc """
Generates audio from the input text.
"""
@spec create_speech(OpenAi.Audio.Speech.CreateRequest.t(), keyword) ::
{:ok, String.t()} | {:error, OpenAi.Error.error()}
def create_speech(body, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [body: body],
call: {OpenAi.Audio, :create_speech},
url: "/audio/speech",
body: body,
method: :post,
request: [{"application/json", {OpenAi.Audio.Speech.CreateRequest, :t}}],
response: [{200, {:string, :generic}}],
opts: opts
})
end
@doc """
Transcribes audio into the input language.
"""
@spec create_transcription(OpenAi.Audio.Transcription.CreateRequest.t(), keyword) ::
{:ok,
OpenAi.Audio.Transcription.CreateResponse.Json.t()
| OpenAi.Audio.Transcription.CreateResponse.VerboseJson.t()}
| {:error, OpenAi.Error.error()}
def create_transcription(body, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [body: body],
call: {OpenAi.Audio, :create_transcription},
url: "/audio/transcriptions",
body: body,
method: :post,
request: [{"multipart/form-data", {OpenAi.Audio.Transcription.CreateRequest, :t}}],
response: [
{200,
{:union,
[
{OpenAi.Audio.Transcription.CreateResponse.Json, :t},
{OpenAi.Audio.Transcription.CreateResponse.VerboseJson, :t}
]}}
],
opts: opts
})
end
@doc """
Translates audio into English.
"""
@spec create_translation(OpenAi.Audio.Translation.CreateRequest.t(), keyword) ::
{:ok,
OpenAi.Audio.Translation.CreateResponse.Json.t()
| OpenAi.Audio.Translation.CreateResponse.VerboseJson.t()}
| {:error, OpenAi.Error.error()}
def create_translation(body, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [body: body],
call: {OpenAi.Audio, :create_translation},
url: "/audio/translations",
body: body,
method: :post,
request: [{"multipart/form-data", {OpenAi.Audio.Translation.CreateRequest, :t}}],
response: [
{200,
{:union,
[
{OpenAi.Audio.Translation.CreateResponse.Json, :t},
{OpenAi.Audio.Translation.CreateResponse.VerboseJson, :t}
]}}
],
opts: opts
})
end
end