久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
用matlab處理音頻文件
[打印本頁]
作者:
51hei人人
時(shí)間:
2016-3-12 21:01
標(biāo)題:
用matlab處理音頻文件
用Audio Precision 2722來檢測音頻系統(tǒng)的頻響曲線,其中有一種方法是利用被檢測設(shè)備中聲音文件發(fā)出的頻率作為掃頻信號源,檢測系統(tǒng)的實(shí)際頻響效果。其中對這個(gè)掃頻信號是有較為嚴(yán)格的要求。具體要求(參考外部掃描規(guī)則設(shè)置External Sweep Rules)如下:
1. 在掃描的源1中,選擇模擬信號分析儀的讀數(shù)值A(chǔ)通道的頻率作為信號源。 起始頻率為20Hz,終止頻率為22kHz,中間頻率采用是對數(shù)方式增長。但是這些具體的頻率是多少呢,需要通過外部規(guī)則來設(shè)定。因此,需要打開"External Rules..."按鈕,做詳細(xì)設(shè)定。
在 External Sweep Setting窗口,包括起始條件(Start),中間讀數(shù)(Data)和終止條件(End)三個(gè)部分。分別包括了具體設(shè)定的數(shù)值,允許的讀數(shù)誤差。 在以下幾種情況下,才可能開始掃描(AP 2700系列產(chǎn)品用戶手冊第423頁)。
起始值設(shè)置:
1. 信號源的輸出在起始值+/-誤差范圍內(nèi);信號強(qiáng)度要超過設(shè)定的閾值;設(shè)定的讀數(shù)1-6都穩(wěn)定;信號源1的讀數(shù)穩(wěn)定超過1s。這幾個(gè)條件中,所有條件均必須滿足,才能開始掃描。
2. 信號源的輸出在起始值+/-誤差范圍或以上:信號強(qiáng)度要超過設(shè)定的閾值;設(shè)定的讀數(shù)1-6都穩(wěn)定;信號源1的讀數(shù)穩(wěn)定在誤差范圍內(nèi)或超出誤差范圍的時(shí)間超過1s。
3. 任意設(shè)定的讀數(shù)點(diǎn):源1的信號是不相關(guān)信號;信號強(qiáng)度要超過設(shè)定的閾值;設(shè)定的讀數(shù)1-6都穩(wěn)定。在此情況下收集的數(shù)據(jù)可能超出設(shè)定的起始值和終止值的范圍。
數(shù)據(jù)間隔問題:
1. 源1的讀數(shù)穩(wěn)定在前一讀數(shù)加數(shù)據(jù)間隔上;
2. 要采集的信號讀數(shù)必須大于或等于設(shè)定的讀數(shù)閾值;
3. 設(shè)定的讀數(shù)1-6都穩(wěn)定;
4. 信號源1的讀數(shù)穩(wěn)定在誤差范圍內(nèi)或超出誤差范圍的時(shí)間超過1s。
讀數(shù)閾值設(shè)定:此數(shù)值的設(shè)定主要是用來排除誤差干擾信號。對于低于設(shè)定值的信號不做處理。
終止條件設(shè)定:
終止值及誤差范圍:當(dāng)源1的測量讀數(shù)在此范圍時(shí),會自動停止掃描。
從以上信息中得知,對于用作掃描信號的信號波形,并不是連續(xù)光滑的掃頻曲線,而是基本上以1秒為單位的步長階梯,并且這些頻點(diǎn)是以對數(shù)頻率步進(jìn)。如果要掃描的范圍是22Hz-22000Hz,則起始范圍比1000,常用對數(shù)值為3。如果劃分為30個(gè)頻點(diǎn),每個(gè)頻點(diǎn)步長為常用對數(shù)0.1。如果劃分為120個(gè)頻點(diǎn),則步長為0.025。如果更進(jìn)一步,劃分到150個(gè)頻點(diǎn),則步長為0.02。每個(gè)頻點(diǎn)的最短時(shí)間為1s。假設(shè)其為1.1s,則需要掃描165s,外加10s的1kHz標(biāo)準(zhǔn)信號,則整個(gè)掃描過程最少需要175s才能完成。
在matlab上,可以用以下代碼實(shí)現(xiàn)。
%以下程序中生成正弦波并播放。
Fs = 192000;
% 采樣頻率
%寫10s 1kHz數(shù)據(jù)
T = 10;
% 時(shí)間長度
n = Fs*T;
% 采樣點(diǎn)數(shù)
f = 1000;
% 聲音頻率
nBitSize = 24;
%量化精度(位深度)
y = sin(2*pi*f*T*linspace(0,1,n+1));
%sound(y,Fs);
%播放音頻數(shù)據(jù)
nStartFreq =20;
%起始頻率
nEndFreq=22000;
%終止頻率
nSteps=160;
%共掃描160個(gè)數(shù)據(jù)點(diǎn)
nLastT=1.1;
%每個(gè)頻點(diǎn)延時(shí)1.1秒
nCount = Fs*nLastT;
nStepLog = log10(nEndFreq/nStartFreq)/nSteps;
%頻率增加的對數(shù)步距
for (nFreqLog =0:nSteps-1)
fFreq = nStartFreq*10^(nFreqLog*nStepLog)
%實(shí)際掃描頻點(diǎn)
y1=sin(2*pi*fFreq*nLastT*linspace(0,1,nCount+1));
%生成對應(yīng)頻率的正弦波數(shù)據(jù),頻率為計(jì)算的頻點(diǎn),時(shí)間1.1s
y=[y,y1];
%生成的數(shù)據(jù)與前面的波形數(shù)據(jù)合并
end
filename =
'd:\testfiles\Sweep_192K_24bit.wav'
;
audiowrite(filename, y, Fs, '
BitsPerSample
',nBitSize,'
Comment
',
'Sweep_192K_24bit'
);
%保存聲音文件。
info = audioinfo(filename);
info
%顯示音頻文件的主要信息
msgbox('
程序運(yùn)行結(jié)束。
');
程序運(yùn)行后的顯示結(jié)果如下(matlab 8.01 64位版本,運(yùn)行時(shí)間7s):
info =
Filename: 'D:\TestFiles\Sweep_192K_24bit.wav'
CompressionMethod: 'Uncompressed' <-----默認(rèn)的文件格式,未壓縮的PCM格式。
NumChannels: 1 <------未指定聲道數(shù),默認(rèn)為單聲道。
SampleRate: 192000
TotalSamples: 35712161
Duration: 186.0008 <-------音樂文件總時(shí)長,186s
Title: []
Comment: 'Sweep_192K_24bit' <---- 附加的信息。
Artist: []
BitsPerSample: 24
使用matlab的最大好處在于讀取和保存聲音文件非常方便。目前使用audioread, audiowrite 和 audioinfo函數(shù)替代了早期的wavread和wavwrite等函數(shù),把支持的音頻文件的格式擴(kuò)展到 WAV, OGG, FLAC,M4A,ALC等格式,全面支持24bit,32位,64位量化,以及各種采樣率的歸一化數(shù)據(jù),為音頻文件的處理提供了極大的靈活性。
使用 Audition 對該文件的頻譜做分析如下:
整體頻譜范圍在20-22kHz,前面一段10s 1KHz。
局部放大后,可以看到每個(gè)頻段的持續(xù)時(shí)間1S。在兩個(gè)不同頻點(diǎn)的連接處,可以看出頻譜很廣。
對波形數(shù)據(jù)做局部放大,可以看出,因?yàn)椴ㄐ螖?shù)據(jù)不連續(xù),導(dǎo)致其頻譜非常負(fù)載。
通過 matlab的強(qiáng)大運(yùn)算能力,可以對音頻數(shù)據(jù)的質(zhì)量做分析。以下的程序段用于將音頻數(shù)據(jù)文件讀到系統(tǒng)中,然后進(jìn)行FFT,獲取信號的頻譜。
%用fft方法分析 Wave波形文件的頻譜
%y 為音頻數(shù)據(jù)的存儲數(shù)組,F(xiàn)s為音頻數(shù)據(jù)的采樣率
%Pyy 用于保存音頻的歸一化幅度,Pyy_DB是轉(zhuǎn)換為dBV以后的數(shù)值。
%info用來獲取音頻文件的詳細(xì)信息,nBitSize是音頻文件的采樣率。
%nNormal 用于做歸一化使用的常數(shù),等于2^nBitSize。
%sigLength是音頻文件的總采樣個(gè)數(shù),halfLength是總采樣數(shù)的一半值。
%f是用于顯示頻率時(shí)的具體頻點(diǎn)值。
%##########################################################
clear;
%清理當(dāng)前內(nèi)存變量
clc;
%清理命令窗口
filename=
'D:\testfiles\1kHz_Sine_192kHz_24bit_2ch.wav'
;
[y,Fs]=audioread(filename);
%讀數(shù)據(jù)文件
info = audioinfo(filename);
%獲取音樂文件信息
nBitSize = info.BitsPerSample
;%獲取文件中采樣深度
nNormal = 2^nBitSize;
%做幅度歸一化時(shí)的最大值
y=y(:,1);
%僅使用雙聲道數(shù)據(jù)中的第一列(左聲道數(shù)據(jù))
sigLength = length(y);
%獲取數(shù)組長度
%Y1 = y.*hanning(sigLength); %使用Hanning窗變換?操作失敗,暫時(shí)去掉。
%完成FFT及獲取幅度值,以及幅度值的對數(shù)表示法(dBV)
Y=fft(y,sigLength);
%做標(biāo)準(zhǔn)FFT變換
Pyy = abs(Y)*2/sigLength/nNormal;
%求取變換結(jié)果的幅值部分,并做歸一化處理
Pyy_DB = 10*log10(Pyy);
%取常用對數(shù),變成dBV單位。
%以下處理畫圖部分
halflength = floor(sigLength/2);
%僅使用半長度做顯示
f=Fs*(0:halflength)/sigLength;
%生成索要用的頻點(diǎn)
semilogx(f,Pyy_DB(1:halflength+1));
%畫x軸對數(shù)曲線
title(
'1K-192kHz-24bit-2CH正弦波頻譜
');
%標(biāo)題
xlabel('
頻率(Hz)
');
%x軸標(biāo)記
ylabel(
'dBV
');
grid on;
%打開網(wǎng)格
msgbox(
'Done
');
%提示結(jié)束
實(shí)際運(yùn)行的結(jié)果如下:
直接用Audition 生成的192KHz,24bit采樣的正弦波,其頻譜如下:
對比 44.1kHz采樣率,16bit的1KHz Sine的MP3 頻譜如下,可以看出增加了很多高次諧波分量。
直接用Audition 生成的44.1kHz 16bit, 1KHz Sine 的頻譜,相對來說高頻分量較MP3好很多。
目前這個(gè)算法還有一點(diǎn)問題,就是計(jì)算出來的幅度值嚴(yán)重偏離正常的設(shè)定值,還需要做進(jìn)一步的修訂。
作者:
4656清水芙蓉
時(shí)間:
2016-4-7 09:24
51黑有你更精彩!
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
91.com视频
|
欧美在线观看一区
|
精品九九九
|
国产色片
|
一区二区三区四区在线播放
|
国产www.
|
国产精品伦一区二区三级视频
|
亚洲第一av
|
成人国产一区二区三区精品麻豆
|
蜜月aⅴ免费一区二区三区 99re在线视频
|
中文字幕av一区
|
狠狠影院
|
亚洲精品久久久
|
久久丁香
|
日韩精品在线一区
|
极品久久
|
亚洲自拍一区在线观看
|
97免费视频在线观看
|
亚洲免费视频播放
|
欧美精品一区二区三区四区
|
一级片aaa
|
亚洲欧美日本国产
|
亚洲第一女人av
|
亚洲国产一区二区三区四区
|
成人av一区
|
国产福利在线视频
|
丝袜美腿一区
|
国产一区二区久久
|
久久亚洲欧美日韩精品专区
|
日韩视频精品在线
|
我要看黄色录像一级片
|
久久国产精品久久久久久
|
日韩在线电影
|
中文字幕av亚洲精品一部二部
|
亚洲一区二区三区视频
|
亚洲精品一区二区三区四区高清
|
久久久久国产一级毛片高清网站
|
国产欧美视频一区二区三区
|
国产亚洲精品精品国产亚洲综合
|
91精品国产777在线观看
|
亚洲成人自拍
|