【问题标题】:How to batch convert .sph files to .wav with sox如何使用 sox 将 .sph 文件批量转换为 .wav
【发布时间】:2024-05-17 02:25:02
【问题描述】:

我有一个包含许多文件夹的目录,其中包含数百个 .SPH 文件。我需要将所有 .SPH 文件转换为 .wav 格式。我采用了以下代码:

cd %~dp0
mkdir converted
FOR %%A IN (%*) DO sox -t raw -s -2 -r 22050 -c 2 %%A "converted/%%~nA.wav"
pause

但是,它在 Windows 7 上没有执行任何操作。当我在某些 .SPH 所在的文件夹中尝试 CMD 上的代码时:

sox *.SPH output.wav

它将所有 *.SPH 嵌入到 output.wav 文件中,这不是我想要的。我需要 name1.SPH 到 name1.wav,name2.SPH 到 name2.wav

请帮忙。

【问题讨论】:

  • sox *.sph output.wav 应该将所有文件转换为一个,这样就不起作用了。所以你需要尝试让上面的批处理代码在CMD窗口中正确运行。

标签: batch-file batch-processing sox


【解决方案1】:

对于 Linux,请考虑:

for f in *.SPH; do sox -t sph "$f" -b 16  -t wav "${f%.*}.wav"; done

【讨论】:

    【解决方案2】:

    在 Windows 7 中,我需要提供目标文件的完整路径,即使我以管理员身份运行,mdkir 命令也会出现权限错误,因此请预先创建目标目录并删除 mkdir命令,然后您的 SOX 命令应与此类似(根据您尝试完成的转换或编辑使用您自己的标志):

    FOR %%A IN (%*) DO sox  -t raw -e mu-law -c 1 -r 8000 %%A c:\converted\%%~nA.wav
    

    cmd文件不要在文件所在的文件夹中,应该在安装SOX的文件夹中,然后将要转换的文件拖到cmd(或bat)文件中。

    【讨论】:

      【解决方案3】:
      for %%a in (*.sph) do sox "%%~a" "%%~na.wav"
      

      【讨论】:

      • 您的意思是sox 选项吗?请。自己添加。
      • 不,我的意思是代码本身不起作用。它什么也没做。
      • 设置您的sph 文件夹,例如。 cd /d c:\data\sph
      • 和?您为什么不发布完整的工作答案以及详细信息?
      【解决方案4】:

      在您的 sox 目录中创建一个包含内容的 .bat 文件

      cd %~dp0
      for %%a in (*.sph) do sox "%%~a" "%%~na.wav"
      pause
      

      选择要转换的文件并将其拖动到此 .bat 文件中,与 .sph 文件同名的 .wav 文件将出现在与 .sph 文件相同的文件夹中。

      【讨论】: