adbird(広告鳥) 備忘録

Whisper.cppを使った音声文字起こし

公式はこちら。

WindowsのWSLでUbuntuが入っている前提。

Powershellを起動、

wsl

と入力、Ubuntuに切り替え。

ffmpegのインストール

Whisper.cppでは現状、wavファイルしか扱えないので、ffmpegをインストール。

sudo apt install ffmpeg

ビルド

git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp
make

使用するモデルをダウンロード

./models/download-ggml-model.sh ”モデル名”

利用可能なモデルはこちら。 largeが一番性能がいいが、メモリ等の性能が必要。

large-v3の場合は以下のように。

./models/download-ggml-model.sh large-v3

以下でインストールを確認。

./main -h

PATHを通す

whispers.cppフォルダの場所を確認し、PATHを通す。下は一例。

sudo nano ~/.profile

で ~/.profile ファイルが開いたら、最後の行に、whispers.cppフォルダの場所を追加。ユーザー名のところは適宜変更を。

PATH=$PATH:/mnt/c/Users/ユーザー名/whispers.cpp

追加しただけでは反映されないので、以下を実行。

source ~/.profile

以下で、PATHが通ったことを確認。

echo $PATH | grep whisper.cpp

これでわざわざwhispers.cppフォルダに移動してから、./mainをしなくても、音声ファイルがあるフォルダ内で右クリック>ターミナルで開く>Powershell起動>「wsl」でUbuntu起動 で main で走る。

音声をwavに変換

Whisper.cppはwavファイルにしか対応していないので。

ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav

音声を分割

音声が長いとエラーが出たときに、エラーループになってしまい、それ以降認識してくれなくなるようなので、短い音声に分割する。以下は音声を1分ごとに分割。

ffmpeg -i input.wav -f segment -segment_time 60 -c copy output_%03d.wav

実行(音声を文字起こし)

例えば、large-v3(WSLからだとマウントしたC:の下の、Users/ユーザー名/whisper.cpp/models/にあるので、/mnt/c/~が必要になる。「ユーザー名」のところは適宜変更のこと)を使って、wavファイルを文字起こしする場合。

wavファイルのあるフォルダ内で右クリック>ターミナルで開く>Powershell起動>「wsl」でUbuntu起動して

 main -m "/mnt/c/Users/ユーザー名/whisper.cpp/models/ggml-large-v3.bin" -f output.wav -l ja -otxt

上記は「large」モデルを使用している場合なので、他のモデルを使うとは適宜変更を。

テキスト結合

ディレクトリ内のテキストファイルをすべて結合して、テープ起こし.txtへ。

cat *.txt > テープ起こし.txt

参考