Общие вопросы
Отправка писем по SMTP на VDS с панелью NetAngelsКак сбросить пароль root?Запуск образов VDS на локальном компьютереИспользование раздела Облачные VDS в панели управленияИспользование образа с панелью управления NetAngelsСпециальные образы VDS для быстрого развертывания (LAMP)Как клонировать виртуальные машиныГостевой агентПриватная сетьКак поправить настройки sshd?Как включить защиту от DDoS через CloudflareVDS как промежуточный сервер для выхода в интернетМонтирование диска в VDSУстановка сервера MinecraftЗащита от DDoS атакИнструкция по настройке исходящего SMTP для тарифов VDS StartСервер для веб-конференций, совещаний и онлайн лекцийВосстановление отдельных файлов в виде архиваНастройка сети на VDSУстановка Windows из ISO-образа на VDSSSH-доступ к хостинг-аккаунтуКак настроить отправку почты с сайтаАвтоматизация обновления SSL-сертификата через API NetAngelsВыпуск SSL сертификата на VDS c помощью утилиты dehydratedКак подключить SSL-сертификат для сайта на облачном VDS с панелью управления NetAngelsКонсольные команды. Работа с данными.Консольные команды. Работа с MySQL, создание и загрузка дампа.Консольные команды. Анализ состояния сервера
Используем whisper для преобразования речи в текст

Преобразование аудио в текст с помощью Whisper v3 Russian

В этой статье мы рассмотрим решение задачи automatic speech recognition или преобразования записанного на аудио голоса в текст, используя напрямую модели с huggingface. Разумеется, на сегодня есть масса оптимизированных вариантов запуска моделей на базе whisper, которые работают быстрее оригинала и требуют значительно меньше памяти (faster-whisper, ctranslate2 и тп), но у нас это учебный пример, который, в том числе, показывает как установить и настроить библиотеки pytorch и transformers на VDS с GPU.

Создание VDS с GPU

Хотя модели whisper работают и на CPU, для приемлемой скорости распознавания, на наш взгляд, имеет смысл все же использовать графические процессоры (GPU). Наша компания предлагает линейку VDS Ultra с видеокартами от Nvidia.

Чтобы запустить такой VDS, достаточно в вашем личном кабинете перейти в раздел VDS, нажать на кнопку создания виртуальной машины (ВМ) и выбрать требуемую вам конфигурацию сервера, а также модель и количество видеокарт, которые вам необходимы. В качестве образа для развертывания мы рекомендуем использовать предлагаемый нами образ на базе Ubuntu c предустановленными драйверами для видеоркарт Nvidia.

В случае whisper достаточно выбрать одну самую простую видеокарту среди предлагаемых. И даже в такой конфигурации вы без труда сможете запустить несколько инстансов whisper и получить в свое распоряжение высокопроизводительную машину для распознавания голоса.

Предположим что VDS вы уже создали и получили доступ к ней по ssh. Здесь и далее мы предполагаем что вы зашли на сервер от имени пользователя ubuntu, создаваемого по умолчанию.

Установка дополнительных библиотек

Для работы с аудио нам потребуется утилита sox. Все дело в том, что whisper ожидает на вход аудио в формате wav с частотой дискретизации 16 kHz, поэтому скорее всего любое аудио, которое вы захотите прогнать через whisper, потребует предобработки. Установим sox:

$ sudo apt-get install sox

Виртуальное окружение

В мире python хорошим тоном является создание виртуальных окружений и разворачивание требуемых пакетов в виртуальных окружениях, а не установка их напрямую в систему. Сделать это очень просто:

$ python3 -m venv ~/.venv
$ source ~/.venv/bin/activate

Pytorch и transformers

Теперь установим требуемые библиотеки. Если вы пользуетесь подготовленным нами образом для работы с gpu на базе ubuntu, в нем установлены библиотеки CUDA версии 12.4, поэтому нам потребуется pytorch, собранный под эту версию CUDA:

$ pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
$ pip3 install ipython transformers PySoundFile

Препроцессинг аудио

В качестве примера для распознавания с помощью whisper мы возьмем аудио файл с объявлениями из Екатеринбургского метро, размещенный на сайте wikimedia:

$ curl --output metro.ogg https://upload.wikimedia.org/wikipedia/commons/2/26/Ekb_Metro_voice_messages_sample_05-2019.ogg

Преобразуем этот файл к нужному формату wav, 16 kHz:

$ sox metro.ogg -r 16000 metro.wav

Безусловно такое же преобразование можно сделать и с помощью torchaudio.sox_effects, но по сути в этом случае будет вызвана та же утилита sox, так что особой разницы нет.

Распознавание речи

Запустим ipython и выполним следующие действия:

In [1]: import torchaudio

In [2]: with open('metro.wav', 'rb') as f:
   ...:     y, sr = torchaudio.load(f)
   ...:

In [3]: from transformers import pipeline

In [4]: asr = pipeline('automatic-speech-recognition', model='antony66/whisper-large-v3-russian', device='cuda', generate_kwargs={"language": "russian", "max_new_tokens": 128}, return_timestamps=False)

In [5]: asr(y[0].numpy())
Out[5]: {'text': 'Осторожно, двери закрываются. Следующая станция — проспект Космонавтов.На следующей станции Космонавтный агрегат.При выходе из вагонов не забывайте свои вещи.'}

Обратите внимание, что вместо оригинальной модели openai/whisper-large-v3 мы используем тюнингнованную модель antony66/whisper-large-v3-russian. Просто замените в коде из примера выше эту модель на оригинальный whisper и вы без труда увидите разницу в качестве не в пользу оригинала.

Облачные VDS
Облачные VDS
Облачные VDS
Масштабируются под любые задачи: от размещения сайта до IT-инфраструктуры
С 2003 года
Надежность.
Нам доверяют десятки тысяч компаний и разработчиков
20 лет
Предоставляем услуги профессионального хостинга
35 000
Клиентов доверяют нам размещение своих сайтов
99.99%
Подтвержденный uptime
наших серверов хостинга
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
ВК49865