ICASSP 2023 | 解密实时通话中基于 AI 的一些语音增强技术

news2025/1/18 6:56:34

动手点关注

41d1469c49b52054df4def5fc81b22fc.gif

干货不迷路

背景介绍

实时音视频通信 RTC 在成为人们生活和工作中不可或缺的基础设施后,其中所涉及的各类技术也在不断演进以应对处理复杂多场景问题,比如音频场景中,如何在多设备、多人、多噪音场景下,为用户提供听得清、听得真的体验。作为 RTC 方案中不可或缺的技术,语音增强技术正从传统的基于统计学习的方案向基于深度学习的方案融合演进,利用 AI 技术,可以在语音降噪、回声消除、干扰人声消除等方面实现更好的语音增强效果,为用户提供更舒适的通话体验。

作为语音信号处理研究领域的旗舰国际会议,ICASSP (International Conference on Acoustics, Speech and Signal Processing) 一直代表着声学领域技术最前沿的研究方向。ICASSP 2023 收录了多篇和音频信号语音增强算法相关的文章,其中,火山引擎 RTC 音频团队共有 4 篇研究论文被大会接收,论文方向包括特定说话人语音增强、回声消除多通道语音增强、音质修复主题。本文将介绍这 4 篇论文解决的核心场景问题和技术方案,分享火山引擎 RTC 音频团队在语音降噪、回声消除、干扰人声消除领域的思考与实践。

《基于频带分割循环神经网络的特定说话人增强》

论文地址:

https://ieeexplore.ieee.org/abstract/document/10097252

实时特定说话人语音增强任务有许多问题亟待解决。首先,采集声音的全频带宽度提高了模型的处理难度。其次,相比非实时场景,实时场景下的模型更难定位目标说话人,如何提高说话人嵌入向量和语音增强模型的信息交互是实时处理的难点。受到人类听觉注意力的启发,火山引擎提出了一种引入说话人信息的说话人注意力模块(Speaker Attentive Module,SAM),并将其和单通道语音增强模型-频带分割循环神经网络(Band-split Recurrent Neural Network,BSRNN) 融合,构建特定人语音增强系统来作为回声消除模型的后处理模块,并对两个模型的级联进行优化。

模型框架结构

频带分割循环神经网络(BSRNN)

41110b8fcef6f7107495647e5a5b8363.png

频带分割循环神经网络(Band-split RNN, BSRNN)是全频带语音增强和音乐分离的 SOTA 模型,其结构如上图所示。BSRNN 由三个模块组成,分别是频带分割模块(Band-Split Module)、频带序列建模模块(Band and Sequence Modeling Module)和频带合并模块(Band-Merge Module)。频带分割模块首先将频谱分割为 K 个频带,每个频带的特征通过批归一化(BN)后,被 K 个全连接层(FC)压缩到相同的特征维度 C 。随后,所有频带的特征被拼接为一个三维张量并由频带序列建模模块进一步处理,该模块使用 GRU 交替建模特征张量的时间和频带维度。经过处理的特征最后经过频带合并模块得到最后的频谱掩蔽函数作为输出,将频谱掩蔽和输入频谱相乘即可得到增强语音。我们在每一个频带序列建模模块后添加了说话人注意力模块以构建特定人语音增强模型。

说话人注意力机制模块 (SAM)

e9ee3ebd8e6a44ca91f722424c6293c5.png

说话人注意力模块(Speaker Attentive Module)的结构如上图。其核心思想是使用说话人嵌入向量 e 作为语音增强模型中间特征的吸引子,计算其和中间特征所有时间和频带上的相关度 s,称作注意力值。该注意力值将被用于对中间特征 h 进行缩放规整。其具体公式如下:

首先通过全连接和卷积将 e 和 h 变换为 k 和 q:

e68b554fb6bacd210a26b6cf30cfd1e0.png

k 和 q 相乘得到注意力值:

d44918e654c141ac43bce626b0c5698d.png

最后通过该注意力值缩放原始特征:

1256ecd5e87e139777bce7e96e75ce81.png

模型训练数据

关于模型训练数据,我们采用了第五届 DNS 特定说话人语音增强赛道的数据以及 DiDispeech 的高质量语音数据,通过数据清洗,得到约 3500 个说话人的清晰语音数据。在数据清洗方面,我们使用了基于 ECAPA-TDNN[1]说话人识别的预训练模型来去除语音数据中残留的干扰说话人语音,同时使用第四届 DNS 挑战赛第一名的预训练模型来去除语音数据中的残留噪声。在训练阶段,我们生成了超过 10 万条 4s 的语音数据,对这些音频添加混响以模拟不同信道,并随机和噪声、干扰人声混合,设置成一种噪声、两种噪声、噪声和干扰说话人以及仅有干扰说话人 4 种干扰场景。同时,为了模拟不同大小的输入,含噪语音和目标语音电平也会被随机缩放。

《融合特定说话人提取与回声消除技术方案》

论文地址: 

https://ieeexplore.ieee.org/abstract/document/10096411

回声消除一直是外放场景中一个极其复杂且至关重要的问题。为了能够提取出高质量的近端干净语音信号,火山引擎提出了一种结合信号处理与深度学习技术的轻量化回声消除系统。在特定说话人降噪(Personalized Deep Noise Suppression, pDNS ) 基础上,我们进一步构建了特定说话人回声消除(Personalized Acoustic Echo Cancellation, pAEC)系统,其包括一个基于数字信号处理的前处理模块、一个基于深度神经网络的两阶段模型和一个基于 BSRNN 和 SAM 的特定说话人语音提取模块。

5000df6a4d4f0958cce49064326451e5.png

特定说话人回声消除总体框架

基于数字信号处理线性回声消除的前处理模块

前处理模块主要包含两部分:时延补偿(TDC)和线性回声消除(LAEC),该模块均在子带特征上进行。

0f530e212838f9f99294349fe748ce1f.png

基于信号处理子带线性回声消除算法框架

时延补偿

TDC 基于子带互相关,其首先分别在每个子带中估计出一个时延,然后使用投票方法来确定最终时间延迟。

线性回声消除

LAEC 是一种基于 NLMS 的子带自适应滤波方法,由两个滤波器组成:前置滤波器(Pre-filter)和后置滤波器(Post-filter),后置滤波器使用动态步长进行自适应更新参数,前置滤波器是状态稳定的后置滤波器的备份。通过比较前置滤波器和后置滤波器的输出的残余能量,最终选择误差信号。

bb4e9aea6430c497578a34510dba0245.png

LAEC 处理流程图

基于多级卷积-循环卷积神经网络(CRN)的两阶段模型

为了减轻模型建模负担,我们主张将 pAEC 任务解耦为“回声抑制”和“特定说话人提取”两个任务。因此,后处理网络主要由两个神经网路模块组成:用于初步回声消除和噪声抑制的基于 CRN 的轻量级模块,以及用于更好的近端语音信号重建的基于 pDNS 的后处理模块。

第一阶段:基于CRN的轻量级模块

基于 CRN 的轻量级模块由一个频带压缩模块、一个编码器、两个双路径 GRU、一个解码器和一个频带分解模块组成。同时,我们还引入了一个语音活动检测(Voice Activity Detection, VAD)模块用于多任务学习,有助于提高对近端语音的感知。CRN 以压缩幅度作为输入,并输出初步的目标信号复数理想比掩码(cIRM)和近端 VAD 概率。

第二阶段:基于pDNS的后处理模块

这个阶段的 pDNS 模块包括了上述介绍的频带分割循环神经网络 BSRNN 和说话人注意力机制模块 SAM,级联模块以串联的方式接在轻量级 CRN 模块之后。由于我们的 pDNS 系统在特性说话人语音增强任务上达到了较为优异的性能,我们将一个预训练好的 pDNS 模型参数作为模型的第二阶段初始化参数,对前一阶段的输出进一步处理。

级联系统训练优化损失函数

我们对两阶段模型进行级联优化,让模型在第一阶段预测近端语音,在第二阶段预测近端特定说话人语音。同时,我们还引入了一个近端 VAD 罚项,增强模型对近端语音的感知。具体损失函数定义如下:

fc80159d31424d594671de4523757de5.png

其中, 分别对应模型第一阶段和第二阶段预测的 STFT 特征, 分别表示近端语音和近端特定说话人语音的 STFT 特征, 分别表示模型预测和目标 VAD 状态。

模型训练数据

为了使回声消除系统可以处理多设备,多混响,多噪音采集场景的回声,我们通过混合回声和干净语音,得到 2000+ 小时的训练数据,其中,回声数据使用 AEC Challenge 2023 远端单讲数据,干净语音来自 DNS Challenge 2023 和 LibriSpeech,用于模拟近端混响的 RIR 集合来自 DNS Challenge。由于 AEC Challenge 2023 远端单讲数据中的回声存在少量噪声数据,直接用这些数据作为回声容易导致近端语音失真,为了缓解这个问题,我们采用了一种简单但有效的数据清理策略,使用预训练的一个 AEC 模型处理远端单讲数据,将具有较高残余能量的数据识别为噪声数据,并反复迭代下图清洗流程。

808ed6eae8971306935780761bef0369.png

级联优化方案系统效果

这样的一套基于融合回声消除与特定说话人提取的语音增强系统在 ICASSP 2023 AEC Challenge 盲测试集 [2] 上验证了它在主客观指标上的优势——取得了 4.44 的主观意见分(Subjective-MOS)和 82.2%的语音识别准确率(WAcc)。

b877ea48a7981772fe9172d8ea234985.png

《基于傅立叶卷积注意力机制的多通道语音增强》

论文地址: 

https://ieeexplore.ieee.org/document/10095716

基于深度学习的波束权值估计是目前解决多通道语音增强任务的主流方法之一,即通过网络求解波束权值来对多通道信号进行滤波从而获得纯净语音。与传统波束形成算法求解空间协方差矩阵的原理类似,频谱信息和空间信息在波束权值的估计中也起着重要作用。然而,现有许多神经波束形成器都无法对波束权值进行最优估计。为处理这一挑战,火山引擎提出了一种傅里叶卷积注意力编码器(Fourier Convolutional Attention Encoder, FCAE),该编码器能在频率特征轴上提供全局感受野,加强对频率轴上下文特征的提取。同时,我们也提出了一种基于 FCAE 的卷积循环编解码器(Convolutional Recurrent Encoder-Decoder, CRED)的结构用来从输入特征中捕捉频谱上下文特征和空间信息。

模型框架结构

波束权值估计网络

0790cb62e9adbaffa3e95b1af1f16a65.png

该网络借助嵌入波束网络(Embedding and Beamforming Network,EaBNet)的结构范式,将网络分为嵌入模块和波束模块两个部分,嵌入模块用来提取聚合频谱和空间信息的嵌入向量,并将该嵌入向量送入波束部分导出波束权值。这里采用一个 CRED 结构来学习嵌入张量,多通道输入信号经过 STFT 变换后,送入一个 CRED 结构提取嵌入张量,该嵌入张量类似传统波束形成中的空间协方差矩阵,包含可区分语音和噪声的特征。嵌入张量经过 LayerNorm2d 结构,再经过两层堆叠的 LSTM 网络,最后通过一个线性层导出波束权值。我们对该波束权值作用于多通道输入频谱特征上,进行滤波求和操作,最后得到纯净语音谱,经过 ISTFT 变换即可得到目标时域波形。

CRED结构

f868923109d21c3efb328f1890244fea.png

我们采用的 CRED 结构如上图所示。其中,FCAE 为傅里叶卷积注意力编码器,FCAD 为与 FCAE 对称的解码器;循环模块采用深度前馈顺序记忆网络(Deep Feedward Sequential Memory Network,DFSMN)对序列的时序依赖进行建模,在不影响模型性能的基础上减小模型尺寸;跳连接部分采用串联的通道注意力(Channel Attention)和空间注意力(Spatial Attention)模块,用来进一步提取跨通道间的空间信息,并连接深层特征与浅层特征,方便信息在网路中的传输。

FCAE结构

811e08d8ab8258a18cd11a43d19a70dd.png

傅里叶卷积注意力编码器(FCAE)的结构如上图所示。该模块受傅里叶卷积算子[3]的启发,利用离散傅里叶变换在变换域上的任意一点的更新将会对原始域的信号产生全局影响的特点,对频率轴特征进行一维 FFT 变换,即可在频率轴上获得全局感受野,进而加强对频率轴上下文特征的提取。此外,我们引入了空间注意力模块和通道注意力模块,进一步增强卷积表达能力,提取有利的频谱-空间联合信息,增强网络对纯净语音和噪声可区分特征的学习。在最终表现上,该网络以仅 0.74M 的参数量取得了优异的多通道语音增强效果。

模型训练数据

数据集方面,我们采用了 ConferencingSpeech 2021 比赛提供的开源数据集,纯净语音数据包含 AISHELL-1、AISHELL-3、VCTK 以及 LibriSpeech(train-clean-360),挑选其中信噪比大于 15dB 的数据用于生成多通道混合语音,噪声数据集采用 MUSAN、AudioSet。同时,为了模拟实际多房间混响场景,通过模拟改变房间尺寸、混响时间、发声源,噪声源位置等方式将开源的数据与超过 5000 个房间脉冲响应进行卷积,最终生成 6 万条以上多通道训练样本。

《基于两阶段神经网络模型的音质修复系统》

论文地址:

https://ieeexplore.ieee.org/document/10094827

除了特定说话人增强,回声消除及多通道语音增强几个方向,火山引擎也在音质修复方向上做了一些尝试。实时通信过程中存在的各种失真会影响语音信号的质量,使语音信号的清晰度和可懂度下降。火山引擎提出了一个两阶段模型,该模型使用阶段性的分治策略来修复影响语音质量的多种失真。

模型框架结构

下图为两阶段模型整体框架构图,其中,第一阶段模型主要修复频谱缺失的部分,第二阶段模型则主要抑制噪声、混响以及第一阶段模型可能产生的伪影。

314c2cdffdd5d94f1be8b83c1cac1b6b.png

第一阶段模型:Repairing Net

整体采用深度复数卷积循环神经网络 (Deep Complex Convolution Recurrent Network, DCCRN)[4]架构,包括 Encoder、时序建模模块和 Decoder 三个部分。受图像修复的启发,我们引入了 Gate 复值卷积和 Gate 复值转置卷积代替 Encoder 和 Decoder 中的复值卷积和复值转置卷积。为了进一步提升音频修补部分的自然度,我们引入了 Multi-Period Discriminator和 Multi-Scale Discriminator 用于辅助训练。

第二阶段模型:Denoising Net

整体采用 S-DCCRN 架构,包括 Encoder、两个轻量级 DCCRN 子模块和 Decoder 三个部分,其中两个轻量级 DCCRN 子模块分别进行子带和全带建模。为了提升模型在时域建模方面的能力,我们将 DCCRN子 模块中的 LSTM 替换为 Squeezed Temporal Convolutional Module(STCM)。

模型训练数据

这里用来训练来音质修复的干净音频、噪声、混响均来自 2023 DNS 竞赛数据集,其中干净音频总时长为 750 小时,噪声总时长为 170 小时。在第一阶段模型的数据增广时,我们一方面利用全带音频与随机生成的滤波器进行卷积, 20ms 为窗长将音频采样点随机置零和对音频随机进行降采样来模拟频谱缺失缺陷,另一方面在音频幅度频与音频采集点上分别乘以随机尺度;在第二阶段的数据增广时,我们利用第一阶段已经生成的数据,再卷积各种类型的房间冲激响应得到不同混响程度的音频数据。

音频处理效果

在 ICASSP 2023 AEC Challenge中,火山引擎 RTC 音频团队,在通用回声消除 (Non-personalized AEC) 与特定说话人回声消除 (Personalized AEC) 两个赛道上荣获冠军,并在双讲回声抑制,双讲近端语音保护、近端单讲背景噪声抑制、综合主观音频质量打分及最终语音识别准确率等多项指标上显著优于其他参赛队伍,达到国际领先水平。

我们来看一下经过上述技术方案后,火山引擎 RTC 在不同场景下的语音增强处理效果。

不同信噪回声比场景下的回声消除

下面两个例子分别展示了回声消除算法在不同信号回声能量比例场景下处理前后的对比效果。

a4da334229e17de403ae1d244c6e574f.png

中等信回声比场景

超低信回比场景对回声消除的挑战性最大,此时我们不仅需要有效去除大能量的回声,还需要同时最大程度保留微弱的目标语音。如下样本中,女声为目标说话人语音,男生为非目标说话人语音(回声),目标语音几乎被非目标语音完全覆盖了。

9daaaf8b2912d2eee868c88e1647f0b7.png

超低信回声比场景

不同背景干扰说话人场景下的说话人提取

下面两个例子分别展示了特定说话人提取算法在噪音与背景人干扰场景下处理前后的对比效果。

如下样本中,特定说话人既有类似门铃的噪声干扰,又有背景人说话噪声干扰,仅使用 AI 降噪只能去除门铃噪声,因此还需要针对特定说话人进行人声消除。

0ccd0fc113fd1b043f628e8d7ef5d122.png

目标说话人与背景干扰人声及噪音

当目标说话人声和背景干扰人声的声纹特征很接近时,此时对于特定说话人提取算法的挑战更大,更能考验特定说话人提取算法鲁棒性。如下样本中,目标说话人和背景干扰人声是两个相似的女声。

3b39b3424dc54ddcece4c73a4091e58b.png

目标女声与干扰女声混合

总结与展望

上述介绍了火山引擎 RTC 音频团队基于深度学习在特定说话人降噪,回声消除,多通道语音增强等方向做出的一些方案及效果,未来场景依然面临着多个方向的挑战,如语音降噪如何自适应噪音场景,音质修复如何在更广范围对音频信号进行多类型修复以及怎么样各类终端上运行轻量低复杂度模型,这些挑战点也将会是我们后续重点的研究方向。

参考文献

[1] B. Desplanques, J. Thienpondt, and K. Demuynck, “ECAPATDNN: Emphasized Channel Attention, Propagation and Aggregation in TDNN Based Speaker Verification” In Interspeech, 2020, pp. 3830–3834.

[2] 盲测试集链接:https://github.com/microsoft/AEC-Challenge/tree/main/datasets/blind_test_set_icassp2023

[3] Chi L, Jiang B, Mu Y. Fast Fourier Convolution. Advances in Neural Information Processing Systems. 2020(3) : 4479 – 4488.

[4] Hu Y, Liu Y, Lv S, et al. DCCRN: Deep Complex Convolution Recurrent Network for Phase-aware Speech Enhancement[J]. arXiv preprint arXiv:2008.00264, 2020.

加入我们

火山引擎 RTC,致力于提供全球互联网范围内高质量、低延时的实时音视频通信能力,帮助开发者快速构建语音通话、视频通话、互动直播、转推直播等丰富场景功能,目前已覆盖互娱、教育、会议、游戏、汽车、金融、IoT 等丰富实时音视频互动场景,服务数亿用户。

音频开发工程师和音频资深算法工程师热招中!扫描下方二维码,或点击阅读原文投递,欢迎同学们加入!

9b2fd803b740263814c980c294a6746a.png

a74b35c3ee324c211b32d2477bd0a32e.png 点击「阅读原文」一键投递!7c936d6aa25a4936e3f56e08e9e8aaf7.png 点击「阅读原文」一键投递! 点击「阅读原文」一键投递!c96db976b35d02bea610a5172bed1d81.png 点击「阅读原文」一键投递!0cadf67dbfd95c4dc47bfae8d8a6b3fa.png 点击「阅读原文」一键投递!

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

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

相关文章

【ElementUI 表单校验】一个 el-form-item 下多个表单校验(循环校验)

前端项目开发中,表单的应用是必不可少的,不管使用的原生、还是框架如:ElementUI、Ant Design Vue 等。基本的表单应用比较简单,按照文档中的描述使用即可。 官网地址 如下图: 使用 ElementUI 中的表单代码如下&…

国产数据库|GBase 8s 安装卸载与简单使用

作者 | JiekeXu 来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT) 如需转载请联系授权 | (个人微信 ID:JiekeXu_DBA) 大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来看看国产数据库|GBase 8s 安装卸载与简单使用&#…

POSTGRESQL SERVERLESS 是POSTGRESQL 数据库的未来 (译)

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

Web3能拯救失落的互联网人吗?

随着互联网的发展,人们逐渐感受到了中心化互联网的局限性和不足之处。 Web3 技术作为一种去中心化的互联网形态,为用户提供了更安全、透明和个人主权的在线体验。本文将探讨 Web3 是否能拯救那些在中心化互联网中感到失落的人们,让我们一起探…

LVS负载均衡——DR模式

一、LVS-DR模式 LVS-DR(Linux Virtual Server Director Server)工作模式,是生产环境中最常用的一 种工作模式。 LVS-DR 模式,Director Server 作为群集的访问入口,不作为网关使用节点 Director Server 与 Real Serve…

软考A计划-电子商务设计师-模拟试题卷二

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

【报告】当“无线通信”遇到“图神经网络”——简单理解

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 课程报告,随便做的,仅供参考~ B站视频:https://www.bilibili.com/video/BV1tM4y1v7t4/ 以下格式默认为:先放图,再放文字 前面的同学介绍了传统方法和经典…

$1$驱动开发

目录 1.驱动大纲: 2.单片机开发属于嵌入式开发吗? 3.RAM裸机代码和驱动有什么区别? 4.Linux系统的组成 5.宏内核、微内核 6.驱动移植 1.驱动大纲: (1)内核模块 (2)字符设备驱…

ArchGuard Co-mate:一次关于大语言模型与架构治理、架构设计的探索

在过去的几个月里,为了探索了 LLM 结合 SDLC、BizDevOps 的可能性,我们(Thoughtworks 开源社区)创建了 ClickPrompt、 AutoDev、DevTi 等一系列的开源项目。从个人的经验来看,未来越来越多的应用将围绕于 LLMCore 设计…

400万总奖金!打一场大厂算法赛事

Datawhale赛事 主办:科大讯飞,伙伴:Datawhale 5月6日,伴随科大讯飞星火认知大模型的发布,2023年度 iFLYTEK A.I. 开发者大赛也正式开启。本届大赛的总奖金池超400万元,除此外还将进一步开放海量数据与核心…

如何使用ArcGIS制作三维地形图

ArcGIS作为专业的GIS软件,不仅可以制作二维地图,制作三维地图也是不在话下,通常我们使用ArcScene来制作三维地图,这里为大家介绍一下制作三维地图的方法,希望能对你有所帮助。 预处理数据 将准备好的矩形面、矩形线和…

Kibana:使用 Kibana 自带数据进行可视化(一)

在今天的练习中,我们将使用 Kibana 自带的数据来进行一些可视化的展示。希望对刚开始使用 Kibana 的用户有所帮助。 前提条件 如果你还没有安装好自己的 Elastic Stack,你可以参考如下的视频来开启 Elastic Stack 并进行下面的练习。你可以开通阿里云检…

接着首发!2023全国1卷数学压轴题解析

早点关注我,精彩不错过! 压轴题原题如下: 以下是压轴题速解,上次突出一个细,这次,自己挑战了一把快! 去年偶然得闲,在高考当天晚上陷入了少年的回忆,重做了一把高考数学压…

“站在后天看明天”:华为给金融广厦架起数字栋梁

在中国古建筑中,有个重要概念,叫做“栋梁”。其中“栋”是指房屋的东西向正梁,起到承担房屋荷载的作用;“梁”则是支撑楼板和其他承重结构的南北向竖梁,起到构筑受重面,支撑屋顶飞檐斗拱的作用。 精彩绝伦、…

如何安装和使用 Hugging Face Unity API

Hugging Face Unity API 提供了一个简单易用的接口,允许开发者在自己的 Unity 项目中方便地访问和使用 Hugging Face AI 模型,已集成到 Hugging Face Inference API 中。本文将详细介绍 API 的安装步骤和使用方法。 安装步骤 打开您的 Unity 项目导航至菜…

2核4G服务器阿里云和腾讯云性能测试对比

阿里云轻量应用服务器2核4G4M带宽优惠价297.98元12个月,腾讯云轻量2核4G5M服务器168元一年,628元3年,2核4G轻量应用服务器阿里云和腾讯云怎么选择?哪个性能比较好?阿腾云分享轻量应用服务器2核4G配置阿里云和腾讯云价格…

3A(3000mA)输出电流比例阀控制器

0.5A(500mA)、0.8A(800mA)、1A(1000mA)、1.5A(1500mA)、2A(2000mA)、2.5A(2500mA)、3A(3000mA)、3.2A(3200mA)等电流输出控制比例阀放大器是用于控制液压系统中的比例阀线圈驱动阀芯运动。它主要由阀体、驱动线圈和放大器。 比例阀是控制方向、流量或压力的元件,它的…

chatgpt赋能python:Python怎么1加1等于2

Python怎么1加1等于2 Python是一种高级编程语言,通常用于快速开发应用程序,处理数据和进行科学计算。Python是一门易于学习的语言,学习它的基础非常简单。 介绍 Python在计算机科学领域已经有超过20年的历史,它在很多领域都有广…

【新版】系统架构设计师 - 项目管理

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 项目管理考点摘要进度管理工作分解结构(WBS)关键路径法及几个概念箭线图法(双代号网络图,ADM)前导图法(单代号网络图&#x…

Java利用函数计算工资

1 问题 在平时里,我们经常用到计算问题,很多人只会在main函数里赋值计算,这样计算出的数据没有对象,很混乱。因此,用创建一个类,来进行批量计算,会给我们带来很大便利。 2 方法 (1) 先创建一个w…