Rocky LinuxでローカルのWhisper環境の構築方法

Rocky Linuxなマルチ言語モデルを使って `whisper.cpp-cli` 環境を構築する手順を説明します。以下のステップに従ってください。

### ステップ1: 必要なツールのインストール

1. **開発ツールのインストール**:
   必要な開発ツールとライブラリをインストールします。これにはコンパイラや `make` が含まれます。

   ```bash
   sudo dnf groupinstall 'Development Tools'
   ```

2. **Git のインストール**:
   ソースコードをクローンするために Git をインストールします。

   ```bash
   sudo dnf install git
   ```

### ステップ2: ソースコードのダウンロード

- **リポジトリのクローン**:
  `whisper.cpp` のソースコードを GitHub からクローンします。

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

### ステップ3: マルチ言語モデルのダウンロード

- **モデルのダウンロード**:
  日本語と中国語を含むマルチ言語モデルをダウンロードします。ここでは例として `multilingual-large` モデルを使用します。

  ```bash
  bash ./models/download-ggml-model.sh multilingual-large
  bash ./models/download-ggml-model.sh medium
  bash ./models/download-ggml-model.sh large
  bash ./models/download-ggml-model.sh large-v2
  ```

### ステップ4: コンパイル

- **ソースコードのコンパイル**:
  ダウンロードしたソースコードをコンパイルして実行ファイルを生成します。

  ```bash
  make
  ```

### ステップ5: 音声ファイルのトランスクリプション

- **音声ファイルのトランスクリプト**:
  コンパイルされたプログラムを使用して、音声ファイルをトランスクリプトします。`-l` オプションで対象言語を指定できます。

  ```bash
  # 日本語の音声ファイルのトランスクリプト
  ./main -m models/ggml-multilingual-large.bin -f path/to/japanese-audio.wav -l ja

  # 中国語の音声ファイルのトランスクリプト
  ./main -m models/ggml-multilingual-large.bin -f path/to/chinese-audio.wav -l zh
  ```

この手順を実行することで、Rocky Linux 環境に `whisper.cpp-cli` を構築し、日本語を含む多言語の音声ファイルをトランスクリプトすることができます。

------------

もっと簡単な構築方法がありました。
参考：https://github.com/charliermarsh/whisper.cpp-cli

コマンドの追加方法はは、以下を参照してください。
whisper-cpp -m ggml-large-v2-q5_0.bin -l ja input.wav --output-txt
whisper-cpp -m ggml-large-v2-q5_0.bin input.wav --output-txt
whisper-cpp -m ggml-large-v2-q5_0.bin -l ja input.wav --output-txt

-l auto を指定しないと日本語の文字起こししてくれないので指定する。もしくは-l jaでもOK
-l zh
-l ja
-l en
-l auto


【事後追記】
オプション:
-h, --help [デフォルト] このヘルプメッセージを表示して終了
-t N, --threads N [4 ] 計算中に使用するスレッドの数
-p N, --processors N [1 ] 計算中に使用するプロセッサの数
-ot N, --offset-t N [0 ] ミリ秒単位の時間オフセット
-on N, --offset-n N [0 ] セグメントインデックスのオフセット
-d N, --duration N [0 ] ミリ秒単位で処理するオーディオの長さ
-mc N, --max-context N [-1 ] 保存するテキストコンテキストトークンの最大数
-ml N, --max-len N [0 ] 文字での最大セグメント長
-sow, --split-on-word [false ] トークンではなく単語で分割
-bo N, --best-of N [5 ] 保持する最良候補の数
-bs N, --beam-size N [5 ] ビームサーチのビームサイズ
-wt N, --word-thold N [0.01 ] 単語タイムスタンプの確率閾値
-et N, --entropy-thold N [2.40 ] デコーダー失敗のエントロピー閾値
-lpt N, --logprob-thold N [-1.00 ] デコーダー失敗の対数確率閾値
-debug, --debug-mode [false ] デバッグモードを有効にする（例：log_melのダンプ）
-tr, --translate [false ] ソース言語から英語へ翻訳
-di, --diarize [false ] ステレオオーディオの話者識別
-tdrz, --tinydiarize [false ] tinydiarizeを有効にする（tdrzモデルが必要）
-nf, --no-fallback [false ] デコーディング時に温度フォールバックを使用しない
-otxt, --output-txt [false ] 結果をテキストファイルで出力
-ovtt, --output-vtt [false ] 結果をVTTファイルで出力
-osrt, --output-srt [false ] 結果をSRTファイルで出力
-olrc, --output-lrc [false ] 結果をLRCファイルで出力
-owts, --output-words [false ] カラオケビデオ生成用スクリプトを出力
-fp, --font-path [/System/Library/Fonts/Supplemental/Courier New Bold.ttf] カラオケビデオ用の等幅フォントのパス
-ocsv, --output-csv [false ] 結果をCSVファイルで出力
-oj, --output-json [false ] 結果をJSONファイルで出力
-ojf, --output-json-full [false ] JSONファイルにより多くの情報を含める
-of FNAME, --output-file FNAME [ ] 出力ファイルのパス（ファイル拡張子なし）
-ps, --print-special [false ] 特殊トークンを表示
-pc, --print-colors [false ] 色を表示
-pp, --print-progress [false ] 進行状況を表示
-nt, --no-timestamps [false ] タイムスタンプを表示しない
-l LANG, --language LANG [en ] 話されている言語（'auto' で自動検出）
-dl, --detect-language [false ] 言語の自動検出後に終了
--prompt PROMPT [ ] 初期プロンプト
-m FNAME, --model FNAME [models/ggml-base.en.bin] モデルのパス
-f FNAME, --file FNAME [ ] 入力WAVファイルのパス
-oved D, --ov-e-device DNAME [CPU ] エンコード推論用のOpenVINOデバイス
-ls, --log-score [false ] トークンの最良デコーダスコアを記録
-ng, --no-gpu [false ] GPUを無効にする