Codex.Realtime.Audio (Codex SDK v0.7.2)

Copy Markdown View Source

Audio format utilities for realtime sessions.

Supports PCM16 (24kHz), G.711 u-law, and G.711 A-law formats.

Summary

Functions

Decode base64 to PCM16 audio bytes.

Get bytes per sample for an audio format.

Calculate the duration of audio data in milliseconds.

Normalize audio format to atom.

Encode PCM16 audio bytes to base64.

Get the sample rate for an audio format.

Types

atom_format()

@type atom_format() :: :pcm16 | :g711_ulaw | :g711_alaw

format()

@type format() :: atom_format() | string_format()

string_format()

@type string_format() :: String.t()

Functions

base64_to_pcm16(encoded)

@spec base64_to_pcm16(String.t()) :: binary() | {:error, :invalid_base64}

Decode base64 to PCM16 audio bytes.

Examples

iex> Codex.Realtime.Audio.base64_to_pcm16("AAD/fw==")
<<0, 0, 255, 127>>

bytes_per_sample(arg1)

@spec bytes_per_sample(format()) :: 1 | 2

Get bytes per sample for an audio format.

Examples

iex> Codex.Realtime.Audio.bytes_per_sample(:pcm16)
2

iex> Codex.Realtime.Audio.bytes_per_sample(:g711_ulaw)
1

calculate_audio_length_ms(format, data)

@spec calculate_audio_length_ms(format(), binary()) :: float()

Calculate the duration of audio data in milliseconds.

Examples

iex> audio = :binary.copy(<<0>>, 48_000)  # 1 second of PCM16
iex> Codex.Realtime.Audio.calculate_audio_length_ms(:pcm16, audio)
1000.0

normalize_format(arg1)

@spec normalize_format(format()) :: :pcm16 | :g711_ulaw | :g711_alaw

Normalize audio format to atom.

Examples

iex> Codex.Realtime.Audio.normalize_format("pcm16")
:pcm16

iex> Codex.Realtime.Audio.normalize_format(:g711_ulaw)
:g711_ulaw

pcm16_to_base64(data)

@spec pcm16_to_base64(binary()) :: String.t()

Encode PCM16 audio bytes to base64.

Examples

iex> Codex.Realtime.Audio.pcm16_to_base64(<<0, 0, 255, 127>>)
"AAD/fw=="

sample_rate(arg1)

@spec sample_rate(format()) :: 8000 | 24000

Get the sample rate for an audio format.

Examples

iex> Codex.Realtime.Audio.sample_rate(:pcm16)
24000

iex> Codex.Realtime.Audio.sample_rate(:g711_ulaw)
8000