Skip to content

Аудио

Узнайте, как преобразовать аудио в текст или создать аудио из текста.

Связанное руководство: Речь в текст

Создание речи

Запрос на создание речи

POST

https://api.openai.com/v1/audio/speech

Создаёт аудио из входного текста.

Тело запроса

ПараметрОписаниеОбязательный
modelТип данных: строка. Одно из доступных моделей TTS: tts-1 или tts-1-hd.Да
inputТип данных: строка. Текст, для которого генерируется аудио. Максимальная длина: 4096 символов.Да
voiceТип данных: строка. Голос, используемый при создании аудио. Поддерживаемые голоса: alloy, echo, fable, onyx, nova и shimmer. Предпросмотр доступен в руководстве по Текст в речь.Да
response_formatТип данных: строка. По умолчанию: mp3. Формат создаваемого аудио. Поддерживаемые форматы: mp3, opus, aac, flac, wav, pcm.Нет
speedТип данных: число. По умолчанию: 1. Скорость воспроизведения создаваемого аудио. Выберите значение от 0.25 до 4.0. Стандартное значение: 1.0.Нет

Возвращает

Содержимое аудиофайла.

Пример запроса

python
from pathlib import Path
import openai

speech_file_path = Path(__file__).parent / "speech.mp3"
response = openai.audio.speech.create(
  model="tts-1",
  voice="alloy",
  input="Быстрая бурая лиса перепрыгнула через ленивую собаку."
)
response.stream_to_file(speech_file_path)
bash
curl https://api.openai.com/v1/audio/speech \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1",
"input": "The quick brown fox jumped over the lazy dog.",
"voice": "alloy"
}' \
--output speech.mp3
javascript
import fs from "fs";
import path from "path";
import OpenAI from "openai";

const openai = new OpenAI();

const speechFile = path.resolve("./speech.mp3");

async function main() {
const mp3 = await openai.audio.speech.create({
model: "tts-1",
voice: "alloy",
input: "Today is a wonderful day to build something people love!",
});
console.log(speechFile);
const buffer = Buffer.from(await mp3.arrayBuffer());
await fs.promises.writeFile(speechFile, buffer);
}
main();

Создание транскрипции

Пост-запрос

https://api.openai.com/v1/audio/transcriptions

Описание: Преобразуйте аудио в текст на исходном языке.

Тело запроса

ПолеТипОбязательноеОписание
filefileДаОбъект аудиофайла (не имя файла), который следует транскрибировать. Поддерживаемые форматы: flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, или webm.
modelstringДаID используемой модели. На данный момент доступна только whisper-1, поддерживаемая нашей открытой моделью Whisper V2.
languagestringНетЯзык входного аудио. Указание языка в формате ISO-639-1 улучшит точность и уменьшит задержку.
promptstringНетНеобязательный текст для указания стиля модели или продолжения предыдущего аудиосегмента. Подсказка должна соответствовать языку аудио.
response_formatstringНетПо умолчанию json. Формат вывода: json, text, srt, verbose_json или vtt.
temperaturenumberНетПо умолчанию 0. Температура выборки от 0 до 1. Высокие значения, такие как 0.8, делают вывод более случайным, низкие (0.2) более сфокусированным и детерминированным. При значении 0 модель автоматически изменяет температуру для достижения определенных порогов, используя логарифмическую вероятность.
timestamp_granularitiesarrayНетПо умолчанию segment. Гранулярности временных меток, которые должны быть заполнены при транскрипции. Для использования временных меток необходимо установить response_format в verbose_json. Поддерживаются варианты: word, segment. Обратите внимание, что нет дополнительной задержки для временных меток сегментов, но генерация временных меток слов увеличивает задержку.

Возвращает: Объект транскрипции или подробный объект транскрипции.

Пример простого запроса

JS
import fs from "fs";
import OpenAI from "openai";

const openai = new OpenAI();

async function main() {
  const transcription = await openai.audio.transcriptions.create({
    file: fs.createReadStream("audio.mp3"),
    model: "whisper-1",
  });

  console.log(transcription.text);
}

main();
bash
curl https://api.openai.com/v1/audio/transcriptions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F file="@/path/to/file/audio.mp3" \
-F model="whisper-1"
Python
from openai import OpenAI
client = OpenAI()

audio_file = open("speech.mp3", "rb")
transcript = client.audio.transcriptions.create(
  model="whisper-1",
  file=audio_file
)

Ответ:

json
{
  "text": "Представьте себе самую безумную идею, которая когда-либо приходила вам в голову, и вы хотите понять, как она может масштабироваться в 100, в 1 000 раз больше. Это место, где вы можете это сделать."
}

Пример запроса с временными метками слов

JS
import fs from "fs";
import OpenAI from "openai";

const openai = new OpenAI();

async function main() {
  const transcription = await openai.audio.transcriptions.create({
    file: fs.createReadStream("audio.mp3"),
    model: "whisper-1",
    response_format: "verbose_json",
    timestamp_granularities: ["word"]
  });

  console.log(transcription.text);
}

main();
bash
curl https://api.openai.com/v1/audio/transcriptions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: multipart/form-data" \
  -F file="@/path/to/file/audio.mp3" \
  -F "timestamp_granularities[]=word" \
  -F model="whisper-1" \
  -F response_format="verbose_json"
Python
from openai import OpenAI
client = OpenAI()

audio_file = open("speech.mp3", "rb")
transcript = client.audio.transcriptions.create(
  file=audio_file,
  model="whisper-1",
  response_format="verbose_json",
  timestamp_granularities=["word"]
)

print(transcript.words)

Ответ:

json
{
  "task": "transcribe",
  "language": "english",
  "duration": 8.470000267028809,
  "text": "The beach was a popular spot on a hot summer day. People were swimming in the ocean, building sandcastles, and playing beach volleyball.",
  "words": [
    {
      "word": "The",
      "start": 0.0,
      "end": 0.23999999463558197
    },
    ...
    {
      "word": "volleyball",
      "start": 7.400000095367432,
      "end": 7.900000095367432
    }
  ]
}

Пример запроса с временными метками сегментов

JS
import fs from "fs";
import OpenAI from "openai";

const openai = new OpenAI();

async function main() {
  const transcription = await openai.audio.transcriptions.create({
    file: fs.createReadStream("audio.mp3"),
    model: "whisper-1",
    response_format: "verbose_json",
    timestamp_granularities: ["segment"]
  });

  console.log(transcription.text);
}

main();
bash
curl https://api.openai.com/v1/audio/transcriptions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: multipart/form-data" \
  -F file="@/path/to/file/audio.mp3" \
  -F "timestamp_granularities[]=segment" \
  -F model="whisper-1" \
  -F response_format="verbose_json"
Python
from openai import OpenAI
client = OpenAI()

audio_file = open("speech.mp3", "rb")
transcript = client.audio.transcriptions.create(
  file=audio_file,
  model="whisper-1",
  response_format="verbose_json",
  timestamp_granularities=["segment"]
)

print(transcript.words)

Ответ:

json
{
  "task": "transcribe",
  "language": "english",
  "duration": 8.470000267028809,
  "text": "The beach was a popular spot on a hot summer day. People were swimming in the ocean, building sandcastles, and playing beach volleyball.",
  "segments": [
    {
      "id": 0,
      "seek": 0,
      "start": 0.0,
      "end": 3.319999933242798,
      "text": " The beach was a popular spot on a hot summer day.",
      "tokens": [
        50364, 440, 7534, 390, 257, 3743, 4008, 322, 257, 2368, 4266, 786, 13, 50530
      ],
      "temperature": 0.0,
      "avg_logprob": -0.2860786020755768,
      "compression_ratio": 1.2363636493682861,
      "no_speech_prob": 0.00985979475080967
    },
    ...
  ]
}

Создание перевода

Пост-запрос

https://api.openai.com/v1/audio/translations

Перевод аудио на английский язык.

Тело запроса

ПолеТипОбязательностьОписание
fileфайлОбязательноАудиофайл, который необходимо перевести, в одном из следующих форматов: flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, или webm.
modelстрокаОбязательноИдентификатор модели для использования. В настоящее время доступна только whisper-1, основанная на нашей открытой модели Whisper V2.
promptстрокаОпциональноДополнительный текст для задания стиля модели или продолжения предыдущего аудио сегмента. Подсказка должна быть на английском.
response_formatстрокаОпциональноПо умолчанию: json. Формат вывода: json, text, srt, verbose_json, или vtt.
temperatureчислоОпциональноПо умолчанию: 0. Температура выборки от 0 до 1. Высокие значения, такие как 0.8, сделают вывод более случайным, в то время как низкие значения, такие как 0.2, сделают его более целенаправленным и детерминированным. Если установлено в 0, модель будет использовать логарифмическую вероятность для автоматического увеличения температуры до достижения определенных порогов.

Возвращаемое значение

Переведенный текст.

bash
curl https://api.openai.com/v1/audio/translations \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: multipart/form-data" \
  -F file="@/path/to/file/german.m4a" \
  -F model="whisper-1"
Python
from openai import OpenAI
client = OpenAI()

audio_file = open("speech.mp3", "rb")
transcript = client.audio.translations.create(
  model="whisper-1",
  file=audio_file
)
JS
import fs from "fs";
import OpenAI from "openai";

const openai = new OpenAI();

async function main() {
    const translation = await openai.audio.translations.create({
        file: fs.createReadStream("speech.mp3"),
        model: "whisper-1",
    });

    console.log(translation.text);
}
main();

Ответ

json
{
  "text": "Hello, my name is Wolfgang and I come from Germany. Where are you heading today?"
}

Объект транскрипции (Подробный JSON)

Представляет собой подробный ответ трансляции в формате JSON, основанный на предоставленном входе.

СвойствоТипОписание
languageстрокаЯзык входного аудио.
durationстрокаПродолжительность входного аудио.
textстрокаПереписанный текст.
wordsмассивИзвлеченные слова и их соответствующие временные метки.

Свойства words

СвойствоТипОписание
wordстрокаТекстовое содержимое слова.
startчислоВремя начала слова в секундах.
endчислоВремя окончания слова в секундах.

Сегменты текста

СвойствоТипОписание
idцелоеУникальный идентификатор сегмента.
seekцелоеСмещение поиска сегмента.
startчислоВремя начала сегмента в секундах.
endчислоВремя окончания сегмента в секундах.
textстрокаТекстовое содержание сегмента.
tokensмассивМассив идентификаторов токенов для текстового содержимого.
temperatureчислоПараметр температуры, используемый для генерации сегмента.
avg_logprobчислоСреднее логарифмическое значение вероятности сегмента. Если значение ниже -1, считается, что логарифмические вероятности неудачны.
compression_ratioчислоКоэффициент сжатия сегмента. Если значение больше 2.4, считается, что сжатие неудачно.
no_speech_probчислоВероятность отсутствия речи в сегменте. Если значение выше 1.0, а avg_logprob ниже -1, сегмент считается тихим.

Пример объекта транскрипции

json
{
  "task": "transcribe",
  "language": "english",
  "duration": 8.470000267028809,
  "text": "The beach was a popular spot on a hot summer day. People were swimming in the ocean, building sandcastles, and playing beach volleyball.",
  "segments": [
    {
      "id": 0,
      "seek": 0,
      "start": 0.0,
      "end": 3.319999933242798,
      "text": " The beach was a popular spot on a hot summer day.",
      "tokens": [
        50364, 440, 7534, 390, 257, 3743, 4008, 322, 257, 2368, 4266, 786, 13, 50530
      ],
      "temperature": 0.0,
      "avg_logprob": -0.2860786020755768,
      "compression_ratio": 1.2363636493682861,
      "no_speech_prob": 0.00985979475080967
    },
    ...
  ]
}

Теперь любые инструменты перевода аудио могут работать на данной информации.

Создано при поддержке AITUNNEL