通话降噪算法在手机和IOT设备上的应用和挑战

随着电子产品的升级换代,用户对通话质量的要求也越来越高。通话降噪算法对通话质量起到了关键核心的作用。计算资源的提升使得深度学习模型在便携式的低功耗芯片上面跑起来了,器件成本降低让IoT设备开始使用骨导传感器,,那怎么样才能将深度学习和传统算法结合?怎么样充分利用好骨导传感器?怎么样将客观测试的结果转化为真实的用户体验?这也是新时期通话算法面临的新的挑战。LiveVideoStackCon 2022北京站邀请到了王林章老师,为我们分享通话降噪算法在手机和IOT设备上的应用和挑战。

文/王林章

整理/LiveVideoStack

大家上午好。今天我带来的分享题目是:通话降噪算法在手机和IoT设备上的应用和挑战。

5d2950ef9eed3469ef4604ed78ba9295.png

先看一下国家统计局的数据,在2021年全国通话时长有 4. 56 亿万分钟,基本上平均每人每天至少有 10 分钟的通话时间。

ec37273166c43102d1e507642e2d7ecb.png

手机保有量也非常大,在 21 年底有18. 56 亿部手机。如果根据中国有14 亿人口的话,可能还有4亿多人有两个手机。

21年智能手机出货量的数据是13亿台,22年的数据量有所下降,大约在 11 亿台。

dba5cc621cb334916e1a443587163f0c.png

然后是 TWS 耳机的出货量,在 22 年大约有 3. 5 亿台,也在稳步增长,所以这个算法也在不停运作。

9cfbcdd552e563ddfe8c58025f8cd0ba.png

今天我从五个方面讲一下通话降噪算法落地的状态:

首先,通话降噪算法的评价方法,怎么样的算法才是最好的算法?其次,通话降噪算法的背景介绍。最后,介绍通话降噪算法面临的挑战、落地的实践和未来的展望。

-01-

通话降噪算法的评价方法

835f6589e37badf28c2fcb361ba6cc03.png

首先介绍一下:什么是语音,什么是噪声。

我们一般把语音分为两类:清音和浊音。清音,一般指声带不发音;浊音,声带发音。从图频谱上看,浊音会有很多基音和谐波,清音基本没有,就像白噪声。清音和浊音并不是指一个字,而是在音节里有清音和浊音的区别。

噪声分为很多种。常见的噪声,有马路噪声、地铁噪声、施工的噪声。还有一些特殊噪声,如风噪、共振噪声,因为这些噪声对算法的挑战更高,所以把它们列为特殊噪声。

关于噪声的分类,如果从算法的角度来讲,传统算法都可以处理好一般的平稳噪声。

根据空间的特性,可以分为方向性噪声和扩散场噪声,一般用阵列算法来处理。

此外,根据频带的宽度,又分为窄带和宽带噪声。图里有清音和浊音的标注,浊音会有比较清晰的谐波成分;清音就像白噪声,是一个比较平稳的状态。

1fdcff0d12fa6d251888283d35a72452.png

我们大致理解一下噪声的范围。在生活中,比如会议室,如果不说话,可能是40到80dB的噪声场景。到了马路上,如果有汽车通过,一般是70到 80 dB。如果在地铁上,地铁呼啸而来的噪声可能会到90 dB。酒吧、KTV 里的噪声可能到了100 dB。飞机发动机就更大了,可能有110到130dB的噪声。

后文会给大家一些建议,看看什么样的噪声场景对我们危害比较大。

再说一下语音的声压级范围。一般耳语是在50 dB,正常说话可能在60 dB,不包括用扩音器。如果用扩音器,声音在 100 dB左右。大声喧哗一般是80dB,歌唱家一般在 90dB左右,但是最高能达 130dB。

左边的图显示了什么样的噪声对我们的影响最大。其实,在130dB 的情况下,我们只要在这个环境里待两分钟,那么听力就可能受伤害了,也许就不能再恢复了。

然后再看一下听力在KTV中的状态,KTV 里的噪声大约在 100 dB 左右,如果在这个环境里待过两个小时或超过两个小时,听力也会受到伤害,而且这种伤害是不能恢复的。

所以,给大家一个建议:不要在KTV里待太长时间,两个小时足够了,超过两个小时可以去休息一下,保护自己的听力。

04de55bc63c9ca5bf128d8a3a2d5cfe1.png

再看一下,如果耳朵受损,会是一个什么样的状态。这里有一个数据,在正常播放的情况下,能够听得很清晰。在1000赫兹的情况下,如果正常播放的声音听不清楚了,要加大到约 20 dB 以上才能听清的话,那么耳朵就已经受到严重的伤害了。这时根据中国医学的数据来看,在 4000赫兹的环境里,可能要加到 70—80 dB 才能听清。所以如果耳朵受伤,可能最初听到的声音是很闷的。和大家强调一下,保护听力还是很重要的。

f7c6e0b40e6a6fa3877e7ff6f7fb1c5d.png

国际标准如何规范通话降噪的参数?

ITU出了一系列参数,因为我们在做通话降噪,所以最关注P800 这个协议,它是关于通话降噪评价非常多的一个标准,大家如果有兴趣可以去找原文看一下。

还有P830、805等一系列标准,大部分都是给音频和语音的编解码,用于音频的质量的判断,speech 也会有编解码质量的损伤,所以也有一些标准对此进行规范。

右边的第一张图是天津大学的老师在做的关于信噪比对可懂度的评价。我们发现当信噪比在0dB 的时候,可懂度基本在 50% 左右。当信噪比大于0,如果超过 10dB ,可懂度在 80dB的80% 以上,所以这时的可懂度是比较好的。当信噪比低于- 5dB时,可懂度就非常差了。

3cdc02833750f38d3f5ae814292e3c05.png

我们有一些通话和评测要求,这些要求会更加严格。在测试时,我们进行了严格的检验。例如要求测试时手机的通话时间,如打电话一小时或两小时,在不同环境下保持算法稳定运行。另外,当拿起手机时,我们会堵住底部的麦克风,这时即便通话也不能说话,因为底部的麦克风被堵上,声音无法传递。这是我们自己的测试要求。

刚才提到了一个重要的通话标准,即ITU标准里的P800。这个标准通常采用五分制评分。在算法开发过程中,我们通常无法完全达到4到5分的水平,因为这个要求非常高。因此,我们主要追求达到3到4分的水平,即听起来非常清晰,但可能会有一些杂音。

当然,如果得分在1到2分之间,这基本上是不可接受的;而得分在2到3分之间是可以的,意味着仍然可以进行交流,但可能存在一定的延迟。因此,在恶劣情况下,也可能出现2到3分的情况,能够确保可以通话,但音质可能不是很好。

8d3a9a27cf35ed887d92312ed7eadc8c.png

在这里,我具体列举了具体参数。当做深度学习模型训练时,我们通常会关注到PESQ分和STOI分,这是短时主观的可懂度的评估。比如第三个TMOS分数,它评估的是在没有噪声的情况下使用手机打电话后,对方接收到的语音质量如何。大家可能会有一个疑问,即在没有噪声的情况下打电话,那传输的语音应该非常好,理论上讲确实应该非常好。但是,我们发现,算法可能会破坏语音,或者在传输过程中造成破坏。因此,TMOS是对传输过程中没有噪声且语音没有受损的情况下的评估。接下来,我们再看看NMOS和SMOS,它们是在噪声环境下对语音进行评估的。NMOS评估的是在噪声环境下打电话后,抑制噪声水平如何?抑制得越多,NMOS分数就越高。SMOS评估的是在噪声环境下打电话后,经过链路传输后的语音的保证度如何?语音保证度越好,得分就越高。

所以,看起来SMOS和NMOS的分数有些矛盾,因为抑制得越多,可能损伤的语音也越多,而如果要求语音保证很好,降噪水平可能就达不到目标要求。因此,有一个综合的评分叫做GMOS分数。GMOS分数综合了SMOS和NMOS的评分,从而得出一个结果。

TMOS、SMOS、NMOS以及GMOS是评价通话质量时非常重视的几个参数。目前,有一些趋势,就是大家还不太相信GMOS,如小米采用的评估方式是将SMOS和NMOS的平均值作为评价标准,而不是用GMOS。

ba91cb48df900ecfefd159eea491b6e6.png

小米的通话评估是在全消声室中进行的,目前所有的通话都会在这样的消声室中进行评价。噪声复原系统有6个扬声器,周围有6个扬声器来进行噪声复原。我们的手机是标准装卡,包括嘴巴与扬声器的距离以及耳朵与听筒的距离。这是我们的标准评价测试系统。

-02-

通话降噪算法的基础介绍

d750a3d11898ddda4c844dcb8f07aecf.png

在介绍完语音通话评价后,我们继续探讨算法的技术。

首先,我们来看一下通话降噪算法的发展过程。最早,大家可能都知道谱减法、噪声估计这些早期的算法,后来的数据处理中也会用到类似的方法,例如高斯混合模型(GMM)算法和子空间算法,目前我们也在使用矩阵分解方法,如IV。

从2013年开始,深度学习在降噪领域发挥了强大的能力,尤其在抑制非平稳状态方面表现出色。早期的方法基于掩蔽曲线和频谱掩蔽,后来逐步升级,出现了基于复数谱mapbased方法。

c57690f95ce14bcdd142a66ee84259e3.png

目前,我们采用深度学习与传统方法相结合的方式进行降噪。我认为未来的趋势可能是采用多模态的降噪方法以及训练超大模型,这种降噪方法可能与目前热门的GPT模型以及超大模型的输出相关。

efebaeea00b3bc4f59960866b59b6cf5.png

在通话降噪领域,从2012年到2013年,深度学习的引入可以被视为一个里程碑。其中有两篇文章具有重要意义:一篇是斯坦福的文章,在语音识别方面,通过抑制噪声,提高了鲁棒性;另一篇是2013年王德亮老师在语音分离方面引入了机器学习的方法。

fdb0b3f8474ce72530b0e621c862e341.png

我把通话降噪里比较经典的文章列在图中,这里有一个过程:早期我们用什么样的方法去做语音降噪,到后来我们逐步深入提升它的效果。

在早期阶段,徐勇在降噪研究中引用了一种称为"Dense"的方法,即线性层,取得了较好的降噪效果,这是早期取得较好降噪效果的一篇文章。然而,这种"Dense"层的计算量较大,并且效果有所欠缺,因为它所学习的东西类似于统计规律。

因此,从2016年开始,高通在研究中引入了一种被称为"CN"的卷积网络。卷积网络的好处在于它能够学习频域之间的频谱信息,所以具有更好的效果。

在2018年,有两篇文章也值得提及。一篇是由李锦辉老师在引入LSTM 的时候,提出的基于递归的RNN的模型,而另一篇则是大家比较熟悉的RNN方案,其参考代码在网上可获取。其模型具有非常低的计算量,但带来了非常好的降噪效果。它采用了传统降噪思路,包括降噪模型和树状滤波过程,这些细节较为复杂,但总的来说,这篇文章在早期为大家提供了有价值的参考。

随着对深度学习的研究,在2020年ICASSP举办了一个降噪比赛。西北工业大学的老师开发了DCCRN模型,效果是非常惊艳,在2020年的比赛中拿到第一名。

在2021年的比赛里,声学所的李晓东老师团队提出了一个分阶段降噪的模型,在处理混响的情况下表现更出色,也获得了第一名。

因此,总体来看,发展方向是从DNN到CNN,再到RNN,然后进一步发展为更为复杂的深度学习DCCRN模型。

38747d325a40d6c5aedec58e95cd7146.png

这里我想提一下我们自己的工作,之前介绍的都是其他老师在降噪研究方面的工作,而我们在这个领域做了一点简单的改进。在前面介绍语音和噪声的情况时,提到语音除了基频和谐波外,还可能有共振峰等概念。所以,我们认为在卷积层上不一定需要在整个频谱范围内都做卷积。我们尝试了一种改进方式,即只对关注的低频部分进行卷积,然后再对关注的高频部分进行卷积。

d4ba82c5f1279a97833e5060b27503ca.png

这里的原始数据是一个婴儿的哭声。婴儿的哭声与人的声音非常相似,也有基频和谐波,因此对其进行降噪是非常难的。

我们再听一下在使用小模型时的输出结果,这个声音可能会听起来有些沉闷,这是因为在收敛过程中保留了一些婴儿的哭声。

再看一下训练的大模型的结果,基本上可以听到大模型对婴儿哭声的抑制效果非常好。语音的清晰度也还可以,基本上能听得清楚。根据前文所提的MOS打分,估计大模型的评分应该在3分左右,而小模型可能是2分多。

这是一个基础的概念,深度学习方面的内容讲完后,我们还需要看一下传统算法,因为在通话降噪领域,传统算法仍然发挥着重要作用。

9eaae477a9647b467d6137a7c772a46e.png

这里展示了回声产生的过程:有一个说话人发出声音,声音通过路径传播,如果在下方黄色框内没有用算法进行处理,声音会通过麦克风进入耳朵。

29543f3cbc3feb3dd36a0ea47fc2a8ac.png

在回声消除的算法中,最早期是采用牛顿迭代方法,它是一种简单的方法,通过误差和梯度迭代计算W因子。然而,这种方法存在一些问题,比如如何处理双重回声、共享环境、怎么确定滤波器长度、收敛速度以及非线性问题等。

所以我列出了一些简单的建议。例如,在设计滤波器时,考虑到复杂的混响环境,不一定需要使用很长的滤波器,可以使用其他方法。

9404bd136a043d47385c1d6bacddd268.png

此外,关于AEC,现在也有使用神经网络的方法,它的优点是语音保真度更好。目前有两种方法,一种是让神经网络学习整个过程,将麦克风的数据和参考信号输入网络,让网络自己学习和处理回声抑制;另一种方法是将传统算法的结果和参考信号一起提供给神经网络进行处理。这两种方法都各有优势,但是神经网络的计算量非常大,与传统方法相比,计算量的问题让我们很难接受。

所以,我们也在考虑一个问题,即是否将降噪效果也整合到回声抑制中。我们正在尝试这件事,即让神经网络既处理回声抑制,又进行降噪处理。

038ff958457ad1c3012ef861d1bb0a16.png

在2022年,我们参与了ICASSP的AEC挑战赛。我们发表了一些相关文章,取得了还不错的效果。特别是在低信回比的情况下,比如-5dB,甚至-50dB下,我们的方法仍然能够获得良好的效果。我们使用了一些热门的技术,比如Transformer,这是一种神经网络模型。但是,因为它的计算量较大,所以目前只是做了一些演示,并没有落地应用。另外,关于AEC,可能还涉及到一些阵列算法,适用于手机应用和IOT应用。

47becc6fa3a0807324c1dda2e41be113.png

阵列算法主要用于实现方向性的信号抑制,其中包括一些常见的算法,如GSC、MVDR、GEV等。这些算法的主要目标是求出麦克风阵列与声源方向之间的关系。具体的推导过程可以在相关资料中找到。

通过阵列算法,我们可以得到麦克风阵列摆放位置与声源方向之间的关系。这个推导过程的好处在于可以了解每个麦克风接收到信号时会出现什么样的差异。

c0bbd49fc6b6c6d94a9da02c60c8d373.png

阵列算法的推导过程涉及到对阵列接收信号的标注以及确定目标方向矩阵。在推导过程中,可以使用简单的阵列算法,如CBF算法。CBF算法的基本思路是通过比较每个麦克风接收到的信号来确定最优的状态,这是CBF算法的最简单过程。

5e4d14619529a16ae77aed9de71aed9d.png

这里我们在做一件最重要的事情,就是确定两个麦克风之间接收信号的区别。其中最关键的因素可能是延时差异。虽然整个推导过程可能非常复杂,但它计算了延时对两个麦克风的影响。

2c7b21e7ecc818e3a70af313a712d3cf.png

CBF 只是理论上的推导,MVDR是我们真正使用的算法。MVDR算法的主要思路是通过约束条件来保证方向位的正确性,并使用拉格朗日算子来最小化目标函数并最大化目标信号,同时最小化其他方向的噪声信号。

eb74cb93fdabbb20660308bd54fc39e1.png

对于单通道降噪问题,早期的方法是基于能量估计。通过计算信号在频段上的能量,并跟踪最小值,如果最小值不为零,那么它就被认为是这个平台里的噪声。

我们在实际应用中,发现平滑能量计算对结果的影响非常大。这里可以看到Alpha因子对噪声估计的准确度影响很大。

45ca2c3e6a41ddfea3157fa08050413a.png

单通道降噪升级在这个基础上提出了一种基于信噪比的迭代评估方法,通过判断平滑和改进来获得更好的降噪效果,这算是传统算法里的迭代升级。

-03-

通话降噪面临的挑战

我们再看一下算法面临的挑战。

我们在手机、IOT以及在其他设备上的应用的时候,面临的最大问题就是计算资源。因为现在和以前不同,以前是传统算法,计算的容量有限。但是现在有深度学习这个模型。深度学习模型在语音降噪领域取得了显著的进展。这些模型的效果与模型的规模相关,越大的模型能够学习越多。如果想要实现更好的效果,关键是要确保足够的计算资源,所以这也依赖于硬件的不断发展。

3089dc7e5b6e34589cac2da901370d06.png

虽然电脑上的计算资源较为充足,但在可穿戴设备(如小米SE手表)上,需要不停地优化手机里的算法,以便应用到手表、耳机上。

834a7126773ab4fd336d87c7055722a6.png

比如在电脑上,内存资源用1M以上也无所谓。然而,在手机上,可用的资源较为有限,可能只有几百K的内存可供使用。而在IOT设备上,通常只能分配100K左右的内存。所以这是一个很大的挑战。

32c811c52a3dd48e13e3da27208c82d9.png

在手机使用中存在一些挑战,其中之一是关于麦克风的问题。很多人打游戏时会在两端握着这个手机,这会把麦克风堵住。如果在打游戏的同时还需要与队友通信,但麦克风被堵住了,对方就无法听到声音。因此,我们就会面临一些挑战,比如如何解决麦克风被堵住的问题。

在2020年,小米普及了立体声功能的手机,手机两端都有speaker的声音,所以声音和麦克风的距离非常近。这种近距离使信回比非常低,甚至可以达到-30dB的超低信回比。

在测试中,我们还遇到了一些超级混响环境下的自适应回声消除(AEC)问题。测试团队会拿着手机在封闭的玻璃房间里进行电话测试,这种环境下存在非常强的混响。这种反复的声音反射可能会导致滤波器收敛困难,给我们带来一定的挑战。

3ad4c57de72c0845254b0a9f15c424bd.png

在实际应用中,我们面临一些问题。例如,无线充电器的使用,当手机放在无线充电器上并打免提电话时,充电器的底部可能会堵住麦克风。因此,这时需要算法智能性地解决这个问题。

另外,耳机的使用也可能遇到类似的问题,例如不正确的佩戴方式会导致阵列算法的出现问题。为此,我们采用自适应波形形成而不是固定波束形成的方法。

除此之外,我们还面临其他挑战,例如风噪的处理,因为风噪对麦克风信号的影响是无规律的。因此,处理风噪也是一个相对困难的问题。

b0d679fdf20e1d60942358a0036e1697.png

在处理音频的过程中,我们还遇到了一些挑战。例如,在使用3G网络时,如果用户使用电信号码,那么在3G网络中可能会产生Tap噪声,这是我们需要解决的问题之一。

另外,在早期的手机中,通常会有收音功能。然而,电路的GND地线可能会引入一些噪声,这也需要我们处理。

-04-

通话降噪算法的落地实践

8cbbe3d18be1dc7114968b85e410a5a4.png

在处理计算量的问题时,芯片的发展起到了重要的作用,如MTK和展讯,都在开发内核。这些内核不断升级,包括内核数目和SIMD等功能也在不断提升。SIMD指令能够执行多个乘加任务,从而为我们提供更多的计算资源。

所以大家可以考虑一下算法芯片话的开发,这是一个比较有潜力的平台。未来,在计算能力上面也可以看到一代、二代、三代不停的成长。

62722125237f383c2d549e97d882e9bb.png

在将算法落地时,我们遇到的第二个问题是参数传递和更新的挑战。算法是有一些参数的,我们需要将这些参数顺利地传递给下层的DSP,以便更新算法参数。

我们遇到了一个耳机没有声音的问题。我们发现在测试时,没有测试到印度耳机的例子,我们只使用国内的耳机进行测试,而印度耳机的增益非常小。所以一旦出现问题,我们必须迅速解决。

因此,我们的算法一旦调整完毕,就需要立即更新参数。在这种情况下,设计的结构要求CPU能够快速将参数传递给DSP,以便迅速解决问题。这里提到的Orasis架构可以确保CPU与底层DSP之间实现快速通信。然而,我们也面临一些问题。例如,在通话过程中,客户可能抱怨通话质量不佳,但无法获得客户的隐私数据,所以我们会在客户自己的手机上保存一些数据。

29f350943f5677c5ccaab294f0d9d2f9.png

当用户反馈通话质量不好时,可以保存相关的数据Log。我们会跟踪这些日志,并直接与客户沟通,询问是否可以上传这些日志。我们会在本地保留这些数据,获取部分用户数据来做进一步的数据分析。

14ed5a5dc6212bb23fd537ac2d024d8e.png

在 TWS耳机上,除了使用传统的麦克风进行通信外,我们还可能使用 VPU进行通信。在耳机上,VPU的数据处理能力会被充分利用。

bd73450e16c0803a0e794a95d8ed292f.png

我们会发现VPU的质量并不理想,尤其是在高频方面存在污染。然而,它在低频方面的效果很好。为了解决这个问题,我们在这方面做了大量工作,把风噪处理得非常平稳。

541c37d8244c713588c6bba5e53c823b.png

在手表上也做了这种处理,比如怎么抑制混响。

在手机通话方面,也进行了一些处理,例如,只有手机的所有者能够拿起手机进行通话,其他人无法使用手机进行通话。

856cf43d22e7e468b00dc8e64faf8559.png

09a62f55adfdf01781954caa1cee82d9.png

我们通过声纹降噪的方法,利用前30秒或10秒甚至更短的数据来获取用户的声纹信息。然后,在通话过程中,将应用这个声纹信息来进行算法处理,以便抑制其他人的声音。

829624c8c3a7258c93b98fd5b83e8e1b.png

这是一些声纹降噪效果体验的演示。

0579eaa21db5a227c710c7fc1c1ddf33.png

通话降噪其实还有很多问题,我简单罗列一下。例如强非线性情况下的一些问题、内麦回声的问题等,这都是需要解决的。

-05-

通话降噪的未来展望

d686dff098b6687ae4e38de688fa62c3.png

未来展望方面,对于手机通话降噪,我们可以考虑基于低复杂度和低功耗的要求。这意味着可以结合传统算法和深度学习技术。在高计算资源的情况下,深度学习模型可能会成为主要的选择,并采用多级优化的方式来提高性能和效果。

8578b9da08dc949ac83486dc36f41a45.png

在低功耗的情况下,我做了简单的罗列。有些问题可以使用经典算法来处理,而对于深度学习方面,可以考虑以下几个方面:特征选择、网络结构、Loss 函数。但在实际应用中,可能会遇到小模型在图像上的表现较好,但在听觉感知上效果可能不理想的情况。

f6e1a2899bf2066b320c3592a43806a1.png

最后,我认为多模态降噪也是未来的一个方向。我今天的分享就到这里,谢谢大家。


165f22806a7911e3e50f2bb3519840d5.jpeg

LiveVideoStackCon是每个多媒体技术人的舞台,如果您在团队、公司中独当一面,在某一领域或技术拥有多年实践,并热衷于技术交流,欢迎申请成为LiveVideoStackCon的出品人/讲师。

扫描下方二维码,可查看讲师申请条件、讲师福利等信息。提交页面中的表单完成讲师申请。大会组委会将尽快对您的信息进行审核,并与符合条件的优秀候选人进行沟通。

b4e3233b424f76b13a1a22cbae8e03d6.jpeg

扫描上方二维码 

填写讲师申请表单

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/25685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【博客690】监控进程的major page faults和minor page faults

监控进程的major page faults和minor page faults 场景 有时候遇到机器没有性能瓶颈,但是进程出现性能瓶颈,这时候往往需要进程级别的监控 监控手段:process_exporter https://github.com/ncabatoff/process-exporter 监控相关指标&#xff…

HTTP——九、基于HTTP的功能追加协议

HTTP 一、基于HTTP的协议二、消除HTTP瓶颈的SPDY1、HTTP的瓶颈Ajax 的解决方法Comet 的解决方法SPDY的目标 2、SPDY的设计与功能3、SPDY消除 Web 瓶颈了吗 三、使用浏览器进行全双工通信的WebSocket1、WebSocket 的设计与功能2、WebSocket协议 四、期盼已久的 HTTP/2.01、HTTP/…

Maven发布项目到Nexus私服

项目pom配置 在项目pom.xml中文件中的仓库配置&#xff0c;Nexus私服如何搭建在这里不介绍了可自行百度。 <distributionManagement><repository><id>releases</id><name>Nexus Release Repository</name><url>http://私服地址:34…

CS61B Spring 2021 proj2 gitlet

Gitlet 项目简介整体结构对象概念&#xff08;object concept&#xff09;追踪文件&#xff08;track file&#xff09;分支管理&#xff08;branch management&#xff09;持久化目录结构&#xff08;folder structure&#xff09; 命令功能与具体实现initaddcommitrmloggloba…

深入探索Python数据容器:绚丽字符串、神奇序列切片与魔幻集合奇遇

一 数据容器&#xff1a;str(字符串) 1.1 字符串初识 字符串也是数据容器的一员&#xff0c;字符串是一种数据容器&#xff0c;用于存储和处理文本数据。字符串是字符的容器&#xff0c;一个字符串可以存放任意数量的字符&#xff0c;可以包含字母、数字、标点符号、空格等字…

微信小程序开发【从0到1~入门篇】2023.08

一个小程序主体部分由三个文件组成&#xff0c;必须放在项目的根目录&#xff0c;如下&#xff1a; 文件必须作用app.js是小程序逻辑app.json是小程序公告配置app.wxss否小程序公告样式表 3. 小程序项目结构 一个小程序页面由四个文件组成&#xff0c;分别是&#xff1a; 文…

Swintransformer模型的优化

SwinTransformer模型优化 文章目录 SwinTransformer模型优化1.SwinTransformer概述2.性能瓶颈分析3.模型优化3.1.transpose消除3.2.更好的layergroup3.1.1.SliceOp3.1.2.SqueezeOp3.1.3.weight切分 4.优化效果 1.SwinTransformer概述 自从Transformer在NLP任务上取得突破性的进…

20天突破英语四级高频词汇——第②天

2&#xfeff;0天突破英语四级高频词汇~第2天加油(ง •_•)ง&#x1f4aa; &#x1f433;博主&#xff1a;命运之光 &#x1f308;专栏&#xff1a;英语四级高频词汇速记 &#x1f30c;博主的其他文章&#xff1a;点击进入博主的主页 目录 2&#xfeff;0天突破英语四级高…

Bert详细学习及代码实现详解

BERT概述 BERT的全称是Bidirectional Encoder Representation from Transformers&#xff0c;即双向Transformer的Encoder&#xff0c;因为decoder是不能获要预测的信息的。在大型语料库&#xff08;Wikipedia BookCorpus&#xff09;上训练一个大型模型&#xff08;12 层到 …

【基础IO】文件系统 {磁盘的物理结构,存储结构,逻辑结构;CHS 和 LBA 寻址方式;磁盘分区和块组;文件inode;软硬链接}

文件系统 文件分为&#xff1a; 内存文件&#xff1a;被进程打开的文件&#xff0c;文件被加载到内存中供进程快速读写。磁盘文件&#xff1a;没有被打开的文件&#xff0c;保存在磁盘上。磁盘文件被分门别类的存储和管理&#xff0c;用于支持更好的存取。 提示&#xff1a; …

华为发布数字资产继承功能

在华为开发者大会2023&#xff08;HDC.Together&#xff09;上&#xff0c;华为常务董事、终端BG CEO、智能汽车解决方案BU CEO余承东正式发布了数字资产继承功能&#xff0c;HarmonyOS提供了安全便捷的数字资产继承路径。 在鸿蒙世界中&#xff0c;我们每个人在每台设备、应用…

复原 IP 地址——力扣93

文章目录 题目描述回溯题目描述 回溯 class Solution{public:static constexpr int seg_count=4<

第6集丨Vue 江湖 —— Class 与 Style 样式绑定

目录 一、class绑定1.1 字符串1.2 数组1.3 对象1.4 完整案例 二、style绑定2.1 案例2.2 效果 操作元素的 class 列表和内联样式是数据绑定的一个常见需求。因为它们都是 attribute&#xff0c;所以我们可以用 v-bind 处理它们&#xff1a;只需要通过表达式计算出字符串结果即可…

Typescript - 索引签名

目录 1&#xff0c;什么是索引签名1&#xff0c;js 中使用对象的属性2&#xff0c;ts 中的索引签名3&#xff0c;扩展索引签名定义的类型 2&#xff0c;与 Record 对比3&#xff0c;遇到的问题1&#xff0c;索引 key 的类型问题&#xff0c;keyof2&#xff0c;索引 key 的类型问…

uni-app:实现表格多选及数据获取

效果&#xff1a; 代码&#xff1a; <template><view><scroll-view scroll-x"true" style"overflow-x: scroll; white-space: nowrap;"><view class"table"><view class"table-tr"><view class&quo…

mysql高级三:sql性能优化+索引优化+慢查询日志

内容介绍 单表索引失效案例 0、思考题&#xff1a;如果把100万数据插入MYSQL &#xff0c;如何提高插入效率 &#xff08;1&#xff09;关闭自动提交&#xff0c;只手动提交一次 &#xff08;2&#xff09;删除除主键索引外其他索引 &#xff08;3&#xff09;拼写mysql可以执…

Typescript中的元组与数组的区别

Typescript中的元组与数组的区别 元组可以应用在经纬度这样明确固定长度和类型的场景下 //元组和数组类似&#xff0c;但是类型注解时会不一样//元组赋值的类型、位置、个数需要和定义的类型、位置、个数完全一致&#xff0c;不然会报错。 // 数组 某个位置的值可以是注解中的…

新能源电车交流充电桩控制主板的安全性维度

你是否想过&#xff0c;交流充电桩主板的安全性有多重要?它不仅关乎充电设备的寿命&#xff0c;还关乎电网的安全。今天我们就来探讨一下&#xff0c;如何从多个维度保证交流充电桩主板的安全性。 首先&#xff0c;交流充电桩主板采用多重安全保护技术&#xff0c;可以有效地保…

SM2算法的抗侧信道攻击

SM2 算法中底层模块抗侧信道 标量乘 ( [ k ] G [k]G [k]G) 运算过程中需要用到大量的倍点运算与点加运算。传统倍点运算与点加运算之间由于需要的运算次数不同&#xff0c;功耗存在明显区别&#xff0c;攻击者可以通过功耗波形特征分析密钥信息。传统算法如下图所示&#xff1a…

11. 使用tomcat中碰到的一些问题

文章目录 问题一&#xff1a;Tomcat的startup.bat启动后出现乱码问题二&#xff1a;一闪而退之端口占用问题三&#xff1a;非端口问题的一闪而退问题四&#xff1a;服务器的乱码和跨域问题问题五: 在tomcat\webapps\下创建文件夹为什么tomcat重启就会丢失问题六&#xff1a;Tom…