录音/制作/创作 吉他 扩声技术 视频技术 作品展示 生活 信息 更多... | 音频应用专卖店

[教程] 浅谈音频和优化

( 19 )
12
 
[收藏]
-  第 1 页  -

浅谈音频和优化


1451
     

很多朋友不太明白音频应用在机器上如何应用,是否合适,是否能加强,那些优化到底是什么。那么本人就以一些肤浅的了解给大家做个不太成熟的知识普及,由浅入深循序渐进。献丑而已,纯手工码字,恭请诸位敬听~




第一章.音频是什么




    既然要说应用层,那么就先从基础讲起,懂的人直接跳过。我们常说的音频是把自然界的声音保存成电子设备可以记录的文件,而不是具体的哪个声。自然界的声音是持续不断的声波,而不是粒子。等同计算机里面的一种模拟信号,保存为能够设备之间数字传输保存的文件罢了。说白了,能真实听到的是模拟信号,能保存传输的算数字信号。所以每套音频系统里会有AD/DA,就是模拟转数字,数字转模拟。至于去年有人说老师那我对着家里喊一声的回声算不算传输和保存,我只能说多想一下传输和保存是什么。


1, 采样率
众所周知所谓声音就是物理震动体现,但是数字信号的特性并不是持续性的保存声音最小振幅。为了尽可能不失真的还原模拟信号,美国工程师奈奎斯特提出了采样定理,就是被记录的数字信号振幅不小于模拟信号振幅的2倍,我们管这个叫采样。人耳的采样是20KHz,因为要大于40KHz所以当时的标准就定在44.1KHz一直沿用至今。采样顾名思义,就是采集样本的规格。

2, 位数
而记录的声音振幅是有精度需求的,就是可以被量化的。所以提出了一个位数概念,说白了就是有多少种振幅。好比黑白照片一样,不是纯黑纯白,也有一个程度,位数越高记录位置越精确。比如常用的16位,数字信号只有0和1,那么就是2的16次方,2^16=65536。如果32位那就是2^32=2147483648。也就是说,位数越高精度越高,我们经常说的解析力也就越好,还原度就更好。

3, 码率
其实这个好理解,就是单位时间内文件大小。单纯码率可能不代表什么,但是码率越大表示文件越大记录的越多,通常认为码率越大素质越佳。当然这在同一个规格下更才更有意义。

4, 声道
就是几个发声点,这个好理解。2只音箱发出的2声道。这个不解释了。

本帖最后由 DreameRing 于 21-12-27 06:13 编辑
观众反应

1451


第二章,格式和编码




早年就讲过,如果格式是编码,那么房子就是家。哪怕是你自己的。
格式只是被保存下来数字文件的后缀名,切记只是文件名而已,但是不同格式支持的是不同的。比如特别通用的WAV和AIFF。当然我用房子比喻也算恰当,毕竟也有叫容器一说。

1, 格式和编码有什么区别
不同格式不仅仅是名字不同,比如AIFF就支持MAC6和ACE8。苹果的AAC音频,就可以储存在M4A格式里,也可以储存在AAC格式里。这两个.AAC和.M4A的区别就是MPEG2规范和MPEG4规范。
是不是看名字有点晕?再说个容易理解的,同样是MP4,为什么别人能播放你不能?因为同样后缀MP4文件,假定你只能支持AAC,但是MP4的格式,里面音频的部分可以是MP3,可以是AAC,可以是DTS。如果支持之外的那么就听不见。
现在懂了吗?这个格式在外,编码在内,刚叫容器和我用房子比喻的意思就是这样。所谓格式只是一种存储具体编码的容器罢了,像个房子一样,只是不同格式能支持塞进去的编码不一样。


2, 为什么要编码
声音是持续不断的,记录的频率音色等等。但是这种不断不代表不是不能间断的,比如乐器之间的静音也要被完整记录。通常编码的意义在于压缩。不然数据流非常大,文件太大。而且数字信号中只有0和1,重复和无用的会特别多。
那些所谓的编码就是很多种压缩方式,把庞大的数据转成文件更小的数据。比如大家都听过的MP3和MP4。虽说MP3的压缩方式比较尴尬,直接删掉音频数据中对听觉不重要不敏感的那部分,尤其是高频。刀削般平直的高频剥夺。因为音频有丢失有损害,所以叫有损压缩。


3, 播放
有的人能否播放就看格式,就是那个后缀,但是经常失败。那么在具体播放里如何体现呢?既然编码和格式是不同的,那么播放起来也有两部分。
第一部分就是针对格式的分离器,既然刚讲过格式在外,那么分离器就在外。当前播放器的分离器支持当前格式的情况下,比如AAC能分离出Apple AAC MPEG4音频,MP4分离出AC3,然后交给下一层。
更简单的描述就是,分离器的作用是把声音本身从房子里面拿出来,或者有一把钥匙能进去。
第二部分就是我们所说的解码器,既然拿出来了编码文件,那么就需要解码。解码过程步骤原理等就不讲了,因为编码实在太多了。你只需要了解一句话,特定的编码需要特定的解码器就好。


1451
第三章,解码




上面说了特定的编码用特定的解码器就能播放。那么上面为什么不说数字转模拟呢?但是也有人说解码器是硬件,比如支持DTS解码的功放,AV用户多讲。也有人说不不是DTS什么的解码,就只是数字转模拟,声卡或者独立DAC,HIFI用户多讲。也有人说解码是软件,只要硬件支持就行,到底哪个才对呢?我感觉很多人不明白,至少问了上百人,没有一个人接近答案。这里就单独开一章来讲。
所谓解码器(decoder),就是把当前数字信号转为模拟信号过程的设备。


1, 解码概述
以多数电脑为例,不管什么格式什么编码,在音箱出声之前,会自动转WAV PCM编码信号在通过声卡输出。哪怕DTS HDMA 5.1声道,如果你只有2声道音箱声卡,那么输出的也是2声道的WAV。WAV是格式,PCM是编码。你的音箱能发出声音,完全就是模拟信号的作用。而能出声本身,就是音箱接收到被转成模拟信号了。
那这样,岂不是我的集成声卡也有解码器了?当然!只要是声卡一定有解码器,你的声卡一定能把PCM数字信号转成模拟信号输出给音箱。这种方式声卡就算PCM解码器。
这种不依赖特定硬件解码的通常也叫做软件解码器。实际上还是硬件发挥作用。


2, 不是硬件作用么?软件解码器是啥子
刚刚说了,所有解码实际上还是硬件发挥作用。但是,你的数字信号无法输出为模拟信号,而解码器一定有数字转模拟的过程。
后端(比如集成声卡)一定有支持通用的解码器比如PCM编码。也就是说,只要是PCM就一定能模拟输出。这就是上面所说的,为什么一定输出前要转换成WAV的PCM,因为一定能把PCM模拟输出。
所以说,只要能把数字信号转成WAV PCM编码的,没有其他硬件参与的数字转模拟过程,就算软件解码器。这么讲只是区别于外部的其他硬件解码器。当然我今天主要说解码是什么。
总之一句话,有特定硬件负责的就叫硬件解码,由通用硬件负责的就叫软解。比如视频里面硬解H265的硬解就是GPU做特定计算,软解就是CPU在做通用计算。



3, 如果不是WAV呢?SACD和DTS解码器也是这样了?
没错!刚才说了,就是数字转模拟。多数情况输出都是模拟信号。而SACD和DTS解码器就是能把这些音频编码转成模拟信号。
只是这些DTS解码器不能像通用的那样,收到被转成WAV的PCM音频,必须是数字格式的DTS源码。所以有一个概念叫数字直通,就是数字DTS信号直接发出给后面的解码器。
归根结底,这种解码器的根本就是,是接收DTS数字信号后,直接输出模拟信号而没有转WAV再转模拟这个步骤,发烧友管这个叫源码输出。
在foobar播放SACD-R镜像的时候,会选择输出类型。是WAV的PCM编码还是SACD的DSD编码。如果设定DSD编码,那么后端必须要有支持这种DSD信号转成模拟信号的设备才行。这个就叫做DSD解码器,也叫SACD解码器。各种DTS全景声同理,只要能把原始信号输出,让下一级解码器去数字转模拟给音箱就行。

4, 硬件解码素质更佳吗
这个不是绝对的。因为只要是能听到,一定有数字转模拟的过程。只不过通常外部解码独立购买,独立声卡比集成声卡好我就不解释了吧。
还有一个就是如果可以硬件层面直接解码,对比先编码转换WAV,再用能力很差的前端设备解码比如集成声卡,那素质就是千差万别了。

5, 解码优化
首先看是否硬件支持,如果支持则尽量硬件解码。我们说的硬件解码只是特定的硬件解码。不仅效率更高,而且质量通常能更佳。
注意,我说的是通常更佳。在2010年之前,尤其硬件解码还是一件苛刻的事情。而且硬件解码素质只是体现在更重要体现在效能上,而不在质量上。最起码2016年之前,硬件解码的作品都没有软件解码质量好。至少我和很多人认为是这样。
还有一众朋友问我视频方面的硬解OpenGL、DXVA2、D3D11和苹果的CVPBR也和音频一样么?其实单纯编解码是啥和播放来说基本和同理,今天就说音频部分的数字转模拟。
如果要说视频编码和播放,几十种编码的方式规格等等都不一样。别说搞清楚,就只是H265里头,只是一个能看懂的参数叫级别(LEVEL),光LEVEL的参数说一下我就得上万字,这只是几十个编码里头的一个参数里面再下面的参数。而且tier和profiles就很难懂,没有很强的基础再加上VLC和GOP简直难度不是一般的大。就算从业视频行业内的朋友,绝大多数面对相对基础的CU,PU,TU就像听天书,甚至都没听过,相信我。而且很复杂的我也不懂的。真想听改天开一篇针对主流的易懂的。毕竟这里不是搞视频的。

本帖最后由 DreameRing 于 21-12-27 06:42 编辑

1451
第四章, 什么是优化




软件解码器和硬件解码器归根结底最后都是硬件发生作用,我们常说的硬件解码器就是优化的一种。直接通过实例,以SACD-R里面的DSD编码为例,DSD编码是1位的而非16位,但是采样却是2822.400 KHz。有人就要问了,这个采样率这么高,但是位数这么低是不是还原度特别差,只是单纯振幅更高呢?




1,编码体现
首先DSD编码和PCM编码方式完全不同,DSD编码的采样可不是单纯的采样记录的次数。它是大幅度提高了64倍采样,用自己的方法实现了位数不足的精度还原。它的超高采样导致被记录的点足够多,通过提高64倍密度来表现深度。
说的更通俗的就是,之前采样一个点,具备65536种深度的,现在换成DSD的话这个点是64个没有深度的点组成的,通过这64个没有深度的点来更形象的体现深度。不知道大家有没有画面感。放在图像里大概就是超高像素战胜灰阶。通过单纯计算,32位192K的PCM采样信息量非常接近DSD的编码。而DSD64这种超高采样带来的优势简直妙不可言。


2,解码工作
说到这里大家就会发问,那么我听到的也是1位,2822.4K了?刚才说了,只是很形象的描述。数字信号记录的只是被采样的音频信息。如果DSD直接输出会转成24位192K采样的PCM。
如果硬件解码器,则把原始DSD数字信号直接输出给它。DSD编码不管是NATIVE传输还是DOP传输,都是分段形式的数据块,后端重新列队组成完整数据流。
DCK来加载原始64FS的数字信号,然后输入给DATA层,脉冲器生成时钟,在保存在移位寄存器里。移位寄存器把DSD数字信号转为低通滤波器能识别的8位数据块,再通过低通滤波器去解码,然后得到模拟信号。其实这个解码的最终过程就是64FS数字信号通过低通滤波器发生作用。



3,既然这么麻烦?好处到底是啥
每种音频算法和压缩方式都不一样,而且每种音频编码都有编码的头部信息。它包含了这个算法的最基础的部分。包括格式,RIFF,数据。如果支持的话则可以直接开始工作。
以硬件支持度最好的FLAC为例,拿到头部信息,再通过熵原理拿到信息完整的编码,通过线性预测编码后再格式化输出。这一套流程是特定的。既然是特定的,能否简化流程?当然能!
所谓简化流程,就是规范化流程。生产流水线就是这样,每个步骤都是特定的,不需要干预和计算。这就是所谓优化。


4,所谓优化如何流程化
第三章大篇幅讲解码器终于要来一些对应内容了,前面也说了解码器通常质量更佳的原因。解码器遇到此类文件,后面的那些听不懂的部分不需要特别干预,一整套专门的硬件去做。你只需要得到结果就行。

本帖最后由 DreameRing 于 21-12-27 07:36 编辑

1451
第五章,优化的价值




最近两年总在说苹果优化,也总在说啥啥游戏在优化。而优化的前一章说了有一套专门的硬件去做这部分。为什么这样呢?
1,优点
再说解码,不知道大家听到这两个字会不会很烦,讲了这么多复杂的没有实际意义呀。现在要来了。
上面讲了软件解码器和硬件解码器的区别就是是否有专用的解码器去做这些特定工作。第一啊软件解码的情况下,干这些活的比如CPU再去做,那么现在CPU就解放出来了可以专心干其他工作了;
二是效率性能可能更高,哪怕是CPU毕竟面对整套流水线啊效率未必跟得上。这就好比流水线那一般人效率是跟不上,当然不排除某些生产队的驴;
三是流水线工作单一不容易出错。
四是结果相同统一管理,也节约了成本。


2,缺点
流水线的缺点是什么?又快又好哪有缺点啊,还真有。
这第一啊如果遇到不支持呢?那就全依赖CPU了,CPU再不行那就彻底完了。所以说遇到很多不支持的你会发现效率特别低,CPU本来就没多少还被占用的极高。
第二支持是有度的,还是以流水线为例。支持的特性必须要满足才行,而且有个范围。屠宰场的流水线没有让鸡鸭主动走过来把自己挂上去的能力。
第三啊即使支持,也是有度的,毕竟在发展的。比如同样H265 10位解码,别人完美你会很卡。为什么呢?H265是有很多级别和规范的,比如VLD和MAIN444,再来个F级别。哪怕提醒已经解码了也会很卡。这还不包括在压制时候不同level带来的不同samples。
第四啊就算完美解码,不同解码器的质量不一样吧?速度也是不一样的吧?
这第五就很尴尬了,解码的结果是特定的,如果一旦出错那么就是面积的。而且这种特定结果的质量也是固定的,未必比算出来的好。因为大家都明白,机器的质量普遍高,但是不代表人工的就一定不行。
第六最尴尬,咱就是生产队的驴,干就是了。什么解码带来的优化一律不存在!CPU去干可能得到的结果还更好,至于性能表现比如AMD 3995X哪怕去干解码工作,哪怕占用只剩50%也比你的本子强,不信的话你的本子和3995X碰一碰。


3,特定优化的概括
很多朋友问我为什么被优化之后很快呢?咋个优化法?
最简答形象的描述,优化就是公式。一边输入等待计算的数据,通过一整套流程,输出得到一个结果。如果让CPU去计算,如果CPU指令集不支持当前算法,可能就是硬算了。
比方说50个5是多少,会乘法口诀的同学知道答案,但是人家可能只会加法口诀,就是5用加法口诀加50次告诉你二百五。加法口诀不会的就再凑50头驴去数一下。
通过上面的描述,我们知道优化也是有方向和公式的,如果公式之外就是芯片这部分硬算?不是的。公式之外的话,多数情况是不参与,直接丢给处理器。这就是优化之外的结果。
所以处理器永远重要,他基本能做所有事情,除非所有步骤不需要它。


4,不优化的结果
不优化就是硬件支持不好,靠硬算。浪费了大量的CPU性能,非常可能硬算的速度跟不上优化后的结果。毕竟驴不好当。
还有一种可能是完全不支持,甚至压根连硬算资格都没有。你让3090跑Metal,M1Max跑深度学习,更过分的是让AMD装NVIDIA驱动。这就是不支持的结果。我不能说3080连Intel核显驱动都不支持所以还不如核显。
Mac不能打游戏也是同理,很多游戏都是微软DX的API,OPENGL的都很少。让它硬算都不太行。
所以说,目前优化还是非常有必要的,不然靠硬算。但是硬算好处是我不优化但是啥都能干。比如随便一个I9去看电影。


5,优化结果
苹果的ARM处理器优化非常强,尤其是视频这一块。其实主要是桌面端解码不给力,桌面端视频硬解支持最好的居然是12700K的核显。最起码比手头的3090和6900XT强,往前面说,当年搞视频压制和播放里有一条特别醒目:独显不支持!但是手机支持。
前几天用2台机器来搞视频对比,软件是特别依赖显卡的达芬奇。分别是GTX970加I7 7700K和12700K+核显,发现这个UHD770核显硬解后性能完全不比GTX970+7700K差。
换到Mac,对标机器就是M1的MacBookPro。用RX580压根不行,令我差异的是换成Vega64也不太行(所以Vega出给矿老板了)。但是如果是核显再加RX580,尤其加点特效字幕啥的, M1连尾灯都看不见,尤其是高像素PR不支持的时候那真是惨。别人测试结果我不管,我只管自己感受,可能我不懂吧。不要听那些博主讲什么输出多少秒,直接RAMDISK用到秒都算慢的了,一秒十几G还是随便的。


本帖最后由 DreameRing 于 21-12-27 07:20 编辑

1451
第六章,     未来应用


目前优化还是得说苹果,毕竟Windows平台主要是兼容性体现。而Mac针对某些东西有很多优化加持,音频有多少呢?其实目前没多少,主要靠CPU了。那些解压什么的还是得靠CPU,至于PCM解码,大家都有你也占不到便宜。
FCPX表现好完全是解码能力提升的体现,单单是每个步骤电源管理堪称顶尖,确实太牛了!就是太挑硬件。同样的6900XT核心让AMD给苹果定制一下就表现不一样,AMD官方的6900XT在Mac下只能发挥35%,其他品牌的甚至不能发挥。
如果说对音频有优化,那么我就大单猜一下优化方向。

第一就是音色解压速度大幅度提升,这个难度其实很大,毕竟太多了。需要统一规范化,格式固定化。
第二就是推出特定音频格式和编码,以后苹果如果强行指定音频编码,比如内置DSD64硬件解码,系统内默认输出也是,不管什么音频输出自动转DSD64规格再模拟,先这么假设啊。那这个就太强了。以苹果的能力不管性能表现还是质量肯定吊打其他平台。
第三就是软件性能调用和电源管理,目前Logic已经早早完毕原生,但是其他转译的还是太多。即使原生支持也不代表存在高强度优化。当然电源管理一直是苹果强项。
第四应该是根据负载量去硬件级别的提升优化,比如耗时最长的存储这方面的RAMDISK和分层存储,不同阶段的性能针对统一内存的调用,多个步骤提高多核心利用率和效能,再来个非易失内存那就太强了。
这些东西我觉得我这种笨蛋都能想到,苹果早想到了,就看未来发展方向了。总之,对所有科技公司致以敬意!

最后,希望我们能和喜欢的人在一起,做着自己喜欢的事,做一个被社会认可后辈津津乐道的那个人。活成自己喜欢的那个模样。





面对新冠疫情,一定可以战胜世间所有不美好,相信国家相信自己,加油!
2021年12.27日夜,中国.陕西.西安
DreameR

本帖最后由 DreameRing 于 21-12-27 10:25 编辑

577
现在独显的还有什么编码不支持?还有mp4 mkv avi这些属于容器并不能叫格式,不管是编码还是解码是nvidia 都没比intel核显弱啊。望指教

1451
SimoneLuisi 发表于 21-12-27 06:39
现在独显的还有什么编码不支持?还有mp4 mkv avi这些属于容器并不能叫格式,不管是编码还是解码是nvidia 都 ...









我自己的6900XT和UHD770,GTX3090对比。关于格式和容器,里面也说了。文中描述格式就是容器,特指文件格式。而且容易和编码解码搞混啊。谢谢指教

本帖最后由 DreameRing 于 21-12-27 06:59 编辑

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

1903
谢谢分享

2514
谢谢分享

167
谢谢分享

258
音频比编曲复杂太多了

2037
DreameRing 发表于 21-12-27 06:44
我自己的6900XT和UHD770,GTX3090对比。关于格式和容器,里面也说了。文中描述格式就是 ...


4035
能不能告知一下,AAC最高码率应该是多少?

280


不知道楼上对AAC的询问,是需要什么信息。

另,楼主这句话有点酱舌头,我给个注解不知有无冒犯:

总之一句话,有特定硬件负责的就叫硬件解码,由通用硬件负责的就叫软解。比如视频里面硬解H265的硬解就是GPU做特定计算,软解就是CPU在做通用计算。


通过软件调取硬件特殊指令集完成(特殊)任务的,叫硬解。比如,现代GPU均包含H264/265视频编码,通过GPU完成编解码就是硬解,过程犹如码头装卸集装箱。但是,GPU却不能完成2+3=?的通用运算。
通过软件调取硬件通用指令集完成(所有)任务的,叫软解。比如,CPU并不包含H264/265视频编码指令集,却拥有无数的“算盘”,面对集装箱可以像蚂蚁搬家一样,虽然费时费力,最终也能够完成编解码任务。


现代电脑的集成运算,已经不那么刻意去区分软解/硬解,CPU虽然还是“中央处理器”,更多地在充当调度。所以,很多的软件包括网络游览器,都有所谓的硬件加速——换句话说,就是CPU碰上事儿了,先甩给图形卡/声卡,或是什么硬件卡,只有这些卡一脸懵逼,CPU收不上结果时,才会御驾亲征。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

搜索