Хотите ускорить и удешевить транскрибации OpenAI? Просто повысьте скорость аудио.

Я имею в виду буквально. Перед транскрибацией увеличьте скорость аудио в два или в три раза в ffmpeg. Благодаря этому вы потратите меньше токенов и вам придётся меньше ждать, а качество транскрипции почти не снизится.

Вот и всё!

Ниже показан скрипт, сочетающий все мои трюки для выполнения этой задачи. Для его работы необходимо установить yt-dlpffmpeg и llm.

# Извлекаем аудио из видео
yt-dlp -f 'bestaudio[ext=m4a]' --extract-audio --audio-format m4a -o 'video-audio.m4a' "https://www.youtube.com/watch?v=LCEmiRjPEtQ" -k;
 
# Создаём MP3-версию с низким битрейтом и утроенной скоростью
ffmpeg -i "video-audio.m4a" -filter:a "atempo=3.0" -ac 1 -b:a 64k video-audio-3x.mp3;
 
# Отправляем её OpenAI на транскрибацию
curl --request POST \
  --url https://api.openai.com/v1/audio/transcriptions \
  --header "Authorization: Bearer $OPENAI_API_KEY" \
  --header 'Content-Type: multipart/form-data' \
  --form file=@video-audio-3x.mp3 \
  --form model=gpt-4o-transcribe > video-transcript.txt;
 
# Получаем краткое изложение
 
cat video-transcript.txt | llm --system "Summarize the main points of this talk."

Я сэкономил вам время, сразу перейдя к делу, но если вы хотите подробностей истории о том, как я случайно обнаружил этот способ, пытаясь создать краткое изложение сорокаминутного доклада Андрея Карпаты, то продолжайте чтение.

Вам стоит продолжить чтение, если вы недоумеваете, почему я просто не воспользовался встроенной автотранскрибацией YouTube. Краткий ответ будет таким: я недотёпа, считавший (ошибочно), что она недоступна. Поэтому мне пришлось идти по более сложному пути.

Я просто хотел краткого изложения

Бывший коллега прислал мне ссылку на доклад Андрея Карпаты о том, как ИИ меняет мир программного обеспечения. Я ничего не знал об Андрее, но слышал, что он работал в Tesla. К тому же этот доклад входил в серию докладов Y Combinator и был длинным, поэтому я подумал: а действительно ли мне нужно его смотреть? Наверняка это ещё один рассказ о том, как «ИИ меняет всё» от привычного докладчика для привычной аудитории.

Мне показалось, что идеально было бы скинуть доклад в LLM, чтобы она создала краткую выжимку из него. Однако я уважал отправившего мне ссылку человека и хотел отдать ему должное: при помощи ИИ создать изложение, слепо довериться и ответить бывшему коллеге, сделав вид, что я посмотрел видео.

Первым делом я решил отправить транскрибированный текст в LLM, чтобы получить выжимку. Раньше я уже использовал скрипт для скачивания автоматически сгенерированных транскрипций с YouTube:

yt-dlp --all-subs --skip-download \
  --sub-format ttml/vtt/best \
  [url]

Однако по какой-то причине субтитры не скачивались. Снова и снова возникала ошибка!

Позже, покумекав и перечитав документацию, я понял, что моя версия утилиты (2025.04.03) устарела.

Обновившись до версии 2025.06.09, я решил проблему, но почему-то не попробовал сделать это до того, как углубиться в совершенно ином направлении. Что ж, по крайней мере, мои открытия позволили написать небольшую статью.

Если вам больше интересно создание кратких изложений транскрипций и не так важны тонкости автотранскрибации и токенов, то можете на этом закончить.

Мой процесс транскрибации

У меня уже был старый самодельный скрипт, который извлекает аудио из любого URL видео, передаёт его локально в whisper и сохраняет транскрипцию в текстовый файл.

Скрипт работал, но в то время я сидел в кофейне без доступа к розетке, поэтому не мог воспользоваться локальным инференсом на своём M3 MacBook Air. Я подумал, что можно попробовать перекинуть эту задачу OpenAI API. Наверно, это будет быстрее?

Тестируем инструменты транскрибации OpenAI

Для выполнения этой задачи при помощи whisper-1 потребовалось бы довольно много времени, но она бы выдала нужный результат. Если бы я просто выбрал знакомую мне модель, то на этом всё могло бы закончиться.

Однако из любопытства я первым делом воспользовался более новой моделью gpt-4o-transcribe. Она предназначена для обработки мультимодальных входных данных, обещая при этом более быстрые результаты.

У меня сразу же возникла ещё одна проблема: максимальная длина аудио ограничена 25 минутами, а доклад длился почти 40 минут.

Попробуем что-нибудь очевидное

Сначала я подумал, что можно как-то вырезать из аудио ненужное время, но не было очевидно, какие 14 минут из доклада не так важны. Вырезав начало и конец, я бы сэкономил максимум минуту.

На секунду я задумался о том, чтобы вырезать один-два куска из середины, но делать я так не стал. Хотя, возможно, этого бы всё равно было достаточно для создания релевантного изложения?

А потом меня осенило: почему бы просто не ускорить аудио перед отправкой? Люди постоянно слушают подкасты в полтора-два раза быстрее.

Я накидал небольшой скрипт:

ffmpeg -i video-audio.m4a -filter:a "atempo=2.0" -ac 1 -b:a 64k video-audio-2x.mp3

Ура! Теперь можно было отправить OpenAI файл длиной примерно 20 минут.

Я загрузил его... и всё сработало великолепно! Узрите краткое изложение, благодаря которому я с достаточной долей уверенности смог ответить коллеге, что посмотрел видео.

Но здесь было и нечто... интересное. Возможно, я наткнулся какой-то очевидный, простой хак? Может быть, им пользуются уже все, зарабатывающие на транскрибации аудио, а я случайно наткнулся на их секрет?

Нужно было копать глубже.

Почему это работает: наш мозг забывает, и ИИ тоже

Здесь я могу провести интересную параллель с оптимизацией изображений. Традиционно существуют форматы файлов сжатия с потерями и без них. Понятие «сжатие с потерями» говорит само за себя — чем сильнее мы ужимаем байты, тем хуже будет качество. Нас это устраивает, потому что человеческий мозг редко замечает артефакты и несовершенства.

Но даже в форматах файлов «без потерь» есть трюки, позволяющие полагаться на ограничения человеческого восприятия. Один из главных примеров — снижение количества уникальных цветов палитры в PNG или GIF. Вы удивитесь, насколько часто палитра из 64 цветов (или меньше) оказывается вполне достаточной и воспринимается, как существенно более богатая.

Я провожу параллель между этим и способностью мозга понимать текст с опечатками, пропущенными словами и другими ошибками, например, перестановленными буквами. Наш мозг любит заполнять пробелы, а если смотреть на мир через увеличительное стекло, можно заметить немало таких пробелов.

Ускорив аудио, я не буду время от времени улавливать самые тихие звуки и короткие слова, но, кажется, это не повредит моей способности понимания услышанного, пусть мне и придётся слушать сосредоточеннее. Похоже, модели транскрибации аудио тоже неплохо с этим справляются.

Но насколько далеко можно зайти? И действительно ли это экономит деньги?

Оказывается, что да. OpenAI взимает оплату за транскрибацию в зависимости от аудиотокенов, количество которых зависит от длительности входных данных. Чем быстрее аудио, тем меньше в нём секунд, а значит, и меньше токенов.

Вот округлённые значения, полученные на основании анализа сорокаминутного аудиофайла:

Скорость

Длительность(секунды)

Аудиотокены ввода

Стоимость токенов ввода

Стоимость токенов вывода

1x (исходная)

2372

— (слишком длинное аудио)

2x

1186

11856

$0,07

$0,02

3x

791

7904

$0,04

$0,02

Ускорив аудио в три раза, мы сэкономили на входных токенах 33% от стоимости! Однако основная часть затрат на эти модели транскрибации всё равно будет приходиться на токены вывода. Их стоимость составляет $10 за миллион токенов, а на момент написания статьи аудиотокены ввода стоили $6 за миллион.

Также интересно отметить, что токены вывода для ускоренных вдвое и втрое версий оказались абсолютно одинаковыми: 2048. Наверно, это логично? В какой-то степени, токены вывода — отражение способности модели понимать ввод и создавать краткую сводку. Я сделал вывод, что «кратко изложенная» версия (то есть с уменьшенным количеством токенов) того же аудио обеспечивает ту же степень понятности.

Вероятно, это отражает и общее ограничение в 4096 токенов на транскрибацию при работе с моделью gpt-4o-transcription. Подозреваю, что половина окна контекста зарезервирована под токены вывода и это, по сути, отражает наш запрос использовать его полностью. Наверно, при более длинных транскрипциях результаты будут становиться всё менее слабыми.

Но вернёмся к деньгам.

Наш приблизительный расчёт одной транскрибации будет выглядеть примерно так:

6 * (audio_input_tokens / 1_000_000) + 10 * (text_output_tokens / 1_000_000);

Это не совсем соответствует примерной оценке в $0,006 за минуту, указанную на странице тарифов, по крайней мере, для увеличенной вдвое скорости. Эта версия (19-20 минут) стоит примерно $0,09, а ускоренная втрое (13 минут) стоит примерно $0,07, если я правильно всё сложил.

# Цена за удвоенную скорость
6 * (11_856 / 1_000_000) + 10 * (2_048 / 1_000_000) = 0.09

# Цена за утроенную скорость
6 * (7_904 / 1_000_000) + 10 * (2_048 / 1_000_000) = 0.07

Похоже, приблизительная оценка привязана не только к длине аудио, но и к предположениям о том, сколько токенов в минуту будет генерироваться при обычном темпе речи.

И это любопытно! Интересно, чтобы сказал по этому поводу Джон Мощитта. [Прим. пер.: Джон Мощитта — это актёр, певец и диктор, установивший в 1984 году рекорд, произнеся 534 слова менее чем за 60 секунд.]

Мы легко можем сравнить эти затраты с whisper-1, потому что в прейскуранте указана точная, а не «приблизительная» цена — $0,006 за минуту. Предполагаю, что имеется в виду минута обрабатываемого аудио, а не минута инференса.

На самом деле, модель gpt-4o-transcription выглядит более выгодной.

Скорость

Длительность (секунды)

Стоимость

1x

2372

$0,24

2x

1186

$0,12

3x

791

$0,08

Позволяет ли это экономить?

В целом, да! Строгие измерения я не проводил, но, похоже, просто ускорив аудио, мы снизили затраты на транскрибацию сорокаминутного аудиофайла на 23% (с $0,09 до $0,07).

Если бы мы сравнили это с неускоренной версией аудио, обрезанной до ограничения в 25 минут, то уверен, что экономия оказалась бы ещё более впечатляющей. Можно прикинуть это на основании таблицы для whisper-1. Можно сказать, что наш способ позволил снизить затраты на 67%!

Точна ли транскрибация?

Этого я не знаю: я не смотрел видео, ха-ха, ведь в этом и был весь смысл задачи. И если это заставляет вас чувствовать себя неуютно, то терпите, таким будет наше будущее.

Я не сравнивал пословно, но после фрагментарных проверок ускоренные вдвое и втрое версии выглядят вполне прилично. Четырёхкратное ускорение оказалось слишком быстрым — транскрипция становилась смехотворно странной. То есть ускорение в два-три раза позволяет соблюсти баланс между эффективностью и качеством. Однако, разумеется, это зависит от того, насколько быстро люди говорят в оригинале.

Почему не ускориться в четыре раза?

Когда я ускорил видео вчетверо, то результаты оказались комичными.

Output of a 4x transcription mostly repeating "And how do we talk about that?" over and over again

Однако, я, разумеется, всё равно попробовал создать краткое изложение.

Ну, всё равно не худший доклад, который мне доводилось слушать!

Подведём итог

Итак, если вкратце, чтобы сэкономить время и деньги, при необходимости транскрибации аудио можно попробовать удвоить или утроить его скорость. Разумеется, при этом, как всегда, придётся мириться со снижением качества, но экономия выйдет приличной.

Это простой, быстрый и на удивление эффективный способ.

Краткое изложение поста

  • OpenAI взимает оплату за транскрибацию в зависимости от длительности аудио (whisper-1) или от количества токенов (gpt-4o-transcribe).

  • Для экономии времени и денег можно перед загрузкой ускорить аудио при помощи ffmpeg.

  • Это уменьшает количество аудиотокенов (или длительность), снижая цену.

  • Хорошо подходит ускорение в два или три раза.

  • Как насчёт ускорения в четыре раза? Наверно, это перебор, хотя попробовать было забавно.

Если вы найдёте ошибки в моих вычислениях, у вас возникнут вопросы или вы обнаружите более строгое исследование с качественным сравнением разных скоростей, то напишите мне!

Комментарии (4)


  1. Emulyator
    26.06.2025 11:09

    Можно еще бесплатно на своем железе переводить речь в текст, вполне работает.


  1. poriogam
    26.06.2025 11:09

    Там еще вроде есть ограничение 25мб на файл. И принимаются .opus файлы. А опус для голоса даже 24кбит - более чем достаточно.


  1. poriogam
    26.06.2025 11:09

    Нет, плохая затея. Качество явно меняется от всего лишь 2х. От источника разумеется зависит.

    1Х
    2Х


    1. PatientZero Автор
      26.06.2025 11:09

      А почему размер и длительность файлов одинаковые?