Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Galene用SpeachToTextのgalene-sttを試す

 Galene用SpeachToTextのgalene-sttを試す

Kenichiro MATOHARA

August 18, 2024
Tweet

More Decks by Kenichiro MATOHARA

Other Decks in Technology

Transcript

  1. 5

  2. Whisper/Whisper.cpp? WhisperはOpenAIの音声認識モデル.Python製MIT license Whisper.cpp は c++ で cpu でも動くようにしたもの.MIT license

    今回のようなリアルタイム文字起こしにはどちらにせよCUDA 対応のGPU が欲しい 9
  3. Whisper.cpp の導入 $ git clone https://github.com/ggerganov/whisper.cpp $ cd whisper.cpp $

    cmake -Bbuild $ cd build $ make -j`nproc` $ sudo make install $ cd .. 10
  4. ダウンロードtips モデルダウンロード中に失敗してしまうと再度実行してももうファイルあるよと言われすぐダウン ロード終了してしまう. models 以下にファイルが置かれる ダウンロードURL sha1 hash URL wget

    -c で続きからダウンロード & hash 確認 Model base already exists. Skipping download. https://huggingface.co/ggerganov/whisper.cpp/tree/main https://huggingface.co/ggerganov/whisper.cpp $ wget -c "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.bin?download=true" \ -O models/ggml-medium.bin --snip-- moodels/ggml-medium.bin 23%[+++++++++++++======> ] 341.88M 632KB/s $ sha1sum models/ggml-medium.bin fd9727b6e1217c2f614f9b698455c4ffd82463b4 models/ggml-medium.bin 13
  5. galene-stt の導入 Whisper.cpp のモデルデータを galene-stt から呼べるようシンボリックリンクを貼る $ git clone https://github.com/jech/galene-stt

    $ cd galene-stt $ go build $ ls -l galene-stt -rwxrwxr-x 1 matoken matoken 12533056 Aug 11 07:43 galene-stt $ ln -s ../whisper.cpp/models . 14
  6. opus ライブラリが見つからない Debian パッケージから導入 $ go build # gopkg.in/hraban/opus.v2 #

    [pkg-config --cflags -- opus opus opus opus opusfile opusfile] Package opusfile was not found in the pkg-config search path. Perhaps you should add the directory containing `opusfile.pc' to the PKG_CONFIG_PATH environment variable Package 'opusfile', required by 'virtual:world', not found Package 'opusfile', required by 'virtual:world', not found $ sudo apt install libopus-dev libopusfile-dev 16
  7. Whisper.cpp のヘッダーファイルが見つからない Whisper.cpp を build した後システムにインストールしていなかったのでインストールした. $ go build #

    galene-stt ./whisper.go:13:10: fatal error: whisper.h: No such file or directory 13 | #include "whisper.h" | ^~~~~~~~~~~ compilation terminated. 17
  8. Whosper のライブラリが見つからない Whisper.cpp のライブラリは /usr/local/lib に導入されているので LD_LIBRARY_PATH で指定してみると動いた $ ./galene-stt

    https://127.0.0.1:8443/group/test/ ./galene-stt: error while loading shared libraries: libwhisper.so.1: cannot open shared object file: No such file or directory $ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib ./galene-stt https://127.0.0.1:8443/group/test/ 18
  9. システムワイド設定 /etc/ld.so.conf にパスを追記して ldconfig コマンドで反映 1 Whisper.cpp のライブラリの含まれる /usr/local/lib を

    /etc/ld.so.conf に追記 2 ldconfig コマンドで /etc/ld.so.cache に反映 3 Whisper.cpp のライブラリを確認 $ echo '/usr/local/lib' | sudo tee -a /etc/ld.so.conf /usr/local/lib $ sudo ldconfig $ sudo ldconfig -p | grep -i whisper libwhisper.so.1 (libc6,x86-64) => /usr/local/lib/libwhisper.so.1 libwhisper.so (libc6,x86-64) => /usr/local/lib/libwhisper.so 1 2 3 19
  10. galene-stt Usage $ ./galene-stt Usage: ./galene-stt group [file...] -debug enable

    protocol logging -insecure don't check server certificates -keep-silence don't discard segments of silence, pass them to the engine -lang language language of input, or "auto" for autodetection (default "en") -model filename whisper model filename (default "models/ggml-small.bin") -password password password to use for login -silence volume maximum volume required to start a new phrase (default 0.025) -silence-time seconds seconds of silence required to start a new phrase (default 0.3) -translate translate foreign languages -username username username to use for login (default "speech-to-text") 20
  11. 1 参加グループURL を指定 2 モデルを指定(既定値は small) 3 日本語を指定 $ ./galene-stt

    https://galene.org:8443/group/public/stt $ ./galene-stt -model models/ggml-base.bin https://galene.org:8443/group/public/stt $ ./galene-stt -lang ja -model models/ggml-base.bin https://galene.org:8443/group/public/stt 1 2 3 21
  12. 修正 08-11 の 622de1914d049ce403d4e51ec0f2df4fa365a42a で -lang と - translate が追加された

    Usage 抜粋 $ git log -1 622de1914d049ce403d4e51ec0f2df4fa365a42a commit 622de1914d049ce403d4e51ec0f2df4fa365a42a Author: Juliusz Chroboczek <[email protected]> Date: Sun Aug 11 00:33:02 2024 +0200 Add flags -lang and -translate. -lang language language of input, or "auto" for autodetection (default "en") -translate translate foreign languages 24
  13. まとめ Galene の文字起こしをしてくれる galene-stt galene-stt 実行端末で Whisper.cpp を使い文字起こしをするのでサーバにはほとんど負 荷がかからない galene-stt

    実行端末は CUDA 対応 NVIDIA GPU が必須そう 誰か試してみませんか? Whisper 高速化の Whisper-Medusa やクラウドも使えるかもしれないので試してみたい 28