|
了解声卡信号的处理流程吗?把流程图简化一下其实还是很好理解的。我们看看最常见的AC'97声卡是怎样的工作流程。USB声卡和某些非AC'97声卡的流程会有所不同,我们在另外的文章中介绍。
, _2 o0 E9 |" |1、模拟输出和数字输出' w2 N* z j% i! S; L. q- [
8 N4 K. N& }% D* x$ h$ F
; Z0 l, }/ ~, I3 M- e* I: K0 L9 x模拟输出是我们使用得最多的输出方式,因为相对数字输出要方便很多。系统通过PCI传送数据到AC'97数字控制器,然后通过AC-Link输出数字信号到AC'97 CODEC进行数字信号到模拟的转换然后通过声卡上的模拟输出插座输出。数字的则更简单。
4 P) e2 c7 x* x7 k. ^& D# J- ]; `
. t" h& t0 o8 P/ B! |/ [% G
, y& D& t- |4 p, h
相对模拟输出方式,数字输出少了一个数字信号到模拟的转换过程,直接由声卡的光纤或者同轴输出端子和外置DAC通讯,数字模拟信号的转换过程交给了外置组件。& p2 y# b* F# i9 W
某些声卡,例如创新公司的Audigy2,使用了卡载的DAC芯片,是不是流程就不一样呢,其实是一样的,DAC和CODEC在这个工作流程的工作是完全一样的,不同的是AC'97数字控制器使用I2S和DAC通讯,而不是AC-Link。) k: _" s9 O- C( G+ D5 U
在前面的文章中,我们介绍了音频加速器和I/O控制器,在AC'97的白皮书中,这2种芯片被通通成为AC'97数字控制器。2 |, |3 K6 T8 I; h
1 u- ~. N' s- B5 o4 g3 c$ |2、模拟输入, q7 ?+ m! ?: b% C" f, q" ~
; J, K! _& Q, Y; Y' ]5 @
5 ^, m: @+ q1 i& S4 Z$ c+ { 插上麦克风录歌就是一种单纯的模拟信号输入的过程。在这个过程中,CODEC和在输出的任务不一样,而是完全相反的,麦克风只能提供模拟信号,要被AC'97控制器接受必须经过模拟信号到数字信号的转换,这个转换过程被称为ADC(注:ADC在用于硬件名称时,是指的模拟数字信号转换器),数字控制器接受信号通过PCI和操作系统通讯。
; {( Z# C- K4 t$ U
$ [3 U' Y" Y0 ^- d( W% e+ ?# i3、CD模拟方式
& l& w# T7 J, W2 {* i6 O+ K0 ]4 e2 C F9 v3 f+ c6 H
+ W! [# x; w0 l- a2 l
CD模拟方式也是一种模拟输入方式,但是显得很特别,我们在流程图中看到经过了CODEC,你可能会猜想,Codec接受模拟信号后先ADC后再DAC输 出,其实错了,在这个流程中,Codec仅仅起到了一个界面的作用,并不直接操作转换过程,由于经过了Codec,我们也可以通过软件的音量调节来控制音 量大小。CD模拟方式的音质好坏和声卡的Codec关系很小,和光驱自带的DAC关系很大。其实还有几个常见例子的工作流程和CD模拟方式是一样的,例如 通过Aux in连接电视卡,流程和上面的流程图完全一样。如果你有2台光驱都需要模拟输入,而声卡只有一个CD in插座,可以尝试把第二个光驱接在Aux in的插座上。
$ `; @2 j7 f! v+ ]1 Q( \1 n! @, W: V+ v2 Y
4、数字输入方式, k n1 ?( D0 r6 K$ N1 V+ |8 Q
9 b4 C2 a7 r$ E- r* n" h- @! t9 d
/ U+ G0 d7 d7 ~& R# Z6 }5 v$ w" u" c 数字输入方式最常见的就是CD S/PDIF in方式播放CD的操作,此时的光驱仅仅提供数字信号输出,声卡通过一个2PIN的插座接受数字信号后,通过S/PDIF将数字信号传输到CODEC进行DAC过程,然后输出。CD S/PDIF in方式播放CD的音质和声卡上的Codec的品质有着重要关系。; A" q$ t/ K! i
/ P, ]9 x1 Z0 U+ p' n' Y3 y5、回路方式
) B* G S; v9 x9 s0 l; z
0 w5 `. X$ f8 I0 K5 Q8 z; W3 L
- Q8 {" T+ d' H4 c. H
' F, O7 |5 G+ h+ n' N: t
使用一根双3.5mm头的线材将声卡的模拟输出和模拟输入(Line in)连接起来的方式被成为回路,主要用于测试声卡的一些指标,可以看成是模拟输出加模拟输入的流程集合,这种方式不具备实用价值,除了测试之外没有人会 这么用。这种流程太长,双3.5mm头的线材的质量会严重影响测试结果,其实很难测试到声卡的真实表现。9 K. ?4 t4 |* S. j7 y
' j9 v6 D* L0 U7 z. t1 j. M- Z
6、内录
. ~9 _; W, A. @+ Y/ |& `' A9 g' [7 H, u
$ ^5 F+ o% ^2 t8 l5 o6 q$ z
捕捉当前播放的数字信号的过程通常被成为内录,内录常常使用于测试,用于检测声卡的数字信号质量相当好用。在日常应用中,也可能用到内录,例如你录制实时播放的数字电台节目,就需要用到内录。- E, |( `8 \4 ?, u
, i% u6 Q# [( L再说说SRC. @+ K% ?4 w1 @
. o- N9 P2 Y) m3 b, |7 t4 g
在AC'97声卡的输出流程中,有个可怕的SRC,我们在前面说起过这个SRC,这个SRC问题很难应付,SRC究竟讨厌在哪里呢?我们先温习一下基本概念。) ~. A2 W8 J( N, ~* r
声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线。波是无限光滑的,弦线其实由无数点组成,由于存储空间是相对有限的,数字编码过程中,必须对弦线的点进行采样。采样的过程就是抽取某点的频率值,很显然,在一秒中内抽取得点越多,获取得频率信息更丰富,为了复原波形,一次振动中,必须有2个点的采样,人耳能够感觉到的最高频率为20kHz, 因此要满足人耳的听觉要求,则需要至少每秒进行40k次采样,用40kHz表达,这个40kHz就是采样率。我们常见的CD,采样率为44.1kHz。光 有频率信息是不够的,我们还必须获得该频率的能量值并量化,用于表示信号强度。量化值为2的整数次幂,我们常见的CD位16bit的采样大小,即2的16 次方。5 ]# F. ]2 }+ s4 P) B2 D* f7 V7 _
: j. d/ u+ j! C, ^. D8 [! R
4 J5 {8 ^/ v4 X* u4 G
" m2 }6 n) U6 w4 x+ ] 上图中A线条表示原始信号,而线条B和C表示不同采样率和采样大小的数字信号。采样率和采样大小的值越大,记录的波形更接近原始信号。4 T' d8 A$ ^% S w2 E
SRC的作用就是改变信号的采样率,低采样率往高采样率转换时就是一个重采样的过程,重采样对象不再是原始信号,而是这个低采样率的信号,因为采样率不够需要插入更多的采样点以达到需要的采样率和采样大小,在信号频率较低的时候,重采样算法的好坏并不会影响到什么,因为波长长,采样点多,但是高频就很难对付了,因为波长短,采样点少,44.1kHz的采样率情况下,一个20kHz的波仅仅有3个不到的采样点,转换到更高频率的时候势必插入更多的点,要尽量保持原貌,这个点该怎么插,这是一个非常有难度的算法,我们举一个例子帮助大家了解SRC。8 k6 w8 s, ?$ h6 G K" @' m
' y( R" h6 h8 i6 V+ C
: j" ]4 n9 @! \ g: r4 X
! B- q2 d6 e2 z6 n- j2 v% l' e6 b! S
我们假设三角形是一秒时间长度的一个波,采样率为3Hz,现在我们需要将采样率SRC到4Hz,我们唯一能作的就是时间轴(水平向)等分出4个点,取这个点垂直线和三角形边交汇处的值,这个过程就是重采样,结果变成了一个梯形。在波形图中,垂直的轴对应波的能量值,这意味着波的信号强度变弱了,出现了衰减。这个例子可以说明非整数倍的频率转换将改变波形,改变是不可避免的,算法好可以尽量保证转化后的波形和转换前的相似,但好的算法非常少,现有的大部分声卡SRC算法都是很糟糕的,正如上面这个例子一样,高频衰减就是因为SRC导致的,SRC还会导致一些其他问题,例如互调失真加剧等。(注:为了图解方便,图形的使用并不规范,三角形和梯形不能表示一个完整的波) |
|