我正在尝试寻找一个可以检查 .WAV 文件的命令行程序(Windows 或 Linux),以查看它们是否完整、没有损坏或突然结束。
尽管我找到了几个可以对 .mp3 文件执行此操作的程序,但我找不到任何可以对 .WAV 文件执行此操作的程序,除了几个仅使用 GUI 因此不能在脚本中使用的商业 Windows 程序。
答案1
这是一篇有关 wav 格式规范的文章:
http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html
应该能够编写某种小脚本来检查标题并确保它们看起来正常。
更新:
https://github.com/mbs/wavcheck/releases/tag/0.1
这是一个可能适合您需要的小实用程序。它检查文件,输出有关文件的一些信息,然后退出。如果成功,返回代码为 0,如果文件有问题,则返回非零。
它是用 Python 编写的,依赖于 Python wave 库。您可以从 zip 中提取 .py 文件并单独检查/运行,或者使用编译后的 exe 以及随附的支持文件。
对于例如由 lame --decode 输出的文件似乎工作正常,并且在我截断 WAV 时捕获(检查以确保文件大小合理)。
如果没有外部校验和等,就无法确定 PCM 数据是否已损坏。
更新:
增加了一些更好的错误检查。当 wavcheck.py 位于同一文件夹中时,编译的 exe 版本会出错,因此我将其放在子文件夹 (/src) 中。哈哈。将上面的链接更新为新文件。
更新:
我按照 @boehj 的建议查看了 shntool——看起来是一款检查 WAV 文件的优秀软件,并且输出非常详细。可以对其输出进行简单的解析,也可以修改其源代码,以允许在“info”和/或“len”模式下实现完全正常的退出状态。就目前情况而言,即使报告文件存在问题,其退出代码也是 0。
shntool 的主页:http://shnutils.freeshell.org/shntool/
更新:由于这篇文章中的所有内容多年来都已过时,我链接到了另一篇关于 wav 格式的文章,并将我编写和编译的软件代码上传到 github,并更新了指向它的链接。在 Win10 中测试了该软件,它似乎仍然适用于基本的 LPCM wav 文件。似乎 shntool 不再存在于原始链接中,所以我修复了它以指向某个地方,但不能确定它是否是确定的。
答案2
撕裂检查是一个可以执行此操作的实用程序。
引用文档:
“ripcheck” 对 WAV 文件运行各种测试,以查看将 CD 转换为 WAV 文件时是否存在潜在错误。
[...]
为什么?
编写此程序的原因是,我们收到了一些投诉,称 Magnatune 的一些专辑在开始时偶尔会出现“爆音”。进一步研究发现,我们在 2007 年发行的大多数专辑都存在各种 CD 翻录问题。我们还发现我们的音乐家刻录的各种 CDR 都有小缺陷,可能是由于使用了廉价的 CDR 介质,或者刻录速度太快。
[...]
答案3
我知道这是一个老话题,但万一它有用:
这乔夫工具(在存档/数字图书馆领域应用非常广泛)包含一个可以验证 WAV 文件的 WAV 模块。可在此处获取:
http://jhove.openpreservation.org/
不知道如何乔夫的验证与以下检查相比较什恩工具施行。
更新:所以在发布我的答案后,我自己处理了一些 WAV,然后通过一些工具运行它们。完整的文章以及测试数据和脚本的链接在这里:
http://openpreservation.org/blog/2017/01/04/breaking-waves-and-some-flacs/
主要结果:最好还是继续使用老牌的 Shntool!JHOVE 被证明对这种事情毫无用处(这也让我很惊讶)。(顺便说一句,这篇博客还介绍了如何检测损坏的 FLAC 文件,尽管这不是这里的问题。)