首先小科普:wav信号是一种无损音频信号,但是作为一种数字格式信号,无损是不可能的。wav所谓的无损只是说,对声音信号进行采集后无损编码(mp3是一种典型的有损压缩格式)。而一个wav信号的参数主要有:采样率,比特率,声道数,还有采样位数(精度)。例如,双声道,24位,44.1khz(很高的采样率了),8秒的wav文件,占用大小即为:

2*24*44.1k*8 bit。换算成kB即可。

使用MATLAB函数wavread,参数为wav路径,返回值即是一个一维数组,存储着wav包含的离散值。

为了验证红米note4和华为P9的采集卡音质,录制两段音频,windows直接可以看出,华为的比特率是1024kbps,红米的比特率是64kbps。

对于华为的1024kbps,我猜测是双声道,32khz采样率,16比特。

对于红米的采样率,我确定是16khz,4比特,单声道。而且这个采样率经过MATLAB函数sound试验,确实如此。因为一个离散信号要还原成连续的音频信号,需要知道你这段信号的采样率是多少才能还原,所以能用sound试验出来。


***********************************************************更正信息**********************************************

换了一个函数audioread,由于wavread智能读取wav,所以我之前是将红米的MP3录音转为wav,结果转换的过程中出了差错,形成了不公正的评价。更改如下:

红米采样率远远高于华为,但是红米的通道数少,相当于只有一个ADC,而华为有四个ADC.各有所长吧。


**********************************************************分割线——信号与系统**********************************

人最高的听力范围为20khz,根据奈奎斯特定理,至少要40khz的采样率才能保证不失真。另外,采样过程中,设被采样信号最高带宽为fb,采样频率为fs,则位于fs/2之外的噪声会被混叠到fb之内,形成干扰。所以要滤掉fs/2之外的噪声。如果只有40khz,那么就需要一个砖墙般的滤波器,滤除20khz之后的信号:这是很难的。所以让fs高一点,专业的采样频率一般为44.1khz,这样需要滤除22.05khz之后的噪声,设计滤波器就可以从20khz开始滚降,对于数字滤波器,its easy。


**********************************************************MATLAB分析频谱***************************************

这里只介绍fft函数。fft是快速离散时间傅立叶变换,是一种算法。MATLAB自带的fft需要对2^N个点进行运算(这是算法决定的),所以如果你的离散信号只有900个 ,需要指明点数为1024,MATLAB会自动将不足点数补充为0.

注意:fft的结果是一组复数,其模值/N代表幅度,其角度代表相位。假如进行1024点fft,得到一个1024复数组。其模值,第一个代表0频,第513个代表fs/2的频率,第1-512个分别代表0-fs/2之间频率的幅值,第514-1024个值代表对称的负数频率幅值,由于负数频率不具有物理意义,所以中间频率的实际幅值要乘以2.


附图:一段口哨和其fft结果(均未归一化)

android 采集音频输出 手机音频采集卡_比特率

android 采集音频输出 手机音频采集卡_采样率_02