
sox-14-4-2 フォルダ内のすべての .wav ファイルについて、開始時に無音部分を削除し、その結果を既存のサブフォルダにコピーする必要があります。出力次に、ファイルを逆再生し、再び無音部分を削除して、最後に再度逆再生します。
最初の無音除去タスクは問題ありません。
FOR %%A IN (*.wav) do (
sox %%A "Output\%%~nxa" silence 1 0.1 1%
)
どういうわけか、各.wavファイルごとに3つのsoxコマンドを1つずつ実行する方法がわかりません。出力この後のフォルダは?
FOR %%A IN ("Output\sample1.wav") DO (
sox %%A "Output\%%~nxa.wav" reverse
)
2番目のsoxコマンドはこちら逆行する一般的な問題の一つは、これをすべての.wavファイルに適用する方法がわからないことです。出力フォルダ?
FOR %%A ("Output\*.wav")
が間違っています
ここでの2番目のSoX特有の問題は、同じ名前を使用できないことです。%%~なな代わりに、新しい名前で新しいファイルを作成する必要があります。そうしないと、出力が壊れてしまいます。.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