首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sox批量转换

Sox批量转换
EN

Stack Overflow用户
提问于 2018-02-20 11:50:17
回答 3查看 9.5K关注 0票数 0

我试图使用链接.raw中给出的脚本将728个.wav文件转换为16 the 这里文件,但是我收到了一个错误

sox失败格式:无法打开输入文件‘./*..wav’:没有这样的文件或目录

我正在使用的脚本

代码语言:javascript
复制
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文件。为了删除错误并转换文件,我需要做什么修改?

EN

回答 3

Stack Overflow用户

发布于 2018-03-20 15:42:49

您所使用的SOX代码行根本不用于原始文件转换,请查看SOX全文档以获得更多信息。

下面是关于:什么是原始文件的说明,后面跟着正确的代码。

首先,您需要知道--一个原始文件是一个无头文件

为了将原始文件转换为wav,需要重新创建文件头,其中包括:

  • 抽样率(44100,16000,8000,.)赫兹
  • 样本大小位
  • 数据编码(浮点,μ-律,ADPCM,有符号整数PCM)
  • 频道(通常为1或2立体声)

所以,如本答覆所述,格式是:

代码语言:javascript
复制
sox -r 16000 -e unsigned -b 8 -c 1 <RAW_FILE> <TARGET_FILE>

这是针对特定情况的:原始数据来源于16 the采样率,每一个样本用无符号整数编码8位,而且它是一个通道。

接下来,对于for循环,可以使用任何工作的for脚本.因此,答案来自: tripleee,通过此修改将起作用。

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2018-02-20 12:51:46

脚本正在当前目录中查找。错误消息看起来只是在当前目录中没有匹配通配符的文件。

我想你想

代码语言:javascript
复制
mkdir -p outputdir
for i in rawfiles/*.raw; do
    o=outputdir/${i#rawfiles/}
    sox "$i" -r 16000 "${o%.raw}.wav"
done

如果您希望当前目录中的文件,显然不要创建或写入outputdir

票数 1
EN

Stack Overflow用户

发布于 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。

代码语言:javascript
复制
@break off
mkdir ".\FLACOUT\"
FOR %%F IN (".\*.flac") DO sox.exe "%%F" -S -b 16 -r 48k -C 8 ".\FLACOUT\%%~NF.flac"

它将从您的主目录中获取*.flac文件,并创建一个名为FLACOUT的子目录(或您将其重命名为什么),并将新降采样的文件以相同的名称和元数据放入该子目录中。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48884679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档