如何使用sox将无头的ima-adpcm原始文件转换为wav

QGA*_*QGA 7 audio wav pcm sox adpcm

我试图将原始文件(无标题)转换为wav

它在ADPCM 16中的速率为8000

我试过三个控制台命令

sox -e ima-adpcm -r 8000 input.raw output.wav
sox -e ima-adpcm -r 8000 -b 16 input.raw output.wav
Run Code Online (Sandbox Code Playgroud)

这些触发相同的错误:

sox FAIL formats: bad input format for file `input.raw': data encoding or sample size was not specified
Run Code Online (Sandbox Code Playgroud)

最后的尝试

sox -t raw -t wav -e ima-adpcm -r 8000 -b 16 input.raw output.wav
Run Code Online (Sandbox Code Playgroud)

这会触发另一个错误

sox FAIL formats: can't open input file `input.raw': WAVE: RIFF header not found
Run Code Online (Sandbox Code Playgroud)

你知道为什么我会收到这些错误吗?

谢谢

编辑

前48个字节FYI的十六进制转储

C0 0C 00 03 00 00 37 C0 34 0C D0 30 37 C0 30 C7 CD D3 C0 03 CD 00 37 03
C0 00 0D 0C CD 00 C0 10 0F 00 03 55 0B 4B 0F 0F 0C 0F 34 0F 0D C3 0D 03
00 C0 31 00 00 D0 C0 00 F4 4C 03 33 34 33 31 33 0D 33 D0 03 C0 4C C0 43
Run Code Online (Sandbox Code Playgroud)

Mal*_*ous 8

看起来使用-t raw -e ima-adpcm不起作用,而是你必须使用-t ima -e ima-adpcm.

我想这-t raw意味着原始的PCM,而-t ima意味着原始的ADPCM?

这对我来说可以将ADPCM文件转换为.wav:

sox -t ima -r 44100 -e ima-adpcm in.raw -e signed-integer -b 16 out.wav
Run Code Online (Sandbox Code Playgroud)

只要您指定ADPCM,文件扩展名似乎就没有关系-t ima.


mtr*_*trw 2

您可以将文件名从 更改input.raw为吗input.ima?如果可以的话

 sox input.ima -r 8000 -b 16 output.wav
Run Code Online (Sandbox Code Playgroud)

应该可以工作。.raw似乎是一个神奇的扩展,sox并且它假设了数据的某些可能性。请参阅此手册页