如何在没有数据剪辑的情况下保存音频wav文件?

问题描述 投票:0回答:1

我正在使用MATLAB工具从音频WAV文件中提取静音部分。从音频中提取静音部分后,我想将新音频保存为WAV文件。对于这个过程,我使用'audiowrite'功能。但是,该程序通过以下消息警告我:

警告:写入文件时剪切数据。

我试图用单一文件格式(32位)添加'BitsPerSample'值,我不会用这种方式从程序中获取消息。我保存了32位的音频文件,但WAV文件应该是16位。

我该如何解决这个问题?

audiowrite(filename,y,fs,'BitsPerSample',32);

注意:我也规范化了数据,问题也一样。

谢谢你的帮助!

更新:

我想将音频样本标准化为平均值0和标准偏差或方差1.因此,我使用z-score归一化技术。此外,y/max(abs(y))方法是-1和1之间的归一化数据。但是,均值和方差分别不等于0和1。这些技术是用不同方式标准化的数据。

实际上,我的问题是如何在没有数据剪辑的情况下使用z得分归一化技术保存样本?

matlab audio signal-processing normalization wav
1个回答
0
投票

Matlab的audiowrite对不同的数据类型使用不同的规范化。因此,如果您想获得16位音频wav文件,您应该将数据标准化为[-32768,32767]范围并将数据转换为int16类型:

y_normalized = intmax('int16') * y/(max(abs(y))*1.001);
audiowrite(filename, int16(y_normalized), fs)

同样,对于float,您应该将数据规范化为[-1,+1]范围:

y_normalized = y/(max(abs(y)));
audiowrite(filename, y_normalized, fs)
© www.soinside.com 2019 - 2024. All rights reserved.