Image

(最終更新日: 10.09.2024)

Debian 12 Linux トランスクリプションサーバー (Python, VOSK, スクリプト)

多くの音声ファイルを処理して情報をテキストに変換する必要があるタスクのために、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: この例ではフルモデルを選択しましたが、サーバーの構成が8GB未満のRAMの場合、このモデルは機能せず、エラーが発生します:

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