Поднимаем в облаке расшифровку речи в текст с помощью нейросетей. VPS на пределе возможностей

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Привет, Хабр! В этом посте я продолжаю цикл статей о том, как выжать максимум из обычного VPS от RUVDS. В прошлый раз мы экспериментировали с языковыми моделями, а сегодня попробуем запустить систему распознавания речи — FasterWhisper, оптимизированную версию модели Whisper от OpenAI. Как и в прошлый раз, сделаем это в рамках бюджета в 5000 рублей в месяц.

Что такое Whisper?

Прежде чем мы начнём эксперименты, давайте разберёмся, с чем имеем дело. Whisper — это система автоматического распознавания речи (ASR), разработанная OpenAI и выпущенная в открытый доступ в сентябре 2022 года. В отличие от многих других моделей, Whisper обучался на внушительном наборе данных — 680 000 часов многоязычного аудио, собранного из интернета. И здесь кроется его главное преимущество: благодаря такому разнообразному датасету модель отлично справляется с различными акцентами, фоновым шумом и даже специализированной лексикой. И самое главное, в отличие от своих более популярных собратьев, произведённых OpenAI (ChatGPT различных версий), Whisper является Open Source моделью с открытым доступом. Да, иногда Open в OpenAI всё-таки означает Open Source, но, увы, лишь иногда.

Архитектура Whisper достаточно проста: это encoder-decoder трансформер, который принимает на вход 30-секундные отрезки аудио, преобразованные в лог-мел спектрограмму. А дальше начинается самое интересное: декодер не просто расшифровывает речь, но и умеет определять язык, ставить временные метки для фраз и даже переводить речь на английский. Причём всё это — в рамках одной модели без необходимости дополнительных настроек. FasterWhisper, с которым мы будем работать — это оптимизированная версия оригинальной модели, использующая CTranslate2 для ускорения инференса. По сути, это тот же Whisper, но значительно быстрее и эффективнее в использовании ресурсов. Что особенно важно для нашего эксперимента на VPS.

Настраиваем окружение

Система у нас остаётся прежней — CentOS из прошлой статьи, как и остальная конфигурация сервера — 4 ядра CPU и 12 гигабайт RAM. И тут стоит сделать небольшое отступление, почему мы выбрали именно Docker-версию FasterWhisper. За кадром осталась увлекательная история о том, как Whisper на CPU умудрился изрядно попить крови у автора — что при установке через pip, что через conda. И это притом, что на домашней машине с CUDA и GPU от NVIDIA всё вставало без малейших проблем! Складывается впечатление, что CPU-версия живёт какой-то своей, особенно капризной жизнью. Либо, возможно, как это часто бывает с нейросетевыми проектами, мне не повезло, когда какая-то из библиотек для Python успела обновиться недавно и поломала совместимость с зависимостями, что за ней ещё пока не успели обновиться следом.

А в Docker-контейнере окружение уже настроено и содержит все необходимые зависимости. Тем более, что по аппетитам Whisper достаточно скромная модель, а Docker процессорных ресурсов почти не потребляет — теми несколькими сотнями мегабайт памяти, которые он съест, вполне можно пожертвовать ради душевного спокойствия и рабочего решения из коробки.
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo dnf install docker-ce docker-ce-cli containerd.io systemctl start docker systemctl enable docker

FasterWhisper Server

Теперь самое интересное — запустим FasterWhisper Server в контейнере. Что здесь происходит? Мы запускаем готовый Docker-образ с FasterWhisper, который уже настроен для работы на CPU.
docker run --publish 8000:8000 --volume ~/.cache/huggingface:/root/.cache/huggingface fedirz/faster-whisper-server:latest-cpu

Важный момент — мы монтируем кэш Hugging Face в контейнер, чтобы не скачивать модели каждый раз при перезапуске. Веб-интерфейс на основе Gradio будет доступен по появившемуся в консоли адресу — 0.0.0.0:8000, откроем его и продолжим уже в нём.

Тестируем на практике

Для тестирования я выбрал не совсем обычный материал, а именно отрывок из так и не завершённого романа «Азатот» Говарда Филипса Лавкрафта, причём сразу в двух версиях: оригинал на английском и русский перевод. Почему именно это произведение? Во-первых, оно относительно короткое, что идеально для первичного тестирования. Во-вторых, содержит специфическую лексику и сложные конструкции, что поможет проверить возможности модели в более сложных условиях, чем простая повседневная речь. В-третьих, я просто очень люблю творчество Лавкрафта, и это одно из моих любимых его произведений.

? Тест на русском языке

Для начала посмотрим, как Whisper справится с почти тремя минутами текста на русском. Получилось не идеально, однако результат впечатляет. Несмотря на то, что это самая маленькая модель, качество оказалось сопоставимым с результатами платных сервисов, предоставляющих перевод речи в текст, или с возможностями Telegram с Premium-подпиской.

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

? Тест на английском языке

С поправкой на моё не ужасное, но и не идеальное произношение, получилось опять же достаточно неплохо. Что до скорости, то результат аналогичный с поправкой на то, что файл вышел чуть больше.

Реальное применение

Но где же всё это может быть полезным? Первый и самый очевидный сценарий — внутрикорпоративное использование. Представьте ситуацию: ваша компания, как многие другие, серьёзно относится к безопасности данных и категорически запрещает использование сторонних сервисов для расшифровки речи. При этом потребность в транскрибации постоянно возникает — будь то записи совещаний, обучающие материалы или интервью с клиентами. Развёртывание собственного сервиса на VPS позволяет как удовлетворить требования по информационной безопасности и конфиденциальности корпоративных данных, так и наконец-то избавиться от нужды перепечатывать руками очередной еженедельный созвон по планёрке.

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

Прототип сервиса по расшифровке текста на React.

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

В отличие от наших экспериментов с мультимодальными LLM в прошлой статье, где анализ одного изображения мог занимать до 10 минут (успеешь и чай попить, и в окно посмотреть, и о жизни подумать), FasterWhisper показал себя как вполне жизнеспособное решение для повседневного использования. Трёхкратное отношение времени обработки к длительности аудио на CPU — это уже не просто эксперимент, а нечто, что можно реально применять в работе. И если LLM на CPU оставляли впечатление «без слёз не взглянешь», то здесь виден реальный потенциал для коммерческого использования.

В следующей статье мы немного отойдём от темы нейросетей, хотя без машинного обучения всё равно не обойдётся. Поговорим о том, есть ли жизнь за пределами Google Docs и как можно организовать работу с документами на собственном VPS. Разберёмся, пригодны ли OpenSource решения для этой задачи или же self-host будет настолько мучителен, что с криком «Nevermore!», в эту степь вовсе более не вернём.

А пока что — всем спасибо за внимание, и до встречи в следующих статьях серии «VPS на пределе возможностей»!

© 2024 ООО «МТ ФИНАНС»


Источник: habr.com

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