日本电子维修技术 用matlab处理音频文件



用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做这个有什么用?一个仿真程序处理音频? 电路 电子 维修 求创维42c08RD电路图 评论 电视的图纸很少见 评论 电视的图纸很少见 评论 创维的图纸你要说 版号,不然无能为力 评论 板号5800-p42ALM-0050 168P-P42CLM-01 电路 电子 维修 我现在把定影部分拆出来了。想换下滚,因为卡纸。但是我发现灯管挡住了。拆不了。不会拆。论坛里的高手拆解过吗? 评论 认真看,认真瞧。果然有收
 ·日本留学生活 求个大阪合租
·日本留学生活 自家房招租求
·日本留学生活 东京地区出9成新lv钱包
·日本育儿教育 孩子从国内过来如何学习日语
·日本育儿教育 明年四月横滨招月嫂
·日本育儿教育 请问咋让娃突破识字关?感谢分享中文共读和学习经验的妈妈
 ·中文新闻 东区明星迈克尔·格列柯,53 岁,将在第一次出生两年后第二次
·中文新闻 《爱情岛》明星卡米拉·瑟洛和杰米·朱维特在透露即将迎来第三

维修经验

CPUcpu-z 1.77版低调发布

日本维修技术更新: New benchmark “submit and compare” feature New clocks dialog reporting all system’s clock speeds in real-time Preliminary support for Intel Kaby Lake AMD Bristol Ridge processors 主要是增加了支持I、A两个新架构的 ...

维修经验

CPU这几天经常开机黑屏,热重启后又正常

日本维修技术这几天经常开机黑屏,热重启后又正常,今天热重启也不管用了。折腾半天总算点亮,显示超频失败,以前出这个画面我是不理它的,直接重启就能正常进系统了,今天不敢托大,因为 ...

维修经验

CPU超频求助!关于华擎H170和6700K

日本维修技术问题见楼主的show贴 https://www.chiphell.com/thread-1634895-1-1.html 这次华擎的H170 Hyper最大的特色应该是自带时钟发生器可以自由超外频 可是楼主好久没有折腾超频了。。。 两图中除了CPU外频 以 ...

维修经验

CPU液态金属会侵蚀cpu核心吗?

日本维修技术前阵子看到有人说,液态金属时间长了会侵蚀cpu铜盖,那么问题来了,这货会不会侵蚀核心呢? 评论 这玩意儿好像只对铝起反应 评论 不是说,cpu的盖子是铜的吗。。。 评论 不会,核 ...

维修经验

CPUm6i究竟支不支持e3 1231v3

日本维修技术官网上看支持列表没写有e3 1231v3,装机帖又有人晒,百度也没个明确答案,那究竟能不能点亮?有在用的chher说一下么 评论 升级最新bios肯定可以支持 评论 我的p67evo官网上也没说支持12 ...

维修经验

CPU华擎 HYPER 妖板 正确玩法

日本维修技术600元的 B150,10相供电,释放洪荒之力 注意必须官网 Beta 区的 BIOS 有 AVX 的 CPU 可能会掉缓存 启动时按 X 键激活 SKY OC,重启后进入 BIOS 160924164727.jpg (95.63 KB, 下载次数: 1) 2016-9-24 17:47 上传 ...

维修经验

CPUE5 2686 V3和i7 6800K如何选择

日本维修技术默认用,不超频,两者功耗是一模一样的 E5 2686 V3:2.0主频,3.5睿频, 18核心36线程 ,45M L3 咸鱼大约2500~3000元 i7 6800K : 3.5主频,3.8睿频 ,6核心12线程 ,盒装3000元 评论 性能应该是26 ...

维修经验

CPUHD530硬解4K能力还是有点弱呀!

日本维修技术播放器用PotPlay 64bit,各种优化后,跑4K @120Hz视频只能到70帧左右的速度,勉强能用! 显示器用的4K的优派VP2780 未标题-1.jpg (211.97 KB, 下载次数: 0) 2016-9-26 21:29 上传 评论 这个估计你没优化 ...

维修经验

CPU6900k 1.25V到4.2体质怎么样

日本维修技术如图,体质怎么样,ring是35,没敢试了,都说ring高了毁硬件 评论 不错的U,但不算雕,上4.4就大雕了,这电压上4.5的目前没见有人发图 评论 谢谢前辈告知 评论 我这个用1.2V超的4.2,R ...

维修经验

CPUI3 6100 华擎B150M pro4超4.5g测试。

日本维修技术看看论坛没多少i3 6100的帖子,就转下自己发的show贴里面的数据,给大家参考下。家里还有当年的神U i3 540 oc 4.5G在给老妈用。 不知道数据上正常吗?有6100的朋友可以告诉下,另外是不有 ...

维修经验

CPU7系u会兼容100系主板吗?

日本维修技术RT,听说要推200系板,100系还能用吗以后。。 评论 兼容的 评论 感谢!以后换u就行了,目前消息200系板会有新的特性吗? 评论 24条PCI-E 3.0通道、支持Intel Optane混合存储技术、十个USB 3 ...

维修经验

CPU有心入5820k了,求教下温度问题

日本维修技术一直徘徊在6700k和5820k之间,6700k现在这德行直接把我推向了5820k啊,从2600k升级上来,三大件都要换,现在唯一疑惑的是IB-E ex这种顶级风冷能不能压住4.5g的5820呢?毕竟刚刚买一个多月。 ...

维修经验

CPU6600&amp;6600K才100的差价

日本维修技术太少了吧。。。 6600.JPG (106.91 KB, 下载次数: 0) 2016-10-1 10:30 上传 评论 毕竟只是i5而已…… 评论 上z170 6600也能超,等于没区别,差价能有100已经不错了 评论 然后又见不超频人士推荐超频 ...