音频 频道

失真什么的最讨厌了 如何减少音频失真

  【IT168 应用技巧】大家周末好~kk又出现了。前两次kk和大家讨论的都是无损音乐相关的话题,希望大家可以从kk的胡言乱语中得到一点帮助。今天我们要来讨论一下音乐的播放问题,不过今天kk不介绍哪种播放器好、那种播放器功能多,每个人都有自己的听音习惯,无论是winamp、foobar甚至是千千静听,只要设置得当都是不错的播放器。(如果你还在用windows media player之类的播放器听歌,那kk也只能说:对自己的耳朵好一点。)

  也许有些朋友会说:我的音箱只要100块,或者声卡是板载的。但是这都不是本文的重点,本文的重点是要让大家了解电脑中播放的音乐在从声卡里出来之前有可能会遇到那些状况、那些失真、如何让失真减到最小。

  非整数倍重采样失真

  首先,kk要先介绍一个概念,就是“非整数倍重采样失真”。关于采样频率的概念,请看kk写的第一篇文章:http://www.hexieshe.com/Jimmy/626843.Html

  比如cd的采样频率是44.1kHz,将44.1kHz重新采样到48kHz,或者48kHz到44.1kHz时,这就是非整数倍重采样;而48kHz到96kHz甚至到192kHz,都是整数倍重采样。非整数倍采样造成的后果是波形失真,特别是比较糟糕的重采样算法,造成的失真非常明显,比如原始的44.1kHz的正弦波,重采样到48kHz后会出现锯齿。(kk手头没有好的示波器,所以只好无图有真相了)总之“非整数倍重采样”是数字音频中非常忌讳的一种重采样方式。

  那么“非整数倍重采样失真”和我们有关系吗?kk很遗憾的告诉各位,非常有关系,而且如果各位用的不是专业级别的声卡,那么听音乐时候的“非整数倍重采样失真”是不可避免的。

  在windows vista 之前的windows系统里,所有通过direct sound或者waveout播放的声音都会经过一个叫kernel mixer的东西,出于同步的考量,微软会把所有的声音重新采样到24kHz的整数倍,如果你播放的是44.1kHz的纯音乐,那么就发生了“非整数倍重采样”。

  说到这里,也许很多朋友会说,只要绕过kernel mixer就行了。的确,将播放器的输出设备换成kernel stream或者asio的话,就可以绕过kernel mixer,这样就避免了内核级别的重采样。(这里需要澄清一下,ASIO DirectX Full Duplex 仍然会通过kernel mixer,而且延迟超高,这玩意儿只是模拟asio而已,目的是为了让一些专业软件在没有专业声卡的情况下工作。)


流程图

  即使绕过了kernel mixer,声音在被进入声卡时仍然会被重采样到24kHz的整数倍,这是因为普通的民用声卡只有一颗晶振,而且只支持24kHz的整数倍频率。

  看到这里各位是不是对这个无法避免非整数倍重采样的世界绝望了呢?别灰心,既然无法避免那就想办法将失真减到最小。声卡的重采样算法不是很靠谱(kernel mixer可以绕过,这里就无视了)那就干脆用相对专业的重采样算法预先在播放的时候把44.1kHz的音频信号转成48kHz。这个工作一般就交给播放器的DSP插件来完成。

  以foobar为例,选择file—>preference—>dsp manager,找到里面的resampler(重采样器),双击激活后按configure selected调出设置界面,选择48000Hz,至于边上的Ultra mode,也许是更高级算法模式,会消耗更多的cpu资源,请酌情使用。设置完毕,按ok即可。


DSP


resampler

  如此设置之后,foobar播放音乐时会第一时间使用这个dsp插件将音频重采样至48kHz,之后音频就不会再被流程中的其他部分重采样了。(这样做的目的仅仅是为了确保音频可控、可见地被重采样,而不是在内核或者声卡部分被不知道什么算法重新采样。)

  像winamp,甚至千千静听都支持dsp插件,相信也可以找到类似的重采样插件。

  关于上次文章里的一些问题的解答:

  A:用foobar合并分轨并生成cue需要那么麻烦吗??

  Q:不用那么麻烦,kk在上次文章里犯了一个很蠢的错误,其实在foobar合并整轨这一步,应该选择generate multi-track files而不是merge all tracks into one output file, 这样对于wav会自动生成外挂cue,而不必再save as cuesheet了。


合并分轨勘误

  A:foobar如何diy?

  Q:很麻烦,真的很麻烦,上次提供的kk自用foobar是5年前kk自己弄的,一直用到现在。脚本的语法根本就忘记了,要再去翻英文文档还不如让kk去死吧…这里kk只给两张截图,动手能力强的朋友可以自己尝试diy一下。


foobar 设置


foobar专辑封面路径定义脚本

  Foobar里几乎所有的颜色,路径,显示等设置都牵涉到这种脚本语言,想自己动手的话先掂量一下。

  补充信息:

  1. 有一个国产的音频播放器kk一直很关注,叫做airplay,cnbeta的常客应该知道的。这个小东西非常小巧,只有几百K,界面很漂亮,功能也挺全,唯一的问题是目前只支持direct sound输出,不过下一个测试版会添加诸如ks、asio和wasaip的支持。(Jimmy就是用这款的音频播放器的)

  官方网站:http://www.podez.com/

  有兴趣的朋友可以关注一下。

  2. 有随身听的朋友(特别是老款的iPod)不妨到http://www.rockbox.org/看一下,看看这个开源的随身听操作系统是否支持你的随身听。此物超强大,功能全,支持几乎所有的常见音频格式,并且开源免费。

  官方网站:http://www.rockbox.org/

  3. 用mac朋友可以看看http://www.xiph.org/quicktime/,可以让itunes支持一些常见的无损格式。

  官方网站:http://www.xiph.org/quicktime/

  好了,kk今天的疯言疯语就到这里了,音频技术相关内容kk暂时想不出还有啥可以写的,如果各位有什么问题可以通过kua4ke4@gmail.com和kk讨论。下次投稿可能会是ACG音乐评论或者推荐之类的文章。(音乐这东西太主观了,所以这类文章参考价值比较低,所以kk一直不愿意写。如果写的话,kk会努力从与众不同的角度来写。)

0
相关文章