R中的wav文件不完整,但文件中有额外数据?
我试图在R中打开一个声音文件,但是R中的wav文件不完整,但文件中有额外数据?,r,debugging,audio,binaryfiles,R,Debugging,Audio,Binaryfiles,我试图在R中打开一个声音文件,但是load.wave()函数抱怨该文件“不完整”。该声音在许多其他音频软件(mplayer、Audacity、Praat等)上播放效果良好,文件没有报告它与其他WAV文件有任何不同,这些文件没有问题: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 22050 Hz 我知道load.wave()在内部调用一个C函数来处理数据,但我不知道该函数是什么,或者它是做什么的(所以我不明
load.wave()
函数抱怨该文件“不完整”。该声音在许多其他音频软件(mplayer、Audacity、Praat等)上播放效果良好,文件
没有报告它与其他WAV文件有任何不同,这些文件没有问题:
RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 22050 Hz
我知道load.wave()
在内部调用一个C函数来处理数据,但我不知道该函数是什么,或者它是做什么的(所以我不明白它为什么抱怨)。来自load.wave()
的调用在R中被定义为.call(“load\u wave\u file”,其中,PACKAGE=“audio”)
,其中其中
是文件的路径
在Audacity中打开声音并将其再次保存为WAV文件会生成一个相同的声音文件,该文件可以在R中打开而不会出现任何问题
然而,这些文件似乎大不相同。使用时,两个标题都存在差异:
# Original file
0000 0000: 52 49 46 46 39 AE 02 00 57 41 56 45 66 6D 74 20 RIFF9... WAVEfmt
0000 0010: 12 00 00 00 01 00 01 00 22 56 00 00 44 AC 00 00 ........ "V..D...
0000 0020: 02 00 10 00 00 00 64 61 74 61 D4 AD 02 00 F9 FF ......da ta......
# Fixed file
0000 0000: 52 49 46 46 F8 AD 02 00 57 41 56 45 66 6D 74 20 RIFF.... WAVEfmt
0000 0010: 10 00 00 00 01 00 01 00 22 56 00 00 44 AC 00 00 ........ "V..D...
0000 0020: 02 00 10 00 64 61 74 61 D4 AD 02 00 FA FF F6 FF ....data ........
在整个文件中:
更有趣的是,原始文件末尾的块已被删除:
# Original file
0002 ADF0: 5E 00 5D 00 5F 00 5F 00 5F 00 5F 00 5E 00 5D 00 ^.]._._. _._.^.].
0002 AE00: 5B 00 63 75 65 20 1C 00 00 00 01 00 00 00 01 00 [.cue .. ........
0002 AE10: 00 00 88 58 01 00 64 61 74 61 00 00 00 00 00 00 ...X..da ta......
0002 AE20: 00 00 88 58 01 00 4C 49 53 54 13 00 00 00 61 64 ...X..LI ST....ad
0002 AE30: 74 6C 6C 61 62 6C 07 00 00 00 01 00 00 00 52 54 tllabl.. ......RT
0002 AE40: 00
# Fixed file
0002 ADF0: 5E 00 5F 00 5F 00 5F 00 5F 00 5D 00 5F 00 59 00 ^._._._. _.]._.Y.
0002 AE00:
0002 AE10:
0002 AE20:
0002 AE30:
0002 AE40:
1。此文件有什么问题,使我无法打开它?
2。原始文件末尾的数据是什么?(见下文)
我知道有多个音频处理程序,它们对WAV规范相当自由,所以这种类型的问题并不少见。我只是想弄清楚到底发生了什么,也许可以实施一个修复(不需要我大发雷霆)并防止它在未来再次发生
更新:
该块似乎是一个“提示点块”,如下所述:
提示点块标识波形数据流中的一系列位置
我想这意味着它应该是无害的,但这就是问题的根源吗