Обновить

Как мы сократили время написания инструкций в несколько раз с помощью LLM и Whisper

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели8.3K
Всего голосов 11: ↑11 и ↓0+11
Комментарии7

Комментарии 7

То есть инструкции стали ещё более бесполезными...

зависит от того, что именно рассказывать, но можно сэкономить время на подготовку

Очень интересный проект!

Подскажите, зачем именно нужен NLTK? Whisper же ставит знаки препинания и можно предложения разделить по точкам

И про разбиение аудио на куски можете пояснить? В виспере есть опция плавающего окна (вроде, 30 сек по дефолту), и он длинное аудио сам делит на перезлестывающиеся куски. Я дома через него прогонял аудио 1.5 часа на 8гб vram без проблем. По загрузке ресурсов - не заметил разницы между длинными и короткими файлами

Спасибо за обратную связь. По поводу памяти тоже были удивлены, у нас на сервере видокарта 16 Гб - вроде неплохо и должно все работать, но по факту получали периодически проблемы с памятью.

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

Допускаем, что мы не смогли корректно настроить whisper (хотя по разному пытались), но вот нашли для себя только такое решение которое нам помогло.

Мы пробовали другие модели fast whisper, whisperx, но везде были какие-то нюансы и остановились на whisper.

По поводу NLTK отпишусь чуть позже, уточню у коллеги, который делал этот кусок.

А, понял. Да, таймстампы на каждое слово очень снижают производительность. Вот только нужны ли они? Там 3 режима: полотно текста, таймстамп для каждого слова и промежуточный "chunks". Чанки собираются примерно по паузам в речи, в 70% случаев в одном чанке как раз и будет цельное предложение (зависит от диктора). И для каждого чанка будет таймстамп, скорость обработки чуть хуже чем у сплошного текста

Тестил на whisperv3 large

да, вы правы.

Изначально мы работали с разбивкой до слова. Мы тестировали разные способы определения мест куда надо вставлять срин экрана и в одной из версий мы парсили каждое слово и по ключевым словам пытались понять куда надо вставить картинку. По слову можно точно определить с какой секунды брать картинку.

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

Теперь нам хватает "segments", надо попробовать отказаться от тайминга до слов.

Спасибо.

ошибка в статье, не используем NLTK, режем по точке

был старый код и ошибочно описали. Сорри

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации