저는 Whisper를 사용하여 사운드 파일을 복사합니다. 내 하드웨어에서는 부팅하는 데 몇 분 또는 심지어 수십 분이 걸립니다(부팅할 때마다 몇 기가바이트의 데이터를 로드하고 처리해야 함). 나는 이것을 기본적으로 for 루프에서 파일의 속삭임을 제공하는 쉘 스크립트로 래핑했습니다.
문제는 Whisper가 다시 시작되고 각 주기마다 모든 데이터를 다시 로드해야 한다는 것입니다. Whisper "세션"을 유지하고 이전 세션이 완료된 후 새 파일을 추가하는 것이 더 빠릅니다. 쉘 스크립트/for 루프 "환경"에서 이 작업을 수행할 수 있습니까?
고려해야 할 두 가지 문제가 있습니다.
설정: 이 작업을 수행하는 세 대의 컴퓨터가 있으며 네트워크 디렉터리의 파일을 처리하고 있으며 새 파일이 디렉터리에 지속적으로 추가되고 있습니다.
기계를 동기화하기 위해 for 루프에서 가장 먼저 수행하는 작업은 입력 파일에 해당 출력 파일이 있는지 확인하는 것입니다. 그렇지 않은 경우
touch
다음과 같은 출력 파일을 만듭니다. 예를 들어 입력 파일은 "2023-Oct-25 15:25:12.aac"이고 touch "2023-Oct-25 15:25:12.aac"를 사용합니다. " 해당 텍스트 파일을 생성합니다. TXT").
이렇게 하면 스크립트를 시작할 때 긴 명령줄 명령((의사 코드)과 유사)을 연결할 수 없습니다 whisper 1.aac > 1.txt --model large --language English, 2.aac > 2.txt --model large --language French , 3.aac > 3.txt --model medium --language French
(세 가지 예에서 매개 변수가 다름). 쉼표는 새로운 "항목"을 나타냅니다. 작동합니다.) 기존 파일은 정적 "목록"이 아니기 때문입니다.
또한 파일을 크기 순서대로 처리하고 싶기 때문에 한 컴퓨터에서 파일 처리가 끝나면 소스 디렉터리를 찾아 가장 큰 파일(실행이 시작된 후 추가된 파일일 수 있음)을 가져와 처리해야 합니다. 새 파일이 지속적으로 추가된다는 사실과 마찬가지로 이러한 요구 사항으로 인해 실행 시작 시 전체 명령을 사용하여 길고 완전한 텍스트 문자열을 생성할 수 없습니다.