- BrainTools - https://www.braintools.ru -

Хотите ускорить и удешевить транскрибации OpenAI? Просто повысьте скорость аудио.
Я имею в виду буквально. Перед транскрибацией увеличьте скорость аудио в два или в три раза в ffmpeg [1]. Благодаря этому вы потратите меньше токенов и вам придётся меньше ждать, а качество транскрипции почти не снизится.
Вот и всё!
Ниже показан скрипт, сочетающий все мои трюки для выполнения этой задачи. Для его работы необходимо установить yt-dlp [2], ffmpeg [3] и llm [4].
# Извлекаем аудио из видео
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. Краткий ответ будет таким: я недотёпа, считавший (ошибочно), что она недоступна. Поэтому мне пришлось идти по более сложному пути.
Бывший коллега прислал мне ссылку на доклад [5] Андрея Карпаты о том, как ИИ меняет мир программного обеспечения. Я ничего не знал об Андрее, но слышал, что он работал в Tesla. К тому же этот доклад входил в серию докладов Y Combinator и был длинным, поэтому я подумал: а действительно ли мне нужно его смотреть? Наверняка это ещё один рассказ о том, как «ИИ меняет всё» от привычного докладчика для привычной аудитории.
Мне показалось, что идеально было бы скинуть доклад в LLM, чтобы она создала краткую выжимку из него. Однако я уважал отправившего мне ссылку человека и хотел отдать ему должное: при помощи ИИ создать изложение, слепо довериться и ответить бывшему коллеге, сделав вид, что я посмотрел видео.
Первым делом я решил отправить транскрибированный текст в LLM, чтобы получить выжимку. Раньше я уже использовал скрипт [6] для скачивания автоматически сгенерированных транскрипций с YouTube:
yt-dlp --all-subs --skip-download
--sub-format ttml/vtt/best
[url]
Однако по какой-то причине субтитры не скачивались. Снова и снова возникала ошибка [7]!
Позже, покумекав и перечитав документацию [8], я понял, что моя версия утилиты (2025.04.03) устарела.
Обновившись до версии 2025.06.09, я решил проблему, но почему-то не попробовал сделать это до того, как углубиться в совершенно ином направлении. Что ж, по крайней мере, мои открытия позволили написать небольшую статью.
Если вам больше интересно создание кратких изложений транскрипций и не так важны тонкости автотранскрибации и токенов, то можете на этом закончить.
У меня уже был старый самодельный скрипт, который извлекает аудио из любого URL видео, передаёт его локально в whisper [9] и сохраняет транскрипцию в текстовый файл.
Скрипт работал, но в то время я сидел в кофейне без доступа к розетке, поэтому не мог воспользоваться локальным инференсом на своём M3 MacBook Air. Я подумал, что можно попробовать перекинуть эту задачу OpenAI API [10]. Наверно, это будет быстрее?
Для выполнения этой задачи при помощи whisper-1 потребовалось бы довольно много времени, но она бы выдала нужный результат. Если бы я просто выбрал знакомую мне модель, то на этом всё могло бы закончиться.
Однако из любопытства я первым делом воспользовался более новой моделью gpt-4o-transcribe. Она предназначена для обработки мультимодальных входных данных, обещая при этом более быстрые результаты.
У меня сразу же возникла ещё одна проблема: максимальная длина аудио ограничена 25 минутами, а доклад длился почти 40 минут.
Сначала я подумал, что можно как-то вырезать из аудио ненужное время, но не было очевидно, какие 14 минут из доклада не так важны. Вырезав начало и конец, я бы сэкономил максимум минуту.
На секунду я задумался о том, чтобы вырезать один-два куска из середины, но делать я так не стал. Хотя, возможно, этого бы всё равно было достаточно для создания релевантного изложения?
А потом меня осенило: почему бы просто не ускорить аудио перед отправкой? Люди постоянно слушают подкасты в полтора-два раза быстрее.
Я накидал небольшой скрипт [1]:
ffmpeg -i video-audio.m4a -filter:a "atempo=2.0" -ac 1 -b:a 64k video-audio-2x.mp3
Ура! Теперь можно было отправить OpenAI файл длиной примерно 20 минут.
Я загрузил его… и всё сработало великолепно! Узрите краткое изложение [11], благодаря которому я с достаточной долей уверенности смог ответить коллеге, что посмотрел видео.
Но здесь было и нечто… интересное. Возможно, я наткнулся какой-то очевидный, простой хак? Может быть, им пользуются уже все, зарабатывающие на транскрибации аудио, а я случайно наткнулся на их секрет?
Нужно было копать глубже.
Здесь я могу провести интересную параллель с оптимизацией изображений. Традиционно существуют форматы файлов сжатия с потерями и без них. Понятие «сжатие с потерями» говорит само за себя — чем сильнее мы ужимаем байты, тем хуже будет качество. Нас это устраивает, потому что человеческий мозг [12] редко замечает артефакты и несовершенства.
Но даже в форматах файлов «без потерь» есть трюки, позволяющие полагаться на ограничения человеческого восприятия [13]. Один из главных примеров — снижение количества уникальных цветов палитры в PNG или GIF. Вы удивитесь, насколько часто палитра из 64 цветов (или меньше) оказывается вполне достаточной и воспринимается, как существенно более богатая.
Я провожу параллель между этим и способностью мозга понимать текст с опечатками, пропущенными словами и другими ошибками, например, перестановленными буквами [14]. Наш мозг любит заполнять пробелы, а если смотреть на мир через увеличительное стекло, можно заметить немало таких пробелов.
Ускорив аудио, я не буду время от времени улавливать самые тихие звуки и короткие слова, но, кажется, это не повредит моей способности понимания услышанного, пусть мне и придётся слушать сосредоточеннее. Похоже, модели транскрибации аудио тоже неплохо с этим справляются.
Оказывается, что да. OpenAI взимает оплату за транскрибацию [15] в зависимости от аудиотокенов, количество которых зависит от длительности входных данных. Чем быстрее аудио, тем меньше в нём секунд, а значит, и меньше токенов.
Вот округлённые значения, полученные на основании анализа сорокаминутного аудиофайла:
|
Скорость |
Длительность(секунды) |
Аудиотокены ввода |
Стоимость токенов ввода |
Стоимость токенов вывода |
|---|---|---|---|---|
|
1x (исходная) |
2372 |
— (слишком длинное аудио) |
— |
— |
|
2x |
1186 |
11856 |
$0,07 |
$0,02 |
|
3x |
791 |
7904 |
$0,04 |
$0,02 |
Ускорив аудио в три раза, мы сэкономили на входных токенах 33% от стоимости! Однако основная часть затрат на эти модели транскрибации всё равно будет приходиться на токены вывода. Их стоимость составляет $10 за миллион токенов, а на момент написания статьи аудиотокены ввода стоили $6 за миллион.
Также интересно отметить, что токены вывода для ускоренных вдвое и втрое версий оказались абсолютно одинаковыми: 2048. Наверно, это логично [16]? В какой-то степени, токены вывода — отражение способности модели понимать ввод и создавать краткую сводку. Я сделал вывод, что «кратко изложенная» версия (то есть с уменьшенным количеством токенов) того же аудио обеспечивает ту же степень понятности.
Вероятно, это отражает и общее ограничение в 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
Похоже, приблизительная оценка привязана не только к длине аудио, но и к предположениям о том, сколько токенов в минуту будет генерироваться при обычном темпе речи.
И это любопытно! Интересно, чтобы сказал по этому поводу Джон Мощитта [17]. [Прим. пер.: Джон Мощитта — это актёр, певец и диктор, установивший в 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%!
Этого я не знаю: я не смотрел видео, ха-ха, ведь в этом и был весь смысл задачи. И если это заставляет вас чувствовать себя неуютно, то терпите, таким будет наше будущее.
Я не сравнивал пословно, но после фрагментарных проверок ускоренные вдвое и втрое версии выглядят вполне прилично. Четырёхкратное ускорение оказалось слишком быстрым — транскрипция становилась смехотворно странной. То есть ускорение в два-три раза позволяет соблюсти баланс между эффективностью и качеством. Однако, разумеется, это зависит от того, насколько быстро люди говорят в оригинале.
Когда я ускорил видео вчетверо, то результаты оказались комичными [18].

Однако, я, разумеется, всё равно попробовал [19] создать краткое изложение.
Ну, всё равно не самый худший доклад, который мне доводилось слушать!
Итак, если вкратце, чтобы сэкономить время и деньги, при необходимости транскрибации аудио можно попробовать удвоить или утроить его скорость. Разумеется, при этом, как всегда, придётся мириться со снижением качества, но экономия выйдет приличной.
Это простой, быстрый и на удивление эффективный способ.
OpenAI взимает оплату за транскрибацию в зависимости от длительности аудио (whisper-1) или от количества токенов (gpt-4o-transcribe).
Для экономии времени и денег можно перед загрузкой ускорить аудио при помощи ffmpeg.
Это уменьшает количество аудиотокенов (или длительность), снижая цену.
Хорошо подходит ускорение в два или три раза.
Как насчёт ускорения в четыре раза? Наверно, это перебор, хотя попробовать было забавно.
Если вы найдёте ошибки в моих вычислениях, у вас возникнут вопросы или вы обнаружите более строгое исследование с качественным сравнением разных скоростей, то напишите мне [20]!
Автор: PatientZero
Источник [21]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/16629
URLs in this post:
[1] ffmpeg: https://gist.github.com/georgemandis/4fd62bf5027b7a058f913d5dc32c2040
[2] yt-dlp: https://github.com/yt-dlp/yt-dlp
[3] ffmpeg: https://ffmpeg.org/
[4] llm: https://github.com/simonw/llm
[5] доклад: https://www.youtube.com/watch?v=LCEmiRjPEtQ
[6] скрипт: https://gist.github.com/simonw/9932c6f10e241cfa6b19a4e08b283ca9
[7] ошибка: http://www.braintools.ru/article/4192
[8] документацию: https://github.com/yt-dlp/yt-dlp?tab=readme-ov-file#subtitle-options
[9] whisper: https://github.com/openai/whisper
[10] OpenAI API: https://platform.openai.com/docs/guides/speech-to-text
[11] Узрите краткое изложение: https://gist.github.com/georgemandis/b2a68b345262b94782fa6b08e41fbcf2
[12] мозг: http://www.braintools.ru/parts-of-the-brain
[13] восприятия: http://www.braintools.ru/article/7534
[14] перестановленными буквами: https://en.wikipedia.org/wiki/Transposed_letter_effect
[15] взимает оплату за транскрибацию: https://platform.openai.com/docs/pricing
[16] логично: http://www.braintools.ru/article/7640
[17] Джон Мощитта: https://en.wikipedia.org/wiki/John_Moschitta_Jr.
[18] комичными: https://gist.github.com/georgemandis/1ec4ef084789f92ee06ac6283338a194
[19] попробовал: https://gist.github.com/georgemandis/1ec4ef084789f92ee06ac6283338a194#file-summarization-md
[20] напишите мне: https://george.mand.is/contact
[21] Источник: https://habr.com/ru/articles/922070/?utm_campaign=922070&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.