1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29import OpenAI from "openai";
const openai = new OpenAI();
// Fetch an audio file and convert it to a base64 string
const url = "https://cdn.openai.com/API/docs/audio/alloy.wav";
const audioResponse = await fetch(url);
const buffer = await audioResponse.arrayBuffer();
const base64str = Buffer.from(buffer).toString("base64");
const response = await openai.chat.completions.create({
model: "gpt-audio-1.5",
modalities: ["text", "audio"],
audio: { voice: "alloy", format: "wav" },
messages: [
{
role: "user",
content: [
{ type: "text", text: "What is in this recording?" },
{
type: "input_audio",
input_audio: { data: base64str, format: "wav" },
},
],
},
],
store: true,
});
console.log(response.choices[0]);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32import base64
import requests
from openai import OpenAI
client = OpenAI()
# Fetch the audio file and convert it to a base64 encoded string
url = "https://cdn.openai.com/API/docs/audio/alloy.wav"
response = requests.get(url)
response.raise_for_status()
wav_data = response.content
encoded_string = base64.b64encode(wav_data).decode("utf-8")
completion = client.chat.completions.create(
model="gpt-audio-1.5",
modalities=["text", "audio"],
audio={"voice": "alloy", "format": "wav"},
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "What is in this recording?"},
{
"type": "input_audio",
"input_audio": {"data": encoded_string, "format": "wav"},
},
],
},
],
)
print(completion.choices[0].message)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37package main
import (
"context"
"encoding/base64"
"fmt"
"os"
"github.com/openai/openai-go/v3"
)
func main() {
audio, err := os.ReadFile("fixtures/audio.wav")
if err != nil {
panic(err)
}
client := openai.NewClient()
response, err := client.Chat.Completions.New(context.Background(), openai.ChatCompletionNewParams{
Model: "gpt-audio-1.5",
Modalities: []string{"text", "audio"},
Audio: openai.ChatCompletionAudioParam{
Voice: openai.ChatCompletionAudioParamVoiceUnion{OfString: openai.String("alloy")},
Format: openai.ChatCompletionAudioParamFormatWAV,
},
Messages: []openai.ChatCompletionMessageParamUnion{openai.UserMessage([]openai.ChatCompletionContentPartUnionParam{
openai.TextContentPart("What is in this recording?"),
openai.InputAudioContentPart(openai.ChatCompletionContentPartInputAudioInputAudioParam{
Data: base64.StdEncoding.EncodeToString(audio),
Format: "wav",
}),
})},
})
if err != nil {
panic(err)
}
fmt.Println(response.Choices[0])
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.ChatCompletionAudioParam;
import com.openai.models.chat.completions.ChatCompletionContentPart;
import com.openai.models.chat.completions.ChatCompletionContentPartInputAudio;
import com.openai.models.chat.completions.ChatCompletionContentPartText;
import com.openai.models.chat.completions.ChatCompletionCreateParams;
import com.openai.models.chat.completions.ChatCompletionUserMessageParam;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Base64;
import java.util.List;
String encodedAudio =
Base64.getEncoder()
.encodeToString(
Files.readAllBytes(Path.of(System.getenv("OPENAI_EXAMPLE_AUDIO_PATH"))));
ChatCompletionCreateParams params =
ChatCompletionCreateParams.builder()
.model("gpt-audio-1.5")
.addMessage(
ChatCompletionUserMessageParam.builder()
.contentOfArrayOfContentParts(
List.of(
ChatCompletionContentPart.ofText(
ChatCompletionContentPartText.builder()
.text("What is in this recording?")
.build()),
ChatCompletionContentPart.ofInputAudio(
ChatCompletionContentPartInputAudio.builder()
.inputAudio(
ChatCompletionContentPartInputAudio.InputAudio.builder()
.data(encodedAudio)
.format(
ChatCompletionContentPartInputAudio.InputAudio
.Format.WAV)
.build())
.build())))
.build())
.addModality(ChatCompletionCreateParams.Modality.TEXT)
.addModality(ChatCompletionCreateParams.Modality.AUDIO)
.audio(
ChatCompletionAudioParam.builder()
.voice("alloy")
.format(ChatCompletionAudioParam.Format.WAV)
.build())
.store(true)
.build();
client.chat().completions().create(params).choices().stream()
.flatMap(choice -> choice.message().content().stream())
.forEach(System.out::println);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33using OpenAI.Chat;
#pragma warning disable OPENAI001
string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!;
ChatClient client = new("gpt-audio-1.5", key);
BinaryData audio = BinaryData.FromBytes(
await File.ReadAllBytesAsync("audio.wav")
);
UserChatMessage message = new(
[
ChatMessageContentPart.CreateTextPart("What is in this recording?"),
ChatMessageContentPart.CreateInputAudioPart(
audio,
ChatInputAudioFormat.Wav
),
]
);
ChatCompletionOptions options = new()
{
ResponseModalities = ChatResponseModalities.Text | ChatResponseModalities.Audio,
AudioOptions = new(ChatOutputAudioVoice.Alloy, ChatOutputAudioFormat.Wav),
StoredOutputEnabled = true,
};
ChatCompletion completion = await client.CompleteChatAsync([message], options);
if (completion.OutputAudio is not ChatOutputAudio audioOutput)
{
throw new InvalidOperationException("No audio output was returned.");
}
Console.WriteLine(audioOutput.Transcript);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20require "base64"
require "openai"
client = OpenAI::Client.new
audio = Base64.strict_encode64(File.binread("audio.wav"))
completion = client.chat.completions.create(
model: "gpt-audio-1.5",
messages: [{
role: :user,
content: [
{type: :text, text: "What is in this recording?"},
{type: :input_audio, input_audio: {data: audio, format: :wav}}
]
}],
modalities: [:text, :audio],
audio: {voice: :alloy, format: :wav},
store: true
)
puts(completion.choices.fetch(0).message.content)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23curl "https://api.openai.com/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-audio-1.5",
"modalities": ["text", "audio"],
"audio": { "voice": "alloy", "format": "wav" },
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "What is in this recording?" },
{
"type": "input_audio",
"input_audio": {
"data": "<base64 bytes here>",
"format": "wav"
}
}
]
}
]
}'