2016-08-14 118 views
-1

我从记录中得到了一个.raw文件,它是由Java类AudioOutputStream(我写入字节)的写入方法写入的。如何使用python读取和过滤原始音频文件?

我想用Python过滤器过滤这个音频文件。 Here这是我正在使用的指南,它过滤浮点数的列表(指南中的变量x)。

我的问题是不同的类型,字节和浮点数。有没有一种方法可以使该滤镜适用于.raw音频?

我欣赏任何建议。谢谢。

回答

0

我发现了两个有用的java类:DataInputStreamDataOutputStream来为我的Python脚本编写使用的浮点数。

首先,我从.raw文件读取浮点值,readFloat方法读取4个字节作为浮点数。

FileInputStream is = new FileInputStream(inputName); 
DataInputStream dis = new DataInputStream(is); 

ArrayList<Float> fbuffer = new ArrayList<Float>(); 

try { 
    while(dis.available()>0){ 
     float f = dis.readFloat(); //read 4 bytes as float 
     // this fails if it is not 4x 
     fbuffer.add(f); 
    } 
} catch (IOException e) { 
    //nothing happens, there are 1,2 or 3 bytes at the end we are going to ignore 
    //e.printStackTrace(); 
} 
dis.close(); 
is.close(); 

这样我创建一个带有浮点值的文件。该文件由python脚本读取。这里我用

fin = open('fileWithFloatsName') 
floatList = [line.rstrip('\n') for line in fin] 
floatList = destringifyList(floatList) 
fin.close() 

我得到花车的列表中,执行过滤器在here并获得彩车的新列表。我将这个结果写入一个新的文件中,java将用Scanner对象读取。

最后,我们创建一个新的.raw文件并使用writeFloat方法将浮点数作为字节写入。

就是这样。如果有人提出更好的建议(部分或者没有),我会很感激。