
加拿大温哥华
自从 1978 年毕业于不列颠哥伦比亚大学以来,我几乎从不离开电脑。从 2005 年开始,我成为了一名全职 Linux 用户;从 1986 年到 2005 年,我是一名全职 Solaris 和 SunOS 用户;在此之前,我是一名 UNIX System V 用户。
在技术方面,我的职业生涯大部分时间都在担任顾问,从事数据分析和可视化工作,特别是空间数据分析。我拥有大量的相关编程经验,使用 C、awk、Java、Python、PostgreSQL、PostGIS,最近还使用 Groovy。我对 Julia 非常感兴趣。我还构建了一些桌面和 Web 应用程序,主要使用 Java,最近使用 Grails,前端使用了大量的 JavaScript,数据库首选 PostgreSQL。
除此之外,我花费大量时间撰写提案、技术报告,当然还有在 https://www.opensource.com 上的文章。
撰写评论
感谢您的评论。我实际上已经读过那篇文章,这并不让我感到惊讶。文章没有提到的是,当音乐以更高的分辨率录制时,转换为较低分辨率是一个不必要且破坏信息的步骤。我更喜欢原始版本,并且我更喜欢购买设计用于处理更高分辨率内容的设备。
很容易判断您的音乐是否是从较低分辨率的源进行升频采样的 - 频谱图会显示出来。在这种情况下,我认为应该要求退款。
CFWhitman,感谢您的评论。
数字滤波器,即使是像 FIR 滤波器这样优秀的滤波器,也只能在信号数字化后应用。
并且包含高于离散率 1/2 内容的信号将会出现混叠。因此,需要在离散化之前应用模拟滤波器,以消除(或至少大幅减少)高于奈奎斯特频率的模拟内容。
具体来说,如果您的模拟信号包含高于 20kHz 的能量(例如镲片产生的声音),您必须在以 44.1kHz 等频率将其转换为数字信号之前,应用模拟滤波器来减少或消除该能量。您不能为此使用 FIR 滤波器,因为 FIR 滤波器是数字的。
恕我直言,您对 44.1kHz 到 48kHz 转换的理解是错误的。唯一已知的值是在采样点。任何尝试确定中间值(采样点之间)的行为都是插值,而这正是您将信号从一个采样率转换为更高采样率时需要做的。
考虑一下:使用 44.1kHz 采样,每 0.0000226757... 秒采集一个样本。也就是说,我们在以下时间点采集样本:
1/44100 = 0.00002267573696145124 秒
2/44100 = 0.00004535147392290249 秒
3/44100 = 0.00006802721088435374 秒
4/44100 = 0.00009070294784580498 秒
5/44100 = 0.00011337868480725623 秒
等等。
为了提供 48kHz 信号,我们需要在以下时间点提供信号
1/48000 = 0.00002083333333333333
2/48000 = 0.00004166666666666666
3/48000 = 0.00006250000000000000
4/48000 = 0.00008333333333333333
5/48000 = 0.00010416666666666666
生成这些值的唯一方法是在 44.1kHz 样本之间进行插值。例如,我们可以使用线性插值。在这种情况下,2/48000 “采样”点的值将是
S(2/48000) = (2/48000 - 1/44100) * (S(2/44100) - S(1/44100)) / (2/44100 - 1/44100)
其中 S(2/44100) 表示在 t = 2/44100 时采集的采样信号,S(1/44100) 表示在 t = 1/44100 时采集的采样信号。
当然,也可以使用其他插值方案。