使用脚本将RAW音频数据转换为WAV

时间:2010-01-13 17:57:24

标签: audio scripting

我有大量的.RAW音频文件(带无字节的无符号8位PCM),我想将其转换为.WAV文件。我可以用什么命令行工具(windows或linux)快速转换它们?

7 个答案:

答案 0 :(得分:30)

我被一位朋友指向SoX,这就是诀窍。使用的语法是 sox -r 44100 -e unsigned -b 8 -c 1 <RAW_FILE> <TARGET_FILE>

答案 1 :(得分:2)

MPlayer应该可以转换您的音频;

$ mplayer \
  -quiet \
  -vo null \
  -vc dummy \
  -af volume=0,resample=44100:0:1 \
  -ao pcm:waveheader:file="file.wav" "file.raw"

它在大多数Linux发行版程序包管理器中都可用。

答案 2 :(得分:2)

我发现sox非常快速可靠。我用它作为我与Asterisk放在一起的听写解决方案。如果您正在使用sox,请注意您应该知道源编码是什么。我发现this是我做项目的初始挂断

对于我的实现,我使用它:

sox -t auto -w -s -r 8000 -c 1 {input_file}  {output_file}

答案 3 :(得分:1)

audioconvert非常标准(我认为)

mencoder在完全免费的Linux发行版中不是标准版,但可以转换为任何内容

答案 4 :(得分:1)

如果您的文件名.txt包含所有原始音频文件名,那么使用python可以将一批原始文件转换为批wav。

from subprocess import call
file = "name.txt"
with open(file,'rU') as f:
     for name in f:
        name = name[:len(name)-4]
        name1 = './'+name+'raw' #input 
        name2 = './'+name+'wav' #output
        call(["sox","-r","48000", "-t", "sw", "-e", "signed", "-c", "1", "-b", "16", name1, name2])

采样率48K,单通道,精度16位。

答案 5 :(得分:1)

让我们使用Sox,几乎到处都有它。

在Mac上:

brew install sox

在Ubuntu上(已测试18.04):

sudo apt update && sudo apt install sox -y

我倾向于使用16k SR,16位精度和16位Signed Integer PCM编码,因此将使用这些默认值。我的文件是.raw,但也可以是.pcm等。

# assume you're in the directory with the raw wavs - we'll make a new wavs directory to put the converted ones
mkdir -p wavs

# 1-liner
for f in *.raw; do sox -r 16000 -e signed -b 16 -c 1 "$f" wavs/"${f%.*}.wav"; done

要检查wav文件是否具有标题,请使用soxi:

rob@tp:~/wavs$ soxi test.wav 

Input File     : 'test.wav'
Channels       : 1
Sample Rate    : 16000
Precision      : 16-bit
Duration       : 00:00:12.62 = 201984 samples ~ 946.8 CDDA sectors
File Size      : 404k
Bit Rate       : 256k

答案 6 :(得分:0)

您可以使用node-lame

 var Lame = require("node-lame").Lame;

 const decoder = new Lame({
        output: "./new.wav",
        raw: true,
        bitwidth:16,
        sfreq:48,
        mode: "m"
    }).setFile("./a.pcm");
    decoder.decode().then(() => {
            console.log("decoded successfully.");
        }).catch(error => {
            console.log("Error: "+error);
        });

https://www.npmjs.com/package/node-lame

或使用“ sox” CLI工具

sox -r 48000 -t sw -e signed -c 1 -b 16 a.pcm new.wav