나는 사용하고있다https://unix.stackexchange.com/users/560724/georgi-gerganov~의속삭임.cpp인터뷰 녹음을 옮겨 적습니다. 그 중 대부분은 1~2분 정도의 짧은 내용입니다. 문제는 Whisper.cpp가 시작하는 데 시간이 오래 걸린다는 것입니다(시작할 때마다 RAM에 몇 GB가 로드되기 때문인 것 같습니다).이 느린 시작 문제를 해결할 방법이 있습니까? 녹음 처리 후에도 계속 실행되도록 하는 방법이 있나요?
복사하고 싶은 파일이 수천 개(아마도 10,000개 이상)이므로 각 시작에 1분이 걸리면 10,000개의 파일을 시작하는 데 일주일(!)이 걸립니다.
모든 솔루션은 특정 요구 사항을 고려해야 합니다. 저는 쉘 스크립트를 사용하여 디렉터리의 모든 파일을 반복한 다음 출력을 텍스트 파일로 파이프합니다.입력 파일당 하나의 텍스트 파일입니다.
원래
% 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가 필요한 프로세스를 실행해서는 안 됩니다. 그러나 32GB RAM이 있으면 8 x 1GB를 동시에 실행하여 이익을 얻을 수 있습니다.