录制声音过程中需对声音电平进行量化处理
最理想的量化是最大电平对应最高量化比特
但实际却很难做到
常有音轻问题
利用 MATLAB 很容易实现音量标准化
即最大电平对应最高量化比特
基本步骤:
先用 wavread 函数将 WAV 文件转换成列数组变量
再求出数组变量的极值并对所有元素作归一化处理
最后用 wavwrite 函数还原成音量标准化的 WAV 文件
例 1 现以微软自带的 Windows XP 关机.wav 音频信号为例
先将其复制另存到文件名为 XPexit.wav 的 MATLAB 当前目录中
再通过音量标准化处理后保存为 XPquit.wav 文件 实现程序如下
clear; close all; clc;
[Y,FS]=audioread('10252690_scuba-diver-breathing-underwater_by_sound-ideas_preview.mp3'); % 将 WAV 文件转换成变量 FS,NBITS, % 显示采样频率和量化比特
Ym = max(max(max(Y)),max(abs(min(Y)))); % 找出双声道极值
X=Y/Ym; % 归一化处理
audiowrite('XPquit.wav',X,FS); % 将变量转换成 WAV 文件
试听可知标准化处理后音量稍大