Перейти к основному содержимому

Audio

Распознавание речи (Speech-to-Text) и синтез речи (Text-to-Speech).

Speech-to-Text (Whisper)

Транскрибация аудио в текст.

POST /v1/audio/transcriptions

Тело запроса

Multipart form data:

ПараметрТипОбязательныйОписание
filefileДаАудио файл (mp3, mp4, mpeg, mpga, m4a, wav, webm)
modelstringДаwhisper-1
languagestringНетISO-639-1 код языка (ru, en, etc.)
promptstringНетКонтекст для улучшения распознавания
response_formatstringНетjson, text, srt, verbose_json, vtt
temperaturenumberНет0.0-1.0

Ответ

{
"text": "Привет, это тестовая запись для проверки распознавания речи."
}

Примеры

cURL

curl https://api.aipomogator.ru/v1/audio/transcriptions \
-H "Authorization: Bearer $API_KEY" \
-F "file=@recording.mp3" \
-F "model=whisper-1" \
-F "language=ru"

Python

from openai import OpenAI

client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.aipomogator.ru/v1"
)

with open("recording.mp3", "rb") as audio_file:
transcript = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file,
language="ru"
)

print(transcript.text)

JavaScript

import OpenAI from 'openai';
import fs from 'fs';

const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.aipomogator.ru/v1',
});

const transcript = await client.audio.transcriptions.create({
model: 'whisper-1',
file: fs.createReadStream('recording.mp3'),
language: 'ru',
});

console.log(transcript.text);

Verbose формат

При response_format: "verbose_json":

{
"task": "transcribe",
"language": "russian",
"duration": 12.5,
"text": "Привет, это тестовая запись.",
"segments": [
{
"id": 0,
"seek": 0,
"start": 0.0,
"end": 2.5,
"text": "Привет,",
"tokens": [123, 456],
"temperature": 0.0,
"avg_logprob": -0.15,
"compression_ratio": 1.2,
"no_speech_prob": 0.01
}
]
}

SRT формат (субтитры)

При response_format: "srt":

1
00:00:00,000 --> 00:00:02,500
Привет, это тестовая

2
00:00:02,500 --> 00:00:05,000
запись для проверки.

Перевод аудио

Транскрибация и перевод на английский.

POST /v1/audio/translations
with open("russian_speech.mp3", "rb") as audio_file:
translation = client.audio.translations.create(
model="whisper-1",
file=audio_file
)

# Возвращает текст на английском
print(translation.text)

Text-to-Speech

Синтез речи из текста.

POST /v1/audio/speech

Тело запроса

{
"model": "tts-1",
"input": "Привет! Как дела?",
"voice": "alloy"
}

Параметры

ПараметрТипОбязательныйОписание
modelstringДаtts-1 или tts-1-hd
inputstringДаТекст для озвучки (до 4096 символов)
voicestringДаГолос
response_formatstringНетmp3, opus, aac, flac, wav, pcm
speednumberНет0.25-4.0 (default: 1.0)

Голоса

ГолосОписание
alloyНейтральный
echoМужской
fableВыразительный
onyxГлубокий мужской
novaЖенский
shimmerМягкий женский

Ответ

Бинарные данные аудио файла.

Примеры

cURL

curl https://api.aipomogator.ru/v1/audio/speech \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1",
"input": "Привет! Это тестовый синтез речи.",
"voice": "nova"
}' \
--output speech.mp3

Python

from openai import OpenAI

client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.aipomogator.ru/v1"
)

response = client.audio.speech.create(
model="tts-1",
voice="nova",
input="Привет! Это тестовый синтез речи."
)

response.stream_to_file("speech.mp3")

Streaming

response = client.audio.speech.create(
model="tts-1-hd",
voice="alloy",
input="Длинный текст для озвучки..."
)

# Потоковое сохранение
with open("speech.mp3", "wb") as f:
for chunk in response.iter_bytes():
f.write(chunk)

JavaScript

import OpenAI from 'openai';
import fs from 'fs';

const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.aipomogator.ru/v1',
});

const response = await client.audio.speech.create({
model: 'tts-1',
voice: 'nova',
input: 'Привет! Это тестовый синтез речи.',
});

const buffer = Buffer.from(await response.arrayBuffer());
fs.writeFileSync('speech.mp3', buffer);

Модели

Whisper

МодельЦенаОписание
whisper-1$0.006/минРаспознавание речи

TTS

МодельЦенаОписание
tts-1$0.015/1K символовСтандартное качество
tts-1-hd$0.030/1K символовВысокое качество

Ограничения

  • Whisper: максимум 25 MB на файл
  • TTS: максимум 4096 символов на запрос

Для длинных текстов разбивайте на части:

def tts_long_text(text, max_chars=4000):
chunks = [text[i:i+max_chars] for i in range(0, len(text), max_chars)]
audio_parts = []

for chunk in chunks:
response = client.audio.speech.create(
model="tts-1",
voice="nova",
input=chunk
)
audio_parts.append(response.content)

return b''.join(audio_parts)

Ошибки

400 Invalid File

{
"error": {
"message": "Invalid file format. Supported: mp3, mp4, mpeg, mpga, m4a, wav, webm",
"type": "invalid_request_error"
}
}

413 File Too Large

{
"error": {
"message": "File too large. Maximum size is 25MB",
"type": "invalid_request_error"
}
}