مدلهای صوتی OpenAI اکنون در دسترس است
تاریخ: 1404-08-22 / (2025-11-13)
خلاصه
اولین مدلهای صوتی عمومی شرکت OpenAI با نام های gpt-audio و gpt-audio-mini، اکنون در AvalAI در دسترس هستند. این مدلها از ورودی و خروجی صوتی و متنی از طریق Chat Completions API پشتیبانی میکنند و امکان ایجاد برنامههای مکالمهای با قابلیتهای صوتی بومی را فراهم میآورند. این مدلها از function calling پشتیبانی کرده و قیمتگذاری انعطافپذیری برای توکنهای متنی و صوتی ارائه میدهند.
جزئیات
مدلهای صوتی OpenAI
ما دسترسی به اولین مدلهای صوتی آماده تولید OpenAI را برای برنامههای صوتی و هوش مصنوعی مکالمهای اعلام میکنیم.
- gpt-audio: مدل صوتی پیشرو OpenAI با قابلیتهای مکالمهای پیشرفته که از ورودی/خروجی صوتی و متنی پشتیبانی میکند
- gpt-audio-mini: نسخه مقرون به صرفه GPT Audio، ایدهآل برای برنامههای پردازش صوتی با حجم بالا
ویژگیهای کلیدی:
- پشتیبانی چندوجهی: پردازش و تولید متن و صدا در یک فراخوانی API
- پنجره زمینه: 128,000 توکن برای مدیریت مکالمات گسترده
- حداکثر خروجی: 16,384 توکن برای پاسخهای جامع
- Function Calling: پشتیبانی کامل از استفاده از ابزار و فراخوانی تابع
- فرمتهای صوتی انعطافپذیر: پشتیبانی از mp3، wav، pcm16 و سایر فرمتهای صوتی
- انتخاب صدا: گزینههای صوتی متعدد از جمله alloy، echo، fable، onyx، nova و shimmer
- پشتیبانی Endpoint: در دسترس در v1/chat/completions
جزئیات قیمتگذاری:
| مدل | ورودی متنی | ورودی کششده | خروجی متنی | ورودی صوتی | خروجی صوتی |
|---|---|---|---|---|---|
| gpt-audio | $2.50/1M توکن | $1.25/1M توکن | $10.00/1M توکن | $32.00/1M توکن | $64.00/1M توکن |
| gpt-audio-mini | $0.60/1M توکن | $0.30/1M توکن | $2.40/1M توکن | $10.00/1M توکن | $20.00/1M توکن |
مدلهای قدیمی:
برای سازگاری با نسخههای قبلی، مدلهای پیشنمایش زیر همچنان در دسترس هستند:
gpt-4o-audio-previewgpt-4o-mini-audio-preview
نمونه درخواست/پاسخ API
نمونه درخواست
bash
curl https://api.avalai.ir/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AVALAI_API_KEY" \
-d '{
"model": "gpt-audio",
"messages": [
{
"role": "user",
"content": "سلام! امروز چطور میتوانید به من کمک کنید؟"
}
],
"modalities": ["text", "audio"],
"audio": {
"format": "mp3",
"voice": "alloy"
}
}'نمونه پاسخ
json
{
"id": "chatcmpl-AaBbCcDdEeFfGg",
"created": 1763042146,
"model": "gpt-audio-2025-08-28",
"object": "chat.completion",
"system_fingerprint": "fp_abc123",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": null,
"role": "assistant",
"audio": {
"id": "audio_abc123xyz",
"data": "SUQzBAAAAA...[کوتاهشده - دادههای صوتی mp3 رمزگذاریشده base64]",
"expires_at": 1763045747,
"transcript": "سلام! من اینجا هستم تا در طیف گستردهای از وظایف به شما کمک کنم. میتوانم به سوالات پاسخ دهم، اطلاعات ارائه کنم، ایدههای خلاقانه ارائه دهم، در حل مسائل کمک کنم و موارد دیگر. امروز میخواهید در چه زمینهای کمک بگیرید؟"
},
"annotations": []
}
}
],
"usage": {
"completion_tokens": 75,
"prompt_tokens": 12,
"total_tokens": 87,
"completion_tokens_details": {
"accepted_prediction_tokens": 0,
"audio_tokens": 58,
"reasoning_tokens": 0,
"rejected_prediction_tokens": 0,
"text_tokens": 17
},
"prompt_tokens_details": {
"audio_tokens": 0,
"cached_tokens": 0,
"text_tokens": 12,
"image_tokens": 0
}
},
"estimated_cost": {
"unit": "0.0037200000",
"irt": 422.64,
"exchange_rate": 113650
}
}نمونههای استفاده از SDK
تولید پایه متن و صدا
bash
curl https://api.avalai.ir/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AVALAI_API_KEY" \
-d '{
"model": "gpt-audio",
"messages": [
{
"role": "user",
"content": "درباره هوش مصنوعی برایم بگو."
}
],
"modalities": ["text", "audio"],
"audio": {
"format": "mp3",
"voice": "nova"
}
}'python
from openai import OpenAI
import os
client = OpenAI(
api_key=os.getenv("AVALAI_API_KEY"), base_url="https://api.avalai.ir/v1"
)
completion = client.chat.completions.create(
model="gpt-audio",
messages=[{"role": "user", "content": "درباره هوش مصنوعی برایم بگو."}],
modalities=["text", "audio"],
audio={"format": "mp3", "voice": "nova"},
)
# دسترسی به دادههای صوتی
audio_data = completion.choices[0].message.audio.data
transcript = completion.choices[0].message.audio.transcript
print(f"متن رونویسی: {transcript}")javascript
import { OpenAI } from "openai";
const client = new OpenAI({
apiKey: process.env.AVALAI_API_KEY,
baseURL: "https://api.avalai.ir/v1",
});
const completion = await client.chat.completions.create({
model: "gpt-audio",
messages: [
{
role: "user",
content: "درباره هوش مصنوعی برایم بگو.",
},
],
modalities: ["text", "audio"],
audio: {
format: "mp3",
voice: "nova",
},
});
// دسترسی به دادههای صوتی
const audioData = completion.choices[0].message.audio.data;
const transcript = completion.choices[0].message.audio.transcript;
console.log(`متن رونویسی: ${transcript}`);go
package main
import (
"context"
"fmt"
"os"
"github.com/openai/openai-go"
"github.com/openai/openai-go/option"
)
func main() {
client := openai.NewClient(
option.WithAPIKey(os.Getenv("AVALAI_API_KEY")),
option.WithBaseURL("https://api.avalai.ir/v1"),
)
completion, err := client.Chat.Completions.New(context.Background(), openai.ChatCompletionNewParams{
Model: openai.F("gpt-audio"),
Messages: openai.F([]openai.ChatCompletionMessageParamUnion{
openai.UserMessage("درباره هوش مصنوعی برایم بگو."),
}),
Modalities: openai.F([]openai.ChatCompletionModality{
openai.ChatCompletionModalityText,
openai.ChatCompletionModalityAudio,
}),
Audio: openai.F(openai.ChatCompletionAudioParam{
Format: openai.F(openai.ChatCompletionAudioFormatMp3),
Voice: openai.F(openai.ChatCompletionAudioVoiceNova),
}),
})
if err != nil {
panic(err)
}
fmt.Printf("متن رونویسی: %s\n", completion.Choices[0].Message.Audio.Transcript)
}php
<?php
require 'vendor/autoload.php';
use OpenAI\Client;
$client = OpenAI::factory()
->withApiKey(getenv('AVALAI_API_KEY'))
->withBaseUri('https://api.avalai.ir/v1')
->make();
$response = $client->chat()->create([
'model' => 'gpt-audio',
'messages' => [
[
'role' => 'user',
'content' => 'درباره هوش مصنوعی برایم بگو.',
],
],
'modalities' => ['text', 'audio'],
'audio' => [
'format' => 'mp3',
'voice' => 'nova',
],
]);
$audioData = $response['choices'][0]['message']['audio']['data'];
$transcript = $response['choices'][0]['message']['audio']['transcript'];
echo "متن رونویسی: " . $transcript . "\n";استفاده از gpt-audio-mini برای پردازش مقرون به صرفه
bash
curl https://api.avalai.ir/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AVALAI_API_KEY" \
-d '{
"model": "gpt-audio-mini",
"messages": [
{
"role": "user",
"content": "هوای امروز چطور است؟"
}
],
"modalities": ["text", "audio"],
"audio": {
"format": "mp3",
"voice": "alloy"
}
}'python
from openai import OpenAI
import os
client = OpenAI(
api_key=os.getenv("AVALAI_API_KEY"), base_url="https://api.avalai.ir/v1"
)
completion = client.chat.completions.create(
model="gpt-audio-mini",
messages=[{"role": "user", "content": "هوای امروز چطور است؟"}],
modalities=["text", "audio"],
audio={"format": "mp3", "voice": "alloy"},
)
print(completion.choices[0].message.audio.transcript)javascript
import { OpenAI } from "openai";
const client = new OpenAI({
apiKey: process.env.AVALAI_API_KEY,
baseURL: "https://api.avalai.ir/v1",
});
const completion = await client.chat.completions.create({
model: "gpt-audio-mini",
messages: [
{
role: "user",
content: "هوای امروز چطور است؟",
},
],
modalities: ["text", "audio"],
audio: {
format: "mp3",
voice: "alloy",
},
});
console.log(completion.choices[0].message.audio.transcript);go
package main
import (
"context"
"fmt"
"os"
"github.com/openai/openai-go"
"github.com/openai/openai-go/option"
)
func main() {
client := openai.NewClient(
option.WithAPIKey(os.Getenv("AVALAI_API_KEY")),
option.WithBaseURL("https://api.avalai.ir/v1"),
)
completion, err := client.Chat.Completions.New(context.Background(), openai.ChatCompletionNewParams{
Model: openai.F("gpt-audio-mini"),
Messages: openai.F([]openai.ChatCompletionMessageParamUnion{
openai.UserMessage("هوای امروز چطور است؟"),
}),
Modalities: openai.F([]openai.ChatCompletionModality{
openai.ChatCompletionModalityText,
openai.ChatCompletionModalityAudio,
}),
Audio: openai.F(openai.ChatCompletionAudioParam{
Format: openai.F(openai.ChatCompletionAudioFormatMp3),
Voice: openai.F(openai.ChatCompletionAudioVoiceAlloy),
}),
})
if err != nil {
panic(err)
}
fmt.Println(completion.Choices[0].Message.Audio.Transcript)
}php
<?php
require 'vendor/autoload.php';
use OpenAI\Client;
$client = OpenAI::factory()
->withApiKey(getenv('AVALAI_API_KEY'))
->withBaseUri('https://api.avalai.ir/v1')
->make();
$response = $client->chat()->create([
'model' => 'gpt-audio-mini',
'messages' => [
[
'role' => 'user',
'content' => 'هوای امروز چطور است؟',
],
],
'modalities' => ['text', 'audio'],
'audio' => [
'format' => 'mp3',
'voice' => 'alloy',
],
]);
echo $response['choices'][0]['message']['audio']['transcript'] . "\n";فراخوانی تابع با مدلهای صوتی
bash
curl https://api.avalai.ir/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AVALAI_API_KEY" \
-d '{
"model": "gpt-audio",
"messages": [
{
"role": "user",
"content": "هوای سانفرانسیسکو چطور است؟"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "دریافت اطلاعات هوای فعلی برای یک مکان",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "نام شهر"
}
},
"required": ["location"]
}
}
}
],
"tool_choice": "auto"
}'python
from openai import OpenAI
import os
client = OpenAI(
api_key=os.getenv("AVALAI_API_KEY"), base_url="https://api.avalai.ir/v1"
)
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "دریافت اطلاعات هوای فعلی برای یک مکان",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "نام شهر"}
},
"required": ["location"],
},
},
}
]
response = client.chat.completions.create(
model="gpt-audio",
messages=[{"role": "user", "content": "هوای سانفرانسیسکو چطور است؟"}],
tools=tools,
tool_choice="auto",
)
print(response.choices[0].message.tool_calls)javascript
import { OpenAI } from "openai";
const client = new OpenAI({
apiKey: process.env.AVALAI_API_KEY,
baseURL: "https://api.avalai.ir/v1",
});
const tools = [
{
type: "function",
function: {
name: "get_weather",
description: "دریافت اطلاعات هوای فعلی برای یک مکان",
parameters: {
type: "object",
properties: {
location: {
type: "string",
description: "نام شهر"
}
},
required: ["location"]
}
}
}
];
const response = await client.chat.completions.create({
model: "gpt-audio",
messages: [
{
role: "user",
content: "هوای سانفرانسیسکو چطور است؟"
}
],
tools: tools,
tool_choice: "auto"
});
console.log(response.choices[0].message.tool_calls);go
package main
import (
"context"
"fmt"
"os"
"github.com/openai/openai-go"
"github.com/openai/openai-go/option"
)
func main() {
client := openai.NewClient(
option.WithAPIKey(os.Getenv("AVALAI_API_KEY")),
option.WithBaseURL("https://api.avalai.ir/v1"),
)
completion, err := client.Chat.Completions.New(context.Background(), openai.ChatCompletionNewParams{
Model: openai.F("gpt-audio"),
Messages: openai.F([]openai.ChatCompletionMessageParamUnion{
openai.UserMessage("هوای سانفرانسیسکو چطور است؟"),
}),
Tools: openai.F([]openai.ChatCompletionToolParam{
{
Type: openai.F(openai.ChatCompletionToolTypeFunction),
Function: openai.F(openai.FunctionDefinitionParam{
Name: openai.String("get_weather"),
Description: openai.String("دریافت اطلاعات هوای فعلی برای یک مکان"),
Parameters: openai.F(openai.FunctionParameters{
"type": "object",
"properties": map[string]interface{}{
"location": map[string]interface{}{
"type": "string",
"description": "نام شهر",
},
},
"required": []string{"location"},
}),
}),
},
}),
ToolChoice: openai.F[openai.ChatCompletionToolChoiceOptionUnionParam](
openai.ChatCompletionToolChoiceOptionAuto,
),
})
if err != nil {
panic(err)
}
fmt.Printf("%+v\n", completion.Choices[0].Message.ToolCalls)
}php
<?php
require 'vendor/autoload.php';
use OpenAI\Client;
$client = OpenAI::factory()
->withApiKey(getenv('AVALAI_API_KEY'))
->withBaseUri('https://api.avalai.ir/v1')
->make();
$response = $client->chat()->create([
'model' => 'gpt-audio',
'messages' => [
[
'role' => 'user',
'content' => 'هوای سانفرانسیسکو چطور است؟',
],
],
'tools' => [
[
'type' => 'function',
=> [
'name' => 'get_weather',
'description' => 'دریافت اطلاعات هوای فعلی برای یک مکان',
'parameters' => [
'type' => 'object',
'properties' => [
'location' => [
'type' => 'string',
'description' => 'نام شهر',
],
],
'required' => ['location'],
],
],
],
],
'tool_choice' => 'auto',
]);
print_r($response['choices'][0]['message']['tool_calls']);