我试图使用链接.raw中给出的脚本将728个.wav文件转换为16 the 这里文件,但是我收到了一个错误
sox失败格式:无法打开输入文件‘./*..wav’:没有这样的文件或目录
我正在使用的脚本
for i in ./*.raw; do sox "$i" -r 16000 "${i%%.wav}r.wav"; done脚本在convert.sh中,原始文件在rawfiles文件夹中。文件结构类似于
/Orginal/rawfiles/.rawfiles和/Orginal/convert.sh
我有728个文件来将.raw文件转换为16位16文件。为了删除错误并转换文件,我需要做什么修改?
发布于 2018-03-20 15:42:49
您所使用的SOX代码行根本不用于原始文件转换,请查看SOX全文档以获得更多信息。
下面是关于:什么是原始文件的说明,后面跟着正确的代码。
首先,您需要知道--一个原始文件是一个无头文件。
为了将原始文件转换为wav,需要重新创建文件头,其中包括:
所以,如本答覆所述,格式是:
sox -r 16000 -e unsigned -b 8 -c 1 <RAW_FILE> <TARGET_FILE>这是针对特定情况的:原始数据来源于16 the采样率,每一个样本用无符号整数编码8位,而且它是一个通道。
接下来,对于for循环,可以使用任何工作的for脚本.因此,答案来自: tripleee,通过此修改将起作用。
mkdir -p outputdir
for i in rawfiles/*.raw; do
o=outputdir/${i#rawfiles/}
sox -r 16000 -e unsigned -b 8 -c 1 "$i" "${o%.raw}.wav"
done发布于 2018-02-20 12:51:46
脚本正在当前目录中查找。错误消息看起来只是在当前目录中没有匹配通配符的文件。
我想你想
mkdir -p outputdir
for i in rawfiles/*.raw; do
o=outputdir/${i#rawfiles/}
sox "$i" -r 16000 "${o%.raw}.wav"
done如果您希望当前目录中的文件,显然不要创建或写入outputdir。
发布于 2020-01-13 02:05:54
这是可能对你有帮助的窗户。我有同样的问题,无法通过这里或任何其他网站找到解决方案。所以我踢了踢,呻吟了一下,找出了它,你可以把它转换成linux shell "$",但是下面是批量转换sox,96 to 24位,48 to 16位flac到flac。当然,您可以将其更改为您想要的任何组合(即16b 44.1k)。
创建一个批处理文件,即:24b-96 to到16b-48 to flAC.bat。
@break off
mkdir ".\FLACOUT\"
FOR %%F IN (".\*.flac") DO sox.exe "%%F" -S -b 16 -r 48k -C 8 ".\FLACOUT\%%~NF.flac"它将从您的主目录中获取*.flac文件,并创建一个名为FLACOUT的子目录(或您将其重命名为什么),并将新降采样的文件以相同的名称和元数据放入该子目录中。
https://stackoverflow.com/questions/48884679
复制相似问题