使っていますhttps://unix.stackexchange.com/users/560724/georgi-gerganov~のささやき.cppインタビュー録音を移し書きます。そのうちのほとんどは1~2分程度の短い内容です。問題は、Whisper.cppの起動に時間がかかることです(起動するたびにRAMに数GBがロードされるため)。この遅い起動問題を解決する方法はありますか?録音処理後も実行を続ける方法はありますか?
コピーしたいファイルが数千個(おそらく10,000個以上)なので、各起動に1分かかると、10,000個のファイルを起動するのに一週間(!)がかかります。
すべてのソリューションは特定の要件を考慮する必要があります。私はシェルスクリプトを使用してディレクトリ内のすべてのファイルを繰り返し、出力をテキストファイルにパイプします。入力ファイルごとに1つのテキストファイルです。
オリジナル
% whisper.cpp inputfil1.wav > inputfile1.txt
% whisper.cpp inputfil2.wav > inputfile2.txt
% whisper.cpp inputfil3.wav > inputfile3.txt
(しかしbash forループでは)
ソリューションは各入力ファイルに対して新しい出力ファイルをサポートする必要があります。
答え1
ツールの起動がCPUボトルネックでない場合(シングルスレッドの場合は不可能)、次の方法で並列化できます。
ls *.wav|\
sed 's/\.wav$//g'|\
xargs -P 8 -n 1 --replace='{}' bash -c 'whisper {}.wav > {}.txt'
これは魔法ではなく、すべてのシンボルに固有の意味があることに注意してください。これは、右マージンに喜んで書き留めた簡単な意味です。残念ながら、そうすることができますが、十分なスペースがありません。
スクリプトはls *.wav
呼び出しの出力を使用しますが、常に8つのプロセスが並列に実行されwhile thing.wav > thing.txt
ます。whisper
もちろん、whisper
すべてのCPUコアに対して困難な計算を実行すると、起動が遅くなり、計算自体がまだ完了していない限り、動作しません。
また、ツールに少しのRAMが必要だと言われました。明らかに8GBしかない場合は、同時に8x3GBを必要とするプロセスを実行しないでください。ただし、32 GB の RAM があれば、8 x 1 GB を同時に実行して利益を得ることができます。