scilab 读取处置 wav 文件

scilab 读取处理 wav 文件

最近工作需要,要对wav文件中存储的声音信息进行分析处理。所以花了些时间收集了各种数学软件中处理wav 文件的方法。

Scilab

Scilab 中处理音频文件的函数很多。其中最基本的是wavread和wavwrite

y=wavread(wavfile)

将wav 文件中的波形数据读入 中,波形的幅度范围在[-1, 1]Matlab 不同,scilab 将波形数据存成行向量而不是列向量。
[y,Fs,bits]=wavread(wavfile)
Fs 存的是采样率,单位Hzbits 是数据的位数。

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)
将 中的数据写入 wavfile 中,采样率默认为 22500 Hz, 16 bits

wavwrite(y, Fs, wavfile)
Fs 用来设定采样率。

wavwrite(y, Fs, nbits, wavfile)
nbits指定数据的位数,可以为 8162432。当 nbits=32时,wav文件按照PCM 码来存储。当nbits=32时,数据按照浮点数格式存储。这时也就不要求数据范围在-1之间了。

另一个类似作用的函数如下:

savewave(filename,x [, rate , nbits]);