|
很多人在选择独立/外置声卡的时候,都会听说过asio,那么为什么要选择带asio的声卡呢?
5 t& U2 q* v8 ]. A1 {" G# N# f, l2 x9 c) J1 L. s
- @; W _- {+ a( ?! X g# K
, h5 h! z; @) x. s/ A( d! l一.延时是如何产生的?
; C3 @: N" u8 R. M, h
6 _6 u F, U* K4 `5 ~! F* I- @! }, D/ j( o
% A3 i3 X j0 X* M3 d$ @
不管你有多么讨厌延时,只要你需要用到电脑来处理你的音频,那么就一定会存在延迟,这是你消灭不掉的,只不过你可以通过一些手段来降低它,以达到一个你所能接受的范围。但在这之前,我们有必要来看一下延时究竟是如何产生的:
* D2 u& Y/ ], C+ C n, x4 G: i5 R9 D. ]+ e
. g) ^( o" l# S3 b% _4 r
/ G% \5 L/ a+ n$ T, K0 `01 模拟信号到数字信号的转换 I9 n+ f+ O3 Q3 }6 m
+ @% U$ j5 l( [+ H
8 v# a' Y$ Q' g: l- ~7 b
4 `& l+ ]1 {) q4 C7 L0 x, T
- E, z- Y* K6 v ^( u. q
5 _ g; d0 Q5 K/ R, h现如今,没有人能绕开数字音频,你的电脑之所以能处理、存储你动人的歌声,是因为声卡(Audio Interface)将模拟信号转换成了数字信号。7 c7 w }9 B1 e1 r0 U, L4 h
6 B( Z) j0 `% T& M# U4 k5 v1 J J1 v
# U1 m3 M7 h _# i* x' r0 [3 n M) B7 n# P2 k, ~$ @, @4 d
声卡将模拟信号转换成数字信号是需要时间的,这就产生了一处延时,只是这一个延迟相比后面来说很小,我们不需要过于纠结。
' Z$ E' }" s6 s+ o- m' g6 ]5 h1 J" i! x3 ~7 W+ g6 X
# ^/ v: S: U. I" _ k# \/ I5 z
02 声卡驱动/ a2 `& v! F$ c8 C
% a% m- _# f. M: ?( D
1 u9 e8 Y' U0 K3 V9 }) l$ t
7 J9 F4 c3 a5 R, x# |2 {! `但接下来的这个环节所产生的延迟有时候会大到离谱,不能忽略,这个环节就是声卡驱动(Audio Drivers)所产生的延迟。
% \/ c8 Y& k5 e, @5 }
4 g5 u6 {, x& v$ Y7 l6 J+ {$ C o7 U2 Z
# B3 q+ G+ S5 T- P% j% Q; L: @
如果你是Windows用户的话,那么你对ASIO(Audio Stream Input/Output)这个名词一定不陌生,事实上有相当多一部分的人之所以买人生中的一块外置声卡,就是因为主板上集成的声卡不支持基于ASIO协议的声卡驱动,只能使用默认的MME或者Direct X这样的驱动。. d: a/ n n# _; t- k( D& H
" y z- x9 \; a
1 W! Q1 D' `/ V! A2 y4 ~
+ V- b' H6 T* p8 T, } r3 a* h0 d. D
MME跟Direct X所带来的延时实在是太高了,动不动就上千毫秒的延时,可以说是完全不可用的。
/ J3 A' {$ a1 k; X9 V5 l6 O$ S ~$ k) _4 l% J% S2 {
" k- D$ _4 |: Y
9 L- s/ i( [# o0 C6 o0 l而ASIO则可以极大地降低延迟,所以说如果你要用Windows做音乐的话,一个支持ASIO的声卡是必不可少的。实在没有办法你也应该下载一个ASIO4ALL驱动。' c2 o. b% O+ ?
: `: d, k! l9 d* H2 e
3 C6 o& A6 R# R# d$ \
) N+ I3 `0 Y/ W- c0 W2 U
: B) a9 Z& n2 V" [
) P2 ~4 |- O$ M! o$ L- Z! |* u4 u! D( ?8 Q: J" W
但如果你是Mac用户,那么自带的Core Audio就能提供相当低的延迟,所以如果你实在没有买独立声卡的预算或者说出门在外不好带声卡的话,那么自带的声卡的延迟也是完全可以接受的。
* t7 K t! a! O8 N3 P2 L
4 U I/ _( n$ E# D; [5 ~
+ W! t2 }# |2 P/ f F03 音频缓冲区(Audio Buffer)
9 g8 P; {; h2 b! k' {" a( t; P3 ^9 Y' P
5 b/ V, t4 y' ]4 ^' k2 s' o6 S* V4 ^
在解决了声卡驱动的问题之后,延迟主要就出现在接下来这一个部分。在上一篇文章中我就有提到缓冲区大小(Buffer Size),提到了当出现爆音时一个可以检查的就是缓冲区大小是否过小。7 d: E s8 |5 N$ M
1 @ L9 B" R( s9 L
. x- R3 r+ W I1 k6 ]
$ R! Y5 E2 M C& L. l$ M2 q8 B音频缓冲区(Audio Buffer)其实就是一个用来暂时存放音频信息的空间,其单位是采样(Samples),配合采样频率(Sample Rate)我们可以计算出它所产生的延时,其公式如下:音频缓冲产生的延时=缓冲区大小/采样频率6 X' {5 c6 T: O2 M; y3 _ ^
, q' z6 g# G+ ]: `% h/ C- J% T* ^% r6 q, f: u
. H1 t0 b% r8 J, ]( `. b# s8 ^- h+ d9 d
! Z$ z) T- T7 V9 \' n
以我自己的设置为例子,采样频率为48kHz,缓冲区大小为256 Samples,那么根据上面的公式就可以计算出由音频缓冲所产生的延时为5.33毫秒。
% t/ u( @3 @" m) s. H, J) R+ d; i7 ~0 V+ X
. a6 c; }8 H0 M/ k+ [' o. ?
2 s# i% ], C! N这相比于模数转换所产生的微秒甚至是纳秒级的延迟要大得多,但相比于MME与Direct X那几百毫秒的延迟来说又不算大,所以Windows用户拥有一块支持ASIO的声卡确实是非常有必要的。7 I% r' O+ c3 A7 H" w
% B8 T3 u, _: J3 ?, P$ f
$ w& l3 K8 Y. I. `4 r
" j" l; L6 K$ C ]$ _, E/ J04 音乐宿主软件中的效果器
% k( N2 p8 N$ c+ K
4 l1 [; @5 N6 l* @9 U$ b3 {5 | F: R$ t/ y1 u: f( I" v$ z9 Z
" I4 D& O# |; F
2 M( U- ^1 w3 ]2 \, A. y- I) i2 I
/ p; T' z( [. x a K' P. C! P9 H D$ K0 P! I1 u) s
在Ableton中,只要你把鼠标停留在装置标题栏上就能看到它所引入的延时5 R# P3 \0 \' t$ F9 [' ^: w8 m
% w3 z4 w% Q2 t3 E9 R! Z& V' N
* {5 a( A$ q( r9 s, K- T+ @- l" i
最后一个可能会引入延迟的环节便是DAW处理音频的环节,虽然大部分的效果器都能在设定的缓冲区大小内完成音频的处理,但总有一些比较复杂的效果器它需要更多的处理时间。3 {+ w+ r& U! S- g b
' i, O4 N- h, r, _4 U7 h1 j0 _8 H! B, h+ l. {) }
8 a, C2 ^- `$ m3 x
! r! n( k$ h; x6 G' t这些效果器会在原本延时的基础上引入额外的延时,比如Ableton自带的EQ Eight在默认的情况下并不会引入额外的延迟,但当你打开了超采样(Over Sampling)的话,情况就变了。/ l. ?6 S6 `: G: X
% f% ~2 v+ C) V! d6 g1 ~3 T8 h
& D1 ]9 B7 R a3 o5 M1 F' g$ W2 u! G* H' y
8 Y3 j7 d2 l) A; L0 z" C2 O* W- n& a
以上便是声音进入电脑CPU这个过程中会产生延时的地方,我们把这个延迟称为输入延迟(Input Latency),然而CPU处理完的音频信号也不是会立刻输出到你的耳朵里的,这期间仍然还有一个延迟叫做输出延迟(Output Latency),但它差不多是输入延迟的一个逆过程,这里就不再详细赘述了。
4 w) h) o8 m# y
. r) {4 ?, d9 Z* F9 K4 U5 C9 p6 v0 ~4 v; P6 e
( ?; b8 W: u) N
输入延迟加上输出延迟就是总延迟(Overall Latency),这三个参数你都可以在宿主软件的设置页面看到,一般是在设置声卡的页面。6 ]* c8 E' O F) H3 T8 P/ V
|
|