SoX 명령 체인을 단계별로 올바르게 일괄 실행 - 문제

SoX 명령 체인을 단계별로 올바르게 일괄 실행 - 문제

sox-14-4-2 폴더의 모든 .wav 파일에 대해 시작 시 무음을 제거해야 하며 결과를 기존 하위 폴더에 복사해야 합니다.산출, 그런 다음 파일을 되돌리고 묵음을 다시 제거한 다음 마지막으로 다시 되돌립니다.

첫 번째 묵음 제거 작업은 문제가 없습니다.

FOR %%A IN (*.wav) do (
 sox %%A "Output\%%~nxa" silence 1 0.1 1%
 )

어떻게 든 각 .wav 파일에 대해 하나씩 3개의 sox 명령을 더 실행하는 방법을 상상할 수 없습니다.산출그 다음에는 폴더?

FOR %%A IN ("Output\sample1.wav") DO (
sox %%A "Output\%%~nxa.wav" reverse
)

두 번째 sox 명령은 다음과 같습니다.뒤집다, 일반적인 문제 중 하나는 이 내용을 다음의 모든 .wav 파일에 적용하는 방법을 모른다는 것입니다.산출폴더?
FOR %%A ("Output\*.wav")틀렸다

두 번째 SoX 관련 문제는 동일한 이름을 사용할 수 없다는 것입니다.%%~nxa, 대신 새 이름으로 새 파일을 만들어야 합니다. 그렇지 않으면 출력이 다음과 같이 중단됩니다..wav 출력 파일의 조기 EOF~에산출폴더로 이동하면 80바이트가 됩니다.

이 문제를 해결하고 모든 .wav 파일에 4개의 SoX 명령을 순서대로 적용하려면 어떻게 해야 합니까?
완성된 .wav 파일은 하위 폴더에 있어야 합니다.산출모든 작업이 원래 입력 파일 이름으로 완료된 후에는 모든 입력 파일도 위 폴더에 보관하세요.

답변1

SoX는 압축되지 않은 파일을 사용할 때 특별한 처리가 필요한 것 같습니다.
출력을 쓰는 동안 SoX는 압축되지 않은 입력 파일이 계속 열려 있어야 하므로 이 경우 강제로 교체하면 항상 오류가 발생합니다..wav 출력 파일의 조기 EOF오류.

for %%a in (*.wav) do copy /y *.wav *.
setlocal enabledelayedexpansion
for %%a in (*.wav) do (
  if not exist "%%~dpaTemporalOutput\" md "%%~dpaTemporalOutput\"
  if not exist "%%~dpaOutput\" md "%%~dpaOutput\"
  "sox.exe" "%%~dpa%%~xna" "%%~dpaTemporalOutput\%%~xna" OUR 2 SOX COMMANDS HERE
  "sox.exe" "TemporalOutput\%%~xna" "%%~xna" SAME 2 SOX COMMANDS HERE )
del /f /q "TemporalOutput\*.wav"
rmdir /s /q "TemporalOutput"
move "*.wav" "Output\"
ren *. *.wav
exit /b

관련 정보