Image

(Последнее изменение: 22.04.2024)

Debian 12 Linux Transcription server (Python, VOSK, Script)

Для задач когда нужно обработать большое количество аудио файлов с целью преобразования информации в текст существует модель VOSK, написанная на языке Python и содержащая большинство кол-во языков мира. Данное действие называется транскрибация. Так как поисковые системы индексируют аудио и видео файлы по описанию и тегам, а не по их содержанию, возникает задача опубликовать еще текстовый вариант. В данном руководстве мы выполняем установку от пользователя root, если у Вас обычный, используйте команду sudo.


Наиболее часто задаваемые вопросы:

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

    Да, Вы можете заказать установку и настройку данной конфигурации на Вашем оборудовании по ссылке.

Приведем пример аудио файла, который мы конвертировали в текст с помощью данного сервера:

Затрачено времени: 64 секунды.
Конфигурация VPS: 8 Гб ОЗУ, 20 Гб SSD, 2 CPU Core
Результат:

здравствуйте вы позвонили в спортмастер благодарим вас за звонок

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

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

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

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

1. Установим необходимые пакеты

apt update
apt install python3 python3-pip ffmpeg unzip rename
apt install python3.11-venv
python3 -m venv .venv

2. Установим утилиту Vosk

source .venv/bin/activate
pip3 install vosk

3. Скачаем модель

cd /opt
wget https://alphacephei.com/vosk/models/vosk-model-ru-0.42.zip
unzip vosk-model-ru-0.42.zip

Примечание 1: В нашем случае мы выбрали полную модель, если конфигурация сервера имеет менее 8 Гб ОЗУ, то данная модель работать не будет и выдаст ошибку:

File "/usr/local/lib/python3.9/dist-packages/vosk/__init__.py", line 57, in __init__
raise Exception("Failed to create a model")
Exception: Failed to create a model

В этом случае скачайте минимальную версию модели, так как она менее требовательна к ресурсам сервера:

cd /opt
wget https://alphacephei.com/vosk/models/vosk-model-small-ru-0.22.zip
unzip vosk-model-small-ru-0.22.zip

4. Для проверки работы используйте следующий синтаксис для команды

vosk-transcriber -i аудио_файл -o текстовый_файл -m путь_к_папке_модели
vosk-transcriber -i /root/test.mp3 -o /root/test.txt -m /opt/vosk-model-ru-0.42

Для минимальной модели соответственно:

vosk-transcriber -i /root/test.mp3 -o /root/test.txt -m /opt/vosk-model-small-ru-0.22

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

touch transcribe.sh
chmod +x transcribe.sh
nano transcribe.sh

#!/bin/bash

errmsg="USAGE: sh transcribe.sh SRCPATH DSTPATH VOSKMODELPATH"

if [ $1 ]; then
srcpath=$1
echo "SOURCE PATH: $srcpath"
else
echo "No source path entered" >&2
echo $errmsg
exit 2
fi

if [ $2 ]; then
dstpath=$2
echo "DESTINATION PATH: $dstpath"
else
echo "No destination path entered" >&2
echo $errmsg
exit 2
fi

if [ $3 ]; then
modelpath=$3
echo "VOSK MODEL PATH: $modelpath"
else
echo "No VOSK language model path entered" >&2
echo $errmsg
exit 2
fi

startdate=$(date)

find $srcpath -name "* *" -type f | rename 's/ /_/g'
## удаляем пробелы из названий файлов в целевой директории
famount=$(find $srcpath -type f | wc -l) ## считаем количество файлов
echo "Found $famount files"
i=0;

for f in $srcpath/*; do
i=$(( $i + 1 ))
echo "Transcribing ${f##*/} ($i/$famount)"
vosk-transcriber -m $modelpath -i $srcpath/${f##*/} -o $dstpath/${f##*/}.txt >/dev/null 2>&1 ;
## удалите >/dev/null 2>&1 для вывода статуса распознавания
## rm $srcpath/${f##*/} ## раскоментируйте для удаления исходного файла
done

fready=$(find $dstpath -type f | wc -l)
echo "DONE. Transcribed $fready of $famount files"
enddate=$(date)
echo STARTED AT: ${startdate}
echo ENDED AT: ${enddate}

Синтаксис использования скрипта:

sh transcribe.sh путь_к_папке_с_исходными_файлами путь_к_целевой_папке путь_к_папке_модели
sh transcribe.sh /root/audio/ /root/text/ /opt/vosk-model-ru-0.42/

Примечание 2: Если вы зашли на сервер по ssh заново - то команда vosk-transcriber будет доступна после того, как Вы активируете виртуальную среду Python, таким образом последовательность запуска транскрибации будет следующей:

source .venv/bin/activate
vosk-transcriber -i /root/test.mp3 -o /root/test.txt -m /opt/vosk-model-ru-0.42/

Для обработки всей папки:

sh transcribe.sh /root/audio/ /root/text/ /opt/vosk-model-ru-0.42/

Большее количество языковых моделей доступно по ссылке, скачать и распаковать необходимо по аналогии описанной в пункте 3.

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




Нет комментариев