主要内容

多级采样率转换的音频信号

这个例子展示了如何使用一个多级/多重速率的采样率之间的转换方法不同的音频采样率。

本例使用dsp.SampleRateConverter。这个组件自动确定使用多少阶段和每个阶段所需的滤波器设计为了执行采样率转换效率计算的方式。

这个例子着重于转换的音频信号采样96千赫(DVD质量)音频信号采样44.1千赫(CD)质量。

设置

定义一些参数在整个使用的例子。

frameSize = 64;正= 96年e3;

生成96 kHz信号

产生线性调频信号使用dsp.Chirp如下:

源= dsp.Chirp (InitialFrequency = 0, TargetFrequency = 48 e3,SweepTime = 8, TargetTime = 8, SampleRate =正,SamplesPerFrame = frameSize类型=“二次”);

创建频谱分析仪

创建两个频谱分析仪。这些将用于可视化原始信号的频率内容以及信号转换为44.1 kHz。

SpectrumAnalyzer44p1 =简介(SampleRate = 44100,方法=“韦尔奇”,AveragingMethod =“指数”,ForgettingFactor = 1 e -,ViewType =“spectrum-and-spectrogram”,TimeSpanSource =“财产”时间间隔= 8,窗口=“皇帝”SidelobeAttenuation = 220,YLimits =(-250年,50),ColorLimits = (-150, 20),PlotAsTwoSidedSpectrum = false);SpectrumAnalyzer96 =简介(SampleRate = 96000,方法=“韦尔奇”,AveragingMethod =“指数”,ForgettingFactor = 1 e -,ViewType =“spectrum-and-spectrogram”,TimeSpanSource =“财产”时间间隔= 8,窗口=“皇帝”SidelobeAttenuation = 220,YLimits =(-250年,50),ColorLimits = (-150, 20),PlotAsTwoSidedSpectrum = false);

原始信号的频谱在96千赫采样

下面的循环图的谱图和功率谱原始96 kHz信号。线性调频信号从0开始,扫到48 kHz的模拟时间8秒。

NFrames = 8 *正/ frameSize;k = 1: NFrames sig96 =源();%的来源SpectrumAnalyzer96 (sig96);%光谱图结束发布(源)发布(SpectrumAnalyzer96)

设置采样率转换器

为了转换信号,dsp.SampleRateConverter使用。第一次尝试设置带宽40 kHz,感兴趣的也就是覆盖范围(-20 kHz, 20 kHz)。这通常是接受范围是人类的声音。滤波器的阻带衰减用于去除光谱副本和别名副本是在80分贝的默认值。

BW40 = 40 e3;OutFs = 44.1 e3;= BW40 SRC40kHz80dB = dsp.SampleRateConverter(带宽,InputSampleRate = inf, OutputSampleRate = OutFs);

参与转换的分析过滤器

使用信息获得信息的过滤器是用来执行转换。这表明,转换将在两个步骤进行。第一步是由两个过滤大量毁灭,将信号从96千赫至48 kHz。第二步涉及冷杉率转换器在160年到147年二者并致。这导致所需的44.1 kHz。的freqz命令可用于可视化结合频率响应的两个阶段。放大显示指定的通频带扩展到20 kHz,通带波纹在milli-dB范围(少于0.003 dB)。

信息(SRC40kHz80dB) [H80dB f] = freqz (SRC40kHz80dB 0:10:25e3);情节(20 * log10 (abs (H80dB) /规范(H80dB正)))包含(“频率(赫兹)”)ylabel (“(dB)级”)轴([0 25 e3 -140 5])
ans = '整体插值系数:147整体力量的因素:320数量的过滤器:2次乘法/输入样本:42.334375的系数:8618过滤器:过滤器1:dsp。FIRDecimator——大量毁灭因素:2过滤器2:dsp。FIRRateConverter -插值因素:147 -大量毁灭因素:160

异步缓冲

从96 kHz的采样率转换至44.1千赫生产147每320个样本输入样本。因为帧的线性调频信号产生64样本,异步缓冲区是必要的。线性调频信号是写64个样本,只要有足够的样品缓冲,320人阅读和采样率转换器。

浅黄色= dsp.AsyncBuffer;

主要处理循环

下面的循环执行采样率转换以流媒体的方式。实时计算操作足够快的如果需要的话。

转换后的信号的谱图和功率谱是策划。额外的线光谱图对应光谱别名/过滤后剩余的图像。减毒的复制品比80分贝与功率谱图可以验证。

srcFrameSize = 320;k = 1: NFrames sig96 =源();%产生啁啾写(浅黄色,sig96);%缓冲数据如果迷。NumUnreadSamples > = srcFrameSize sig96buffered =阅读(浅黄色,srcFrameSize);sig44p1 = SRC40kHz80dB (sig96buffered);%转换采样率SpectrumAnalyzer44p1 (sig44p1);%视图转换信号的频谱结束结束释放(源)发布(SpectrumAnalyzer44p1)发布(浅黄色)

一个更精确的采样率转换器

为了提高采样率转换器质量,两个变化。首先,从40千赫带宽可以扩展到43.5 kHz。这反过来需要过滤器与一个尖锐的过渡。第二,阻带衰减可以从80分贝增加到160分贝。这两种变化都牺牲更多的滤波器系数,以及更多的乘法输入样本。

BW43p5 = 43.5 e3;= BW43p5 SRC43p5kHz160dB = dsp.SampleRateConverter(带宽,InputSampleRate = inf, OutputSampleRate = OutFs,StopbandAttenuation = 160);

参与转换的分析过滤器

前面的采样率转换器8618滤波器系数和计算成本42.3乘法/输入样本。通过增加带宽和阻带衰减,成本大幅增加到123896滤波器系数和440.34乘法/输入样本。频率响应揭示更为严重滤波器过渡以及更大的阻带衰减。此外,通带波纹现在micro-dB规模。注意:这个实现需要很长的过滤器的设计需要几分钟才能完成。然而,这是一次成本发生的离线(实际采样率转换前)。

信息(SRC43p5kHz160dB) [H160dB f] = freqz (SRC43p5kHz160dB 0:10:25e3);情节(20 * log10 (abs (H160dB) /规范(H160dB正)));包含(“频率(赫兹)”)ylabel (“(dB)级”)轴([0 25 e3 -250 5])
ans = '整体插值系数:147整体力量的因素:320数量的过滤器:2次乘法/输入样本:440.340625的系数:123896过滤器:过滤器1:dsp。FIRDecimator——大量毁灭因素:2过滤器2:dsp。FIRRateConverter -插值因素:147 -大量毁灭因素:160

主要处理循环

更精确的处理重复采样率转换器。

再一次转换信号的谱图和功率谱是策划。注意,成像/混叠减毒足够的光谱图,他们是不可见的。功率谱显示光谱别名减超过160分贝(峰值约为20 dB)。

k = 1: NFrames sig96 =源();%产生啁啾在=写(浅黄色,sig96);%缓冲数据如果迷。NumUnreadSamples > = srcFrameSize [sig96buffered,] =阅读(浅黄色,srcFrameSize);sig44p1 = SRC43p5kHz160dB (sig96buffered);%转换采样率SpectrumAnalyzer44p1 (sig44p1);%视图转换信号的频谱结束结束释放(源)发布(SpectrumAnalyzer44p1)发布(浅黄色)