华人论坛 用matlab处理音频文件


dell1440型号pp42l板卡号092707-1 alba discrete (本来是要上图的 但是我手机拍的照片就是发不上一直发不上。。)说故障额: 上电电流0.8a 插不插内存都一样 , 示波器打内存第200 202脚 发现 这个机器通病是排线接口那里坏 我这个上电0。8 各电都有不知道是哪里问题了 评论 你可以加焊一下桥试试,我遇到过一台相同的机器,但不是这个型号!!!! 评论 看下转化电压有没


用Audio Precision 2722来检测音频系统的频响曲线,其中有一种方法是利用被检测设备中声音文件发出的频率作为扫频信号源,检测系统的实际频响效果。其中对这个扫频信号是有较为严格的要求。具体要求(参考外部扫描规则设置External Sweep Rules)如下:

1. 在扫描的源1中,选择模拟信号分析仪的读数值A通道的频率作为信号源。 起始频率为20Hz,终止频率为22kHz,中间频率采用是对数方式增长。但是这些具体的频率是多少呢,需要通过外部规则来设定。因此,需要打开"External Rules..."按钮,做详细设定。
  

63121334026656.jpg (94.27 KB, 下载次数: 7)

下载附件  保存到相册

2016-3-17 14:08 上传


在 External Sweep Setting窗口,包括起始条件(Start),中间读数(Data)和终止条件(End)三个部分。分别包括了具体设定的数值,允许的读数误差。 在以下几种情况下,才可能开始扫描(AP 2700系列产品用户手册第423页)。

起始值设置:
1. 信号源的输出在起始值+/-误差范围内;信号强度要超过设定的阈值;设定的读数1-6都稳定;信号源1的读数稳定超过1s。这几个条件中,所有条件均必须满足,才能开始扫描。
2. 信号源的输出在起始值+/-误差范围或以上:信号强度要超过设定的阈值;设定的读数1-6都稳定;信号源1的读数稳定在误差范围内或超出误差范围的时间超过1s。
3. 任意设定的读数点:源1的信号是不相关信号;信号强度要超过设定的阈值;设定的读数1-6都稳定。在此情况下收集的数据可能超出设定的起始值和终止值的范围。

数据间隔问题:
1. 源1的读数稳定在前一读数加数据间隔上;
2. 要采集的信号读数必须大于或等于设定的读数阈值;
3. 设定的读数1-6都稳定;
4. 信号源1的读数稳定在误差范围内或超出误差范围的时间超过1s。

读数阈值设定:此数值的设定主要是用来排除误差干扰信号。对于低于设定值的信号不做处理。

终止条件设定:
终止值及误差范围:当源1的测量读数在此范围时,会自动停止扫描。

从以上信息中得知,对于用作扫描信号的信号波形,并不是连续光滑的扫频曲线,而是基本上以1秒为单位的步长阶梯,并且这些频点是以对数频率步进。如果要扫描的范围是22Hz-22000Hz,则起始范围比1000,常用对数值为3。如果划分为30个频点,每个频点步长为常用对数0.1。如果划分为120个频点,则步长为0.025。如果更进一步,划分到150个频点,则步长为0.02。每个频点的最短时间为1s。假设其为1.1s,则需要扫描165s,外加10s的1kHz标准信号,则整个扫描过程最少需要175s才能完成。

在matlab上,可以用以下代码实现。
%以下程序中生成正弦波并播放。
Fs = 192000; % 采样频率
%写10s 1kHz数据
T = 10; % 时间长度
n = Fs*T; % 采样点数
f = 1000; % 声音频率
nBitSize = 24; %量化精度(位深度)  
y = sin(2*pi*f*T*linspace(0,1,n+1));
%sound(y,Fs);  %播放音频数据
nStartFreq =20;  %起始频率
nEndFreq=22000;  %终止频率
nSteps=160;      %共扫描160个数据点
nLastT=1.1;      %每个频点延时1.1秒
nCount = Fs*nLastT;
nStepLog = log10(nEndFreq/nStartFreq)/nSteps; %频率增加的对数步距
for (nFreqLog =0:nSteps-1)
    fFreq = nStartFreq*10^(nFreqLog*nStepLog)            %实际扫描频点
    y1=sin(2*pi*fFreq*nLastT*linspace(0,1,nCount+1)); %生成对应频率的正弦波数据,频率为计算的频点,时间1.1s
    y=[y,y1];                   %生成的数据与前面的波形数据合并
end
filename = 'd:        estfilesSweep_192K_24bit.wav';
audiowrite(filename, y, Fs, 'BitsPerSample',nBitSize,'Comment','Sweep_192K_24bit'); %保存声音文件。
info = audioinfo(filename);
info                %显示音频文件的主要信息
msgbox('程序运行结束。');

程序运行后的显示结果如下(matlab 8.01 64位版本,运行时间7s):
info =
    Filename: 'D:TestFilesSweep_192K_24bit.wav'
    CompressionMethod: 'Uncompressed' <-----默认的文件格式,未压缩的PCM格式。
          NumChannels: 1                            <------未指定声道数,默认为单声道。
           SampleRate: 192000
         TotalSamples: 35712161
             Duration: 186.0008                    <-------音乐文件总时长,186s
                Title: []
              Comment: 'Sweep_192K_24bit'  <---- 附加的信息。
               Artist: []
        BitsPerSample: 24

使用matlab的最大好处在于读取和保存声音文件非常方便。目前使用audioread, audiowrite 和 audioinfo函数替代了早期的wavread和wavwrite等函数,把支持的音频文件的格式扩展到 WAV, OGG, FLAC,M4A,ALC等格式,全面支持24bit,32位,64位量化,以及各种采样率的归一化数据,为音频文件的处理提供了极大的灵活性。

使用 Audition 对该文件的频谱做分析如下:

63121335022709.jpg (44.44 KB, 下载次数: 3)

下载附件  保存到相册

2016-3-17 14:08 上传


整体频谱范围在20-22kHz,前面一段10s 1KHz。

63121335050466.jpg (44.25 KB, 下载次数: 7)

下载附件  保存到相册

2016-3-17 14:08 上传


局部放大后,可以看到每个频段的持续时间1S。在两个不同频点的连接处,可以看出频谱很广。

63121335057511.jpg (53.11 KB, 下载次数: 7)

下载附件  保存到相册

2016-3-17 14:08 上传



对波形数据做局部放大,可以看出,因为波形数据不连续,导致其频谱非常负载。

通过 matlab的强大运算能力,可以对音频数据的质量做分析。以下的程序段用于将音频数据文件读到系统中,然后进行FFT,获取信号的频谱。

%用fft方法分析 Wave波形文件的频谱
%y 为音频数据的存储数组,Fs为音频数据的采样率
%Pyy 用于保存音频的归一化幅度,Pyy_DB是转换为dBV以后的数值。
%info用来获取音频文件的详细信息,nBitSize是音频文件的采样率。
%nNormal 用于做归一化使用的常数,等于2^nBitSize。
%sigLength是音频文件的总采样个数,halfLength是总采样数的一半值。
%f是用于显示频率时的具体频点值。

%##########################################################
clear;          %清理当前内存变量
clc;            %清理命令窗口
filename='D:        estfileskHz_Sine_192kHz_24bit_2ch.wav';
[y,Fs]=audioread(filename); %读数据文件
info = audioinfo(filename); %获取音乐文件信息
nBitSize = info.BitsPerSample;%获取文件中采样深度
nNormal = 2^nBitSize;       %做幅度归一化时的最大值
y=y(:,1);                   %仅使用双声道数据中的第一列(左声道数据)
sigLength = length(y);      %获取数组长度
%Y1 = y.*hanning(sigLength); %使用Hanning窗变换?操作失败,暂时去掉。
%完成FFT及获取幅度值,以及幅度值的对数表示法(dBV)
Y=fft(y,sigLength);         %做标准FFT变换
Pyy = abs(Y)*2/sigLength/nNormal;  %求取变换结果的幅值部分,并做归一化处理
Pyy_DB = 10*log10(Pyy);             %取常用对数,变成dBV单位。
%以下处理画图部分
halflength = floor(sigLength/2);    %仅使用半长度做显示
f=Fs*(0:halflength)/sigLength;      %生成索要用的频点
semilogx(f,Pyy_DB(1:halflength+1));      %画x轴对数曲线
title('1K-192kHz-24bit-2CH正弦波频谱'); %标题
xlabel('频率(Hz)');                  %x轴标记
ylabel('dBV');
grid on;                        %打开网格
msgbox('Done');                 %提示结束

实际运行的结果如下:
直接用Audition 生成的192KHz,24bit采样的正弦波,其频谱如下:

63121336084192.jpg (160.94 KB, 下载次数: 6)

下载附件  保存到相册

2016-3-17 14:08 上传



对比 44.1kHz采样率,16bit的1KHz Sine的MP3 频谱如下,可以看出增加了很多高次谐波分量。

63121336014756.jpg (162.34 KB, 下载次数: 3)

下载附件  保存到相册

2016-3-17 14:08 上传



直接用Audition 生成的44.1kHz 16bit, 1KHz Sine 的频谱,相对来说高频分量较MP3好很多。

63121336045311.jpg (158.25 KB, 下载次数: 4)

下载附件  保存到相册

2016-3-17 14:08 上传



目前这个算法还有一点问题,就是计算出来的幅度值严重偏离正常的设定值,还需要做进一步的修订。





评论
用MATLAB做这个有什么用?一个仿真程序处理音频?

维修经验

主板Z77 中端主板选择真的好纠结啊

华人网P67 用了技嘉的UD5R 那个开机慢 那个无限重启 让我受够了 现在装一天新机 没有想好买什么 大家给点意见吧 不想为主板的事情再烦了。 选择1. P8Z77-V主要大家说这代主板超频都很水 是真 ...

维修经验

华硕X430UN 待机0.001A不触发已经解决

华人网华硕X430UN 待机0.001A不触发已经解决 评论 那就是公共点短路来自苹果APP客户端 评论 学习学习,感谢大神分享经验. 评论 管子短路吗 评论 直接测出来哪里的发烫,根本不通电,公共电都 ...

神舟战神T6TI-X5不开机维修
维修经验

神舟战神T6TI-X5不开机维修

华人网神舟战神T6TI-X5不开机机器型号如下图 版号:6-71-N85H0-D02B 故障现象:待机电流0.006A,按开关后上到0.015A后稳定不动 维修过程:从电流看,有很多电压没产生,按照时序检测,在图纸最后 ...

维修经验

惠普HP TPN-Q140短路维修

华人网今天又接到在大学校区做电脑同行的一台HP-TPN-Q140本子,上I7的U, 图片 001.jpg (54.02 KB, 下载次数: 2) 下载附件保存到相册 2016-8-19 02:53 上传 ,客户描述:可能是电源接口坏了,有时摇一摇 ...

维修经验

Nm-b190有线网卡

华人网R270-15IKBN不加电,电流表cc灯闪,说明主板有短路,测b+阻值正常,裸板能加电,最后锁定了网卡芯片,跟客户报价,客户说他有线网卡不用,直接拆了,加电无显,刷个bios搞定 登录/注 ...

维修经验

戴尔7520大短路非通病

华人网今日接修一台戴尔的7520的机器,接机8A大短心想这不是给我送钱来啦么,话不多说直接拆机,测公共点 PR102同学们肯定都懂直接拆掉PC107 ,PC108怀着新强澎湃的心情开始装机上电,涛声 ...

维修经验

A1466抖屏

华人网MacbookAIr原系统正常,装W10后,会出现视频发的问题现象,大家有没遇到过,给个思路,感激不尽!! 您的设备不支持视频标签。 来自安卓APP客户端 评论 遇到过一次屏的问题 评论 遇到 ...

维修经验

A1398全系列改集成显卡 100%成功 加精

华人网在我们维修中A1398这款机器经常性出现显存打黑胶的情况, 这样的情况处理显卡必然要同时处理显存, 这样搞到很多初学的人把板子搞到不显示或者搞到花屏,在黑胶维修的情况这是70%机会 ...

维修经验

戴尔3442 不触发待机0.095A

华人网戴尔3442不出发待机0.095A3v5v转换芯片发烫,电压都正常无3v5v更换芯片第一次更换电阻好了,20左右有不触发电流一样,第二维修加焊Ec芯片一个月后又不触发,待机电流一样,最后查到 ...

维修经验

ZQ6A不触发曲折维修路!!!

华人网接一台笔记本,型号如题,品牌是Emachines(特地上网查询了下,就是宏基的)版号为DAOZQ5MB6D0, 按开机无反应,拆机发现开机键上只有0.06V电压,明细不对,查图纸,发现开机键直通EC的95脚 ...