Image

(마지막 변경: 06.11.2024)

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

정보를 텍스트로 변환하기 위해 많은 수의 오디오 파일을 처리해야 하는 작업의 경우 Python으로 작성되고 전 세계 대부분의 언어를 포함하는 VOSK 모델이 있습니다. 이 작업을 전사라고 합니다. 검색 엔진은 콘텐츠가 아닌 설명 및 태그를 기준으로 오디오 및 비디오 파일의 색인을 생성하므로 다른 텍스트 버전을 게시해야 하는 작업이 발생합니다. 이 가이드에서는 루트로 설치합니다. 일반 버전이 있는 경우 sudo 명령을 사용하세요.


가장 자주 묻는 질문:

  • 우리는 모든 데이터가 우리와 함께 있기를 원합니다. 우리 장비에서 이 모든 설정을 할 수 있나요?

    예, 링크.

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: 우리의 경우 전체 모델을 선택했습니다. 서버 구성의 RAM이 8GB 미만인 경우 이 모델은 작동하지 않으며 오류가 발생합니다:

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 audio_file -o text_file -m path_to_model
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'
## remove spaces from filenames in target directory
famount=$(find $srcpath -type f | wc -l) ## counting the number of files
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 ;
## remove >/dev/null 2>&1 to display recognition status
## rm $srcpath/${f##*/} ## uncomment to remove the original file
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 path_to_sources_files path_to_result path_to_model
sh transcribe.sh /root/audio/ /root/text/ /opt/vosk-model-ru-0.42/

참고 2: SSH를 통해 다시 서버에 로그인한 경우 Python 가상 환경을 활성화한 후 vosk-transcriber 명령을 사용할 수 있으므로 기록 시작 순서는 다음과 같습니다:

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에 설명된 비유입니다.

오디오 파일을 텍스트로 번역하는 서버를 사용할 준비가 되었습니다. 번역 품질은 발음의 명확성과 녹음 자체의 품질에 따라 달라집니다. 예를 들어 인터뷰에서 오디오 조각을 처리할 때 음악 노래를 처리할 때보다 눈에 띄게 높습니다.




No Comments Yet