最近工作需要,要对wav文件中存储的声音信息进行分析处理。所以花了些时间收集了各种数学软件中处理wav 文件的方法。
Scilab
Scilab 中处理音频文件的函数很多。其中最基本的是wavread和wavwrite。
y=wavread(wavfile)
将wav 文件中的波形数据读入 y 中,波形的幅度范围在 [-1, 1] 。 与Matlab 不同,scilab 将波形数据存成行向量而不是列向量。
[y,Fs,bits]=wavread(wavfile)
Fs
存的是采样率,单位
Hz
,
bits
是数据的位数。
wavread(wavfile,n)
读取波形文件的前n
个数据点。
wavread(wavfile,[n1,n2])
只读取n1
到
n2
之间的数据。
siz = wavread(wavfile,'size')
读取
wav
文件有多少数据点,
siz
为一个
1
行两列的向量。
siz = [channels samples]
这里与Matlab 返回的结果也正好是相反的。
wavread(wavfile,'info')
读取
wav
文件的信息,返回一个行向量
[
数据类型
,
通道数
,
采样率
,
每秒需要多少个字节
, byte alignment of a basic sample block,
数据的位数
,
每个数据点占的字节数
,
每通道的字节数
].
wavwrite(y, wavfile)
将
y
中的数据写入
wavfile
中,采样率默认为
22500 Hz, 16 bits
。
wavwrite(y, Fs, wavfile)
Fs
用来设定采样率。
wavwrite(y, Fs, nbits, wavfile)
nbits
指定数据的位数,可以为
8
、
16
、
24
和
32
。当
nbits
!
=32
时,
wav
文件按照
PCM
码来存储。当
nbits=32
时,数据按照浮点数格式存储。这时也就不要求数据范围在
-1
到
1
之间了。
另一个类似作用的函数如下:
savewave(filename,x [, rate , nbits]);