主要内容gydF4y2Ba

gammatoneFilterBankgydF4y2Ba

伽玛通滤波器组gydF4y2Ba

描述gydF4y2Ba

gammatoneFilterBankgydF4y2Ba通过在ERB标度上等距的一组- matone滤波器来分解信号。伽玛通滤波器组被设计用来模拟人类听觉系统。gydF4y2Ba

模拟人类听觉系统:gydF4y2Ba

  1. 创建gydF4y2BagammatoneFilterBankgydF4y2Ba对象并设置其属性。gydF4y2Ba

  2. 使用参数调用对象,就像调用函数一样。gydF4y2Ba

有关系统对象如何工作的详细信息,请参见gydF4y2Ba什么是系统对象?gydF4y2Ba

创建gydF4y2Ba

描述gydF4y2Ba

gammaFiltBankgydF4y2Ba= gammatoneFilterBankgydF4y2Ba返回一个伽玛通滤波器组。随着时间的推移,对象在每个输入通道中独立地过滤数据。gydF4y2Ba

gammaFiltBankgydF4y2Ba= gammatoneFilterBank(范围)gydF4y2Ba设置gydF4y2Ba范围gydF4y2Ba财产gydF4y2Ba范围gydF4y2Ba.gydF4y2Ba

gammaFiltBankgydF4y2BanumFilts = gammatoneFilterBank(范围)gydF4y2Ba设置gydF4y2BaNumFiltersgydF4y2Ba财产gydF4y2BanumFiltsgydF4y2Ba.gydF4y2Ba

gammaFiltBankgydF4y2Ba= gammatoneFilterBank(范围、numFilts fs)gydF4y2Ba设置gydF4y2BaSampleRategydF4y2Ba财产gydF4y2BafsgydF4y2Ba.gydF4y2Ba

gammaFiltBankgydF4y2Ba= gammatoneFilterBank (gydF4y2Ba___gydF4y2Ba,gydF4y2Ba名称,值gydF4y2Ba)gydF4y2Ba将每个属性名称设置为指定的值。未指定的属性有默认值。gydF4y2Ba

例子:gydF4y2BagammaFiltBank = gammatoneFilterBank([62.5,12e3],'SampleRate',24e3)gydF4y2Ba创建一个伽玛通滤波器组,gydF4y2BagammaFiltBankgydF4y2Ba,带通滤波器位于62.5 Hz至12 kHz之间。gydF4y2BagammaFiltBankgydF4y2Ba工作在24千赫的采样率。gydF4y2Ba

属性gydF4y2Ba

全部展开gydF4y2Ba

除非另有说明,属性为gydF4y2BanontunablegydF4y2Ba,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而gydF4y2Ba释放gydF4y2Ba功能解锁它们。gydF4y2Ba

如果属性为gydF4y2Ba可调gydF4y2Ba,您可以随时更改其值。gydF4y2Ba

有关更改属性值的详细信息,请参见gydF4y2Ba使用系统对象的MATLAB系统设计gydF4y2Ba.gydF4y2Ba

滤波器组的频率范围,以Hz为单位,指定为单调递增值的两元素行向量。gydF4y2Ba

可调:gydF4y2Ba没有gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Baint8gydF4y2Ba|gydF4y2Baint16gydF4y2Ba|gydF4y2Baint32gydF4y2Ba|gydF4y2Baint64gydF4y2Ba|gydF4y2Bauint8gydF4y2Ba|gydF4y2Bauint16gydF4y2Ba|gydF4y2Bauint32gydF4y2Ba|gydF4y2Bauint64gydF4y2Ba

筛选器组中的筛选器数量,指定为正整数标量。gydF4y2Ba

可调:gydF4y2Ba没有gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Baint8gydF4y2Ba|gydF4y2Baint16gydF4y2Ba|gydF4y2Baint32gydF4y2Ba|gydF4y2Baint64gydF4y2Ba|gydF4y2Bauint8gydF4y2Ba|gydF4y2Bauint16gydF4y2Ba|gydF4y2Bauint32gydF4y2Ba|gydF4y2Bauint64gydF4y2Ba

输入采样率(以Hz为单位),指定为正标量。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

使用gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

audioOutgydF4y2Ba= gammaFiltBank (gydF4y2BaaudioIngydF4y2Ba)gydF4y2Ba对输入应用伽玛通滤波器组并返回过滤后的输出。gydF4y2Ba

输入参数gydF4y2Ba

全部展开gydF4y2Ba

滤波器组的音频输入,指定为标量、向量或矩阵。如果指定为矩阵,列将被视为独立的音频通道。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

输出参数gydF4y2Ba

全部展开gydF4y2Ba

滤波器组的音频输出,以标量、矢量、矩阵或3-D数组的形式返回。的形状gydF4y2BaaudioOutgydF4y2Ba取决于形状gydF4y2BaaudioIngydF4y2Ba而且gydF4y2BaNumFiltersgydF4y2Ba.如果gydF4y2BaaudioIngydF4y2Ba是一个gydF4y2Ba米gydF4y2Ba——- - - - - -gydF4y2BaNgydF4y2Ba矩阵,然后gydF4y2BaaudioOutgydF4y2Ba返回为gydF4y2Ba米gydF4y2Ba——- - - - - -gydF4y2BaNumFiltersgydF4y2Ba——- - - - - -gydF4y2BaNgydF4y2Ba数组中。如果gydF4y2BaNgydF4y2Ba那么是1gydF4y2BaaudioOutgydF4y2Ba作为矩阵返回。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

对象的功能gydF4y2Ba

要使用对象函数,请指定System对象™作为第一个输入参数。例如,释放system对象的系统资源gydF4y2BaobjgydF4y2Ba,使用这种语法:gydF4y2Ba

发行版(obj)gydF4y2Ba

全部展开gydF4y2Ba

fvtoolgydF4y2Ba 可视化滤波器组gydF4y2Ba
freqzgydF4y2Ba 计算频率响应gydF4y2Ba
getCenterFrequenciesgydF4y2Ba 滤波器中心频率gydF4y2Ba
getBandwidthsgydF4y2Ba 获取过滤器带宽gydF4y2Ba
多项式系数gydF4y2Ba 获取滤波器系数gydF4y2Ba
信息gydF4y2Ba 获取筛选器信息gydF4y2Ba
一步gydF4y2Ba 运行gydF4y2Ba系统对象gydF4y2Ba算法gydF4y2Ba
释放gydF4y2Ba 释放资源并允许更改gydF4y2Ba系统对象gydF4y2Ba属性值和输入特征gydF4y2Ba
重置gydF4y2Ba 重置的内部状态gydF4y2Ba系统对象gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

为16千赫采样率创建一个默认的伽玛通滤波器组。gydF4y2Ba

Fs = 16e3;gammaFiltBank = gammatoneFilterBank(采样率=fs)gydF4y2Ba
gammaFiltBank = gammatoneFilterBank with properties: FrequencyRange: [50 8000] NumFilters: 32 SampleRate: 16000gydF4y2Ba

使用gydF4y2BafvtoolgydF4y2Ba为了可视化滤波器组的响应。gydF4y2Ba

fvtool (gammaFiltBank)gydF4y2Ba

通过滤波器组处理高斯白噪声。使用频谱分析仪查看滤波器输出的频谱。gydF4y2Ba

sa =光谱分析仪(SampleRate=16e3,gydF4y2Ba...gydF4y2BaPlotAsTwoSidedSpectrum = false,gydF4y2Ba...gydF4y2BaFrequencyScale =gydF4y2Ba“日志”gydF4y2Ba);gydF4y2Ba为gydF4y2BaI = 1:5000 x = randn(256,1);y = gammaFiltBank(x);sa (y);gydF4y2Ba结束gydF4y2Ba

这个例子说明了一种非最优但简单的分析和综合方法gydF4y2BagammatoneFilterBankgydF4y2Ba.gydF4y2Ba

读入音频文件并听其内容。gydF4y2Ba

[audioIn,fs] = audioread(gydF4y2Ba“Counting-16-44p1-mono-15secs.wav”gydF4y2Ba);声音(audioIn fs)gydF4y2Ba

创建默认值gydF4y2BagammatoneFilterBankgydF4y2Ba.滤波器组的默认频率范围为50 ~ 8000hz。超出这个范围的频率在重建信号中被衰减。gydF4y2Ba

gammaFiltBank = gammatoneFilterBank(gydF4y2Ba“SampleRate”gydF4y2Bafs)gydF4y2Ba
gammaFiltBank = gammatoneFilterBank with properties: FrequencyRange: [50 8000] NumFilters: 32 SampleRate: 44100gydF4y2Ba

将音频信号通过伽玛通滤波器组。输出为32个通道,其中通道的数量由gydF4y2BaNumFiltersgydF4y2Ba的属性gydF4y2BagammatoneFilterBankgydF4y2Ba.gydF4y2Ba

audioOut = gammaFiltBank(audioIn);[N,numChannels] = size(audioOut)gydF4y2Ba
N = 685056gydF4y2Ba
numChannels = 32gydF4y2Ba

为了重建原始信号,对信道进行求和。听结果。gydF4y2Ba

reconstructedSignal = sum(audioOut,2);声音(reconstructedSignal fs)gydF4y2Ba

伽玛通滤波器组为输出信道引入了各种群时延,导致重构效果不佳。要补偿组延迟,请从各个通道中删除开始延迟,并对通道的末端进行零填充。使用gydF4y2Ba信息gydF4y2Ba来得到组延迟。听群时延补偿重构。gydF4y2Ba

infoStruct = info(gammaFiltBank);groupDelay = round(infostruct . groupdelayed);gydF4y2Ba简单起见gydF4y2BaaudioPadded = [audioOut;zero (max(groupDelay),gammaFiltBank.NumFilters)];gydF4y2Ba为gydF4y2Bai = 1:gammaFiltBank。NumFiltersaudioOut(:,i) = audioPadded(groupDelay(i)+1:N+groupDelay(i),i);结束gydF4y2BareconstructedSignal = sum(audioOut,2);声音(reconstructedSignal fs)gydF4y2Ba

读入音频信号,并将其转换为单声道,便于可视化。gydF4y2Ba

[音频,fs] = audioread(gydF4y2Ba“waveguideloopone - 24 - 96立体声- 10 - secs.aif”gydF4y2Ba);音频= mean(音频,2);gydF4y2Ba

创建一个gydF4y2BagammatoneFilterBankgydF4y2Ba有64个滤波器,范围为62.5到20,000 Hz。让音频信号通过滤波器组。gydF4y2Ba

gammaFiltBank = gammatoneFilterBank(gydF4y2Ba“SampleRate”gydF4y2Bafs,gydF4y2Ba...gydF4y2Ba“NumFilters”gydF4y2Ba, 64,gydF4y2Ba...gydF4y2Ba“FrequencyRange”gydF4y2Ba, 62.5, 20 e3);audioOut = gammaFiltBank(音频);gydF4y2Ba

使用50 ms窗口和25 ms重叠计算每个波段的能量。使用gydF4y2Badsp。AsyncBuffergydF4y2Ba将信号划分为重叠的窗口,然后记录每个通道每个窗口的均方根值。gydF4y2Ba

samplesPerFrame = round(0.05*fs);samplesOverlap = round(0.025*fs);buff = dsp.AsyncBuffer(数字(音频));写(浅黄色,audioOut。^ 2);sink = dsp.AsyncBuffer(数字(音频));gydF4y2Ba而gydF4y2Ba迷。NumUnreadSamples > 0 currentFrame = read(buff,samplesPerFrame,samplesOverlap); write(sink,mean(currentFrame,1));结束gydF4y2Ba

将能量值转换为dB。画出每个波段随时间变化的能量。gydF4y2Ba

gammatoneSpec = read(sink);D = 20*log10(gammatoneSpec');timeVector = ((samplesPerFrame-samplesOverlap)/fs)*(0:size(D,2)-1);cf = getCenterFrequencies(gammaFiltBank)./1e3;冲浪(timeVector, cf, D,gydF4y2Ba“EdgeColor”gydF4y2Ba,gydF4y2Ba“没有”gydF4y2Ba) ([timeVector(1) timeVector(end) cf(1) cf(end)]) view([0 90]) caxis([-150,-60]) colorbar xlabel(gydF4y2Ba“时间(s)”gydF4y2Ba) ylabel (gydF4y2Ba的频率(赫兹)gydF4y2Ba)gydF4y2Ba

图中包含一个轴对象。axis对象包含一个surface类型的对象。gydF4y2Ba

算法gydF4y2Ba

全部展开gydF4y2Ba

伽玛通滤波器组通常用作耳蜗模拟的前端,它将复杂的声音转换为多通道活动模式,就像在听觉神经中观察到的那样。gydF4y2Ba[2]gydF4y2Ba的gydF4y2BagammatoneFilterBankgydF4y2Ba中描述的算法gydF4y2Ba[1]gydF4y2Ba.该算法是本文中提出的思想的实现gydF4y2Ba[2]gydF4y2Ba.伽玛通滤波器组的设计可分为两部分:滤波器形状(伽玛通)和频率尺度。等效矩形带宽(ERB)尺度定义了伽玛通滤波器的相对间距和带宽。ERB量表的推导也提供了听觉过滤反应的估计值,这与伽玛通滤波器非常相似。gydF4y2Ba

参考文献gydF4y2Ba

斯兰尼,马尔科姆。“帕特森-霍尔兹沃斯听觉滤波器库的有效实现”苹果电脑技术报告35,1993。gydF4y2Ba

[2]帕特森,R. D., K.罗宾逊,J.霍尔兹沃斯,D.麦基翁,C.张,M.阿勒汉德。“复杂的声音和听觉图像。”gydF4y2Ba听觉生理与知觉gydF4y2Ba.1992,第429-446页。gydF4y2Ba

[3]艾尔森,a.m.h.j., p.i.m.约翰尼斯玛。“草蛙听觉神经元的频谱接受场。”gydF4y2Ba生物控制论gydF4y2Ba.第38卷,1980年第4期,第223-234页。gydF4y2Ba

[4]格莱斯伯格,布莱恩·R·和布莱恩·c·j·摩尔。从缺口噪声数据中推导听觉滤波器形状gydF4y2Ba听力的研究gydF4y2Ba.卷,47岁。1990年第1-2期,第103 -138页。gydF4y2Ba

扩展功能gydF4y2Ba

版本历史gydF4y2Ba

在R2019a中引入gydF4y2Ba

另请参阅gydF4y2Ba

|gydF4y2Ba

Baidu
map