Image

(最后一次变更: 06.11.2024)

Debian 12 Linux 转录服务器 (Python, VOSK, Script)

对于需要处理大量音频文件以将信息转换为文本的任务,有一个用 Python 编写并包含世界上大多数语言的 VOSK 模型。 这个动作称为转录。 由于搜索引擎通过描述和标签而不是内容来索引音频和视频文件,因此需要发布另一个文本版本。在本指南中,我们以 root 身份安装,如果您有普通的,请使用 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 小于 8 GB,那么该模型将无法工作并会给出错误:

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

For the minimum model, respectively:

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/

To process an entire folder:

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

更多语言模型可供使用 关联, 需要类推第3段中所述进行下载和解压。

用于将音频文件翻译成文本的服务器已准备好使用。 翻译的质量取决于发音的清晰度和录音本身的质量,例如,在处理采访中的音频片段时,它明显高于处理音乐歌曲时。




暂时没有评论