欢迎光临散文网 会员登陆 & 注册

直播声卡知识:内录?WDM?DSP?一文讲明白

2021-05-02 11:13 作者:ffjigft  | 我要投稿

最近在着手写一篇关于直播声卡的上手小记(穷学生,用过的声卡不多,不敢自认为是评测),但是遇到了一些麻烦:声卡涉及了一些直播的相关功能,而如果不单独讲解一下相关的理论知识的话,读的大多数人会看不懂;但是这样一坨概念科普塞进一篇产品评测里面显得有些不合适;扫了一眼,一时也没有看到什么很干净利落的文章;思来想去,干脆独立成文,自己来写一篇单独的小短文,尽可能简明地把问题说明白。
笔者自己其实并不玩直播,相关概念也是自己硬啃了一些材料,再加之自己的思考汇成。如有问题,欢迎指出。



内录


直播声卡的内录,本质上来说,就是把声卡的输出通道转化为(虚拟的)输入通道

这个解释随处可见,本身也确实是准确的,但很多人看了以后完全无法理解:这样做的意义何在呢?在此之前,我们必须先来谈一下软件(虚拟)机架这个概念。

Presonus Studio One,相对新兴的宿主软件(DAW),由于比较全面的一体机能力常见于翻唱圈,也被很多人拿来作为虚拟机架,笔者甚至一些人将盗版的 Studio One 老版本加以改造,作为专门的虚拟机架软件卖给别人

如果你做直播不只是简单的玩玩而已,那么你直播时录入的声音通常需要加上一些效果。比如,主播唱歌一般都需要为声音加一点混响(Reverb);更加专精一点的主播可能需要为自己的声音加上一点压缩(Compressor),EQ 之类;很多的主播在直播时候会被抱怨声音不够大,一般是因为声音没有加上限制器(Limiter)/最大化效果器(Maximizer)拉升响度 ...... 此文就不对这些效果器的作用进行进一步的探讨。总归,就算你并不是一个唱歌为主的主播,如果想要做到相对专业,为麦克风录入的声音加上效果也是必不可少的。

直播的过程中,电脑一边接收声音信号,一边把信号上传至服务器,这时要同时对声音进行实时处理,那么最直接的办法自然是使用 CPU 算力实时处理,而这一做法的实现方法就是软件(虚拟)机架。声卡驱动输入的声音信号流进入虚拟机架,在虚拟机架内调用效果器进行实时处理(这里使用的很多 VST 效果器往往也用于电脑编曲/混音),之后由虚拟机架输出的就是添加过效果的信号了。

但是这里再一次遇到了问题:尽管同样是信号流,但是由声卡录音进入电脑的信号会被电脑识别为输入信号,而经过了虚拟机架处理后出来的信号会被识别为输出信号导致后者不能作为直播的信号源,不论在 Windows 系统的声音设置,还是在直播常用的 OBS Studio,情况都是如此。这就是内录的意义所在了:经过了一次回环,同样是信号流,声卡的输出信号经过内录以后被系统和直播软件识别为了输入信号,这样就可以作为直播的声音输入了。



WDM

WDM (Windows Driver Model)是什么?对我来说,我只清楚这是一个软件架构/协议,而这就足够了:我们只需要关系怎么用就可以。不过为了便于读者理解,笔者想稍微扯远一点,先提一下 DrectSound 和 Core Audio

DirectSound(DS,基本取代了更古老的 WaveOut)和 Core Audio 分别是 Windows 和 macOS 的底层组件/接口。众做周知,Windows 强调兼容性,而 macOS 强调标准统一。Windows 系统的音频架构具有良好的兼容性,而 macOS 强制开发者使用比较统一、严格的标准。

由于标准高且统一,大家全部统一使用 Core Audio,Mac 的音频架构性能相对较好,除了延迟很低以外,很多声卡在 macOS 上面可以直接免驱运行;而相对应地,由于 Mac 的标准死,很多地方无法实现复杂的自定义设置(比如相对复杂的信号路由),这是导致用 Mac 直播的人相对较少的重要原因之一(当然,在相对昂贵的双机推流的情况下,Mac 的稳定性相比 PC 可能存在优势,所以双机直播方案中见到了不少拿 Mac 作为从机的方案)。

而相对地,DS 的兼容性非常好,各种的软硬件一拥而上也较出问题;但由于强调兼容性,DS 的性能难免受到影响,除了音质有数据可见的折损以外,声音信号的延迟也是一大问题(如果你的独立声卡使用 DS 直接返听自己的声音,那样相比于声卡自己的硬件返听,你一定可以注意到明显的延迟)。

ASIO 标志。ASIO 标准由德国公司 Steinberg (后被雅马哈收购)提出。Steinberg 也是 VST 插件标准的提出者,以及著名 DAW 软件 Cubase 的生产厂商

为了解决 DS 的音质和延迟问题,一般的外置声卡厂商都会提供 ASIO 驱动。ASIO 是一种相对高标准的协议。在使用 ASIO 时,声音信号绕过了 DS 层(因此用户会注意到,在 Windows 系统的控制面板无法控制声音大小之类),本质上来说实现了某种软件和外置声卡硬件的直接握手。一般用于音频创作的宿主软件(DAW),连接外置声卡都建议使用 ASIO。但是,Windows 系统本身,以及直播所使用的软件,是无法对 ASIO 进行操作的;虚拟机架一般都可以兼容 ASIO,但一般的虚拟机架都无法直接将音频流输出到直播软件

直播本身并不苛求录音创作级别的音质,延迟问题也可以通过声卡自身的硬件返听(大体可以看做集成在声卡硬件,或声卡软件最底层的返听通道,延迟极低)来基本解决,但是声卡面对直播情境时有一个更大的问题,那就是信号路由,说得再通俗易懂一些,那就是各路信号要去哪些地方,不要去哪些地方

举一个很常见的情境,主播 A 直播打联机游戏,同时与玩家 B 联机语音。这个时候各路信号会有三个可能的去向:主播 A 的监听信号,直播推流的声音信号和发送给玩家 B 的语音信号。声卡所面对的各路声音信号可能要去往其中的一两个或者全部,而如果某路信号去往了不应该去的方向,那就很容易导致问题。比如,一些新手主播录入的声音可能会包含有一些诡异的“混响”“回声”,严重干扰直播间的体验,这往往就是直播信号在输入了一次麦克风干音信号以后,再输入了一次内录/虚拟机架输出/软件返听信号所致(一般是设置问题)。再比如,在没有具备一些针对性软件支持的情况下,Windows 系统和直播软件容易把声卡看作一个整体,在同时开启了内录功能以后,Windows 系统/语音软件会把输出到主播 A 的监听信号直接等同于发送给玩家 B 的直播信号,导致 B 发送给 A 的录音信号经过了一圈服务器传递被再次返回到 B,使得 B 会听到自己延迟了一截的声音,破坏 B 的体验;如果此时玩家 B 自身也在直播,那么 B 的直播间同样也会出现那种诡异的“混响”“回声”;这就是直播圈经常被提到的 “卡麦”。

面对包括“卡麦”在内的信号路由问题,声卡厂商给出了最根本的解决方案:多通道 WDM (Multichannel WDM)驱动

为了保证说法尽可能严谨,笔者昨天花了很多的时间去查阅资料。找了一圈维基后一脸懵逼,看了甜水网[1]、audiosciencereview[2] 的解释后还是一头雾水,这边保守起见引用一下来自于声卡厂商的说法:
Antelope Zen Tour Synergy Core 的 Bundle 2.3.9 更新[3],里面明确提到了 :Added Multichannel WDM Support that improves Windows playback experience.
RME Babyface Pro FS 的说明书[4],里面多次提到了 WDM Device 的相关设置,将其与 ASIO 并列。
尽管一些关系还是没有理清,比如有看到一些说法说 DS,Wasapi,KS(Kernel Streaming)之类的都属于 WDM Channel,但是鉴于娃娃脸说明书里面已经提到了一些相关说法:
Both the rare to find WDM Kernel Streaming and - under Windows 7 to 10 - WASAPI Exclusive bypass the WDM mixer.
从保守的角度来看,笔者也自信可以使用 “多通道 WDM 驱动”“WDM 设备”的说法。
这一块的理解如有问题,还请对相关领域了解更多的老师指出。

笔者自己使用的 Antelope Zen Go SC 声卡,可以见到 Windows 识别出来了 4 个 WDM 输出设备
同样地,Windows 识别出来了 4 个 WDM 输入设备

让我们回到上面的“主播 A 玩家 B”的例子。如果使用的是笔者手头这样的一块声卡,那样可以把游戏的声音输出设备选择为“Playback 1/2”,语音软件的声音输出设备选择为“Playback 3/4”,如果还有个什么背景音乐,还可以再选择为“Playback 5/6”之类(本身麦克风输入就可以在声卡面板里面显示为硬件输入),那么就可以把各路软件的输出信号汇总到声卡的控制面板;在声卡驱动内部进行完信号路由(调音台/跳线盘/路由矩阵)后,声音信号可以被输出到指定的“Record”设备,成为直播软件、语音软件等等的输入信号;在多通道 WDM + 内录的支持下,声卡的信号路由问题就可以得到彻底解决了。

和多通道 WDM 的思路类似,为了给一些没有提供多通道 WDM 驱动的声卡提供类似的支持,网络上有很多的虚拟跳线软件(软跳线)。这些软件包括 ASIO Link Pro 等等,从效果上来说确实能够实现很多信号路由功能,但网络上普遍认为这些软件的稳定性较差,笔者也很少见到有人推荐使用。说句实在话,笔者自己确实没有上手过这些软件;而且网上这样的软件特别多特别杂,其中究竟有没有稳定好用的,笔者完全不敢下定论。

RME Babyface Pro FS 的路由矩阵面板(截取自官方说明书)
羚羊 Zen Go SC 的 DAW I/O 面板,在直播时同时起到路由和监控的作用
ESI MAYA22 声卡的跳线面板。这个驱动版本貌似已经比较旧了,仅示意

不同声卡内的信号路由方式各不相同,调音台、跳线板、路由矩阵都经常可以见到,这里不作过多展开。



DSP:

前面我们已经谈到了,直播录入的声音强烈建议加上效果处理,而最直接的方法是采用虚拟机架,使用 CPU 算力。

但是这种方法有自己的问题。首先,使用 CPU 算力渲染效果,自然会加重 CPU 自身的负担。直播推流(编码)本身需要消耗大量的 CPU 算力,而同时可能进行的游戏、Live2D 渲染之类同样需要使用 CPU 算力。虽然大部分效果器对 CPU 算力的消耗并不算严重,但是混响效果非常吃 CPU。如果你的 CPU 算力本身并不算出色,那么效果器算力的需求无疑会令推流导致的 CPU 算力短缺问题雪上加霜。

另外,多了一层虚拟机架软件,系统的不稳定性因素也更多了一些。直播情境下多重软件的套娃对 Windows 系统的稳定性构成了相对较大的挑战。主播在直播时一旦蓝屏死机,状况自然会非常尴尬,而这种情况发生也不在少数。

既然使用虚拟机架,使用 CPU 算力可能导致问题,那解决问题的根本办法自然就是不使用 虚拟机架和 CPU 算力。相对应地,很多厂商在自家的声卡上面搭载了 DSP 芯片,可以在声卡控制面板直接调用效果。

Universal Audio 的 UAD 2 Pcie 卡。UA 大概是音频制作圈里面以 DSP 而最为知名的厂商(之一),旗下的 UAD 插件由自家声卡、DSP 盒、Pcie 卡上搭载的 SHARC DSP 提供算力,除了实时渲染录音以外,也可以为 VST 插件提供算力(不过其声卡不提供 WDM 驱动,对直播支持一般)
羚羊内集成的 AFX 控制面板。在这个面板里面可以为单个轨道套上羚羊自家提供的 DSP 效果器。羚羊的 AFX2DAW 使得旗下声卡的一部分可以在 Mac 上面为 VST 效果器提供算力

在 DSP 效果器的加持下,用户理论上来说就可以抛开虚拟机架来直播了。各家的 DSP 算力调用形式也是千差万别,需要具体问题具体讨论。



本文的写作时间约 6 小时。笔者并非专业人士,如果文章里面的概念有错误,还请看官们指出。

希望本文可以帮助到对直播了解极少但是希望进行直播的读者。


原创文章,首发于某乎,禁止未授权转载



参考资料

  1. ^The difference between the ASIO, WDM and MME drivers https://www.sweetwater.com/sweetcare/articles/roland-difference-between-asio-wdm-mme-drivers/

  2. ^ASIO, WASAPI, Direct Sound... is there any difference in sound quality? https://www.audiosciencereview.com/forum/index.php?threads/asio-wasapi-direct-sound-is-there-any-difference-in-sound-quality.7029/

  3. ^Zen Tour SC - Bundle 2.3.9 https://support.antelopeaudio.com/support/solutions/articles/42000082447-zen-tour-sc-bundle-2-3-9

  4. ^MANUALS: Babyface Pro FS https://www.rme-audio.de/babyface-pro-fs.html



直播声卡知识:内录?WDM?DSP?一文讲明白的评论 (共 条)

分享到微博请遵守国家法律