如何使用python读取和过滤原始音频文件?

时间:2016-08-14 12:48:29

标签: java python audio

我从录制中获得了一个.raw文件,它是由Java类AudioOutputStream中的write方法编写的(我写了字节)。

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

我的问题是不同的类型,字节和浮点数。有没有办法让这个过滤器使用.raw音频?

我感谢任何建议。感谢。

1 个答案:

答案 0 :(得分: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();

这样我用float值创建一个文件。该文件由python脚本读取。我在这里使用

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

我得到浮点数列表,执行here中的过滤器并获取新的浮点列表。我将此结果写入一个新文件,该文件将使用Scanner对象读取。

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

这就是全部。如果有人建议更好(部分或不是),我会很感激。