gpt4 book ai didi

c - 重新采样声音样本,我使用什么过滤器?

转载 作者:太空狗 更新时间:2023-10-29 17:27:24 28 4
gpt4 key购买 nike

我正在尝试将信号(声音样本)从一种采样率重新采样到更高的采样率。不幸的是,它需要某种过滤器,因为似乎会出现一些“混叠”,而且我对过滤器不熟悉。这是我想出的:

int i, j, a, b, z;

a = 44100;
b = 8363;

// upsample by a
for(i = z = 0; i < samplen; i++)
for(j = 0; j < a; j++)
cbuf[z++] = sampdata[i];

// some filter goes here???

// downsample by b
for(j = i = 0; i < z; i += b)
buf[j++] = cbuf[i];

新样本与原始样本非常相似,但有一些噪音。您能否告诉我需要添加什么过滤器,最好是一些与该过滤器相关的代码?

原声:http://www.mediafire.com/?9gnga1in52d6t4x重新采样的声音:http://www.mediafire.com/?x34h7ggk8n9k8z1

最佳答案

除非两个采样率(源和目标)都远高于数据中的最高频率,否则不要使用线性插值。这是一个非常差的低通滤波器。

您想要的是一个内插低通滤波器,其阻带起始于您正在处理的两个采样率中较低采样率的一半以下。实现这一点的常见方法是使用 IIR 滤波器进行上采样/下采样,以及使用多相 FIR 滤波器。如果您不需要实时性能并且不想上采样/下采样,则窗口 Sinc 插值器也适用于此。这是一个 Windowed Sinc interpolating low-pass filter in Basic ,转换成 C 应该很简单。

如果你想使用 IIR 过滤,这里是规范的 Cookbook for biquad IIR filters .

如果你想要音频重采样理论的最佳解释,这里是 Stanford CCRMA's Resampling page .

关于c - 重新采样声音样本,我使用什么过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4393545/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com