论文翻译:2022_DeepFilterNet2: Towards Real-Time Speech Enhancement On Embedded Devices For Fullband Audio
博客地址:凌逆战
论文地址:DeepFilternet2: 面向嵌入式设备的全波段音频实时语音增强
论文代码:https://github.com/Rikorose/DeepFilterNet
引用格式:Schröter H, Rosenkranz T, Maier A. DeepFilterNet2: Towards Real-Time Speech Enhancement on Embedded Devices for Full-Band Audio[J]. arXiv preprint arXiv:2205.05474, 2022.
摘要
基于深度学习的语音增强技术已经取得了巨大的进步,最近还扩展到了全频带音频(48 kHz)。然而,许多方法都有相当高的计算复杂度,需要大的时间缓冲来实时使用,例如由于时间卷积或注意力。这两者都使得这些方法在嵌入式设备上不可行。这项工作进一步扩展了DeepFilterNet,利用语音的谐波结构实现了有效的语音增强。训练过程、数据增强和网络结构中的几项优化使SE性能达到了最先进的水平,同时在笔记本Core-i5 CPU上将实时因子降低到0.04。这使得算法可以在嵌入式设备上实时运行。DeepFilterNet框架可以在开源许可下获取。
索引术语:DeepFilterNet,语音增强,全波段,两级建模
1 引言
最近,基于深度学习的语音增强已经扩展到全频带(48 kHz)[1,2,3,4]。大多数SOTA方法通过对噪声音频信号进行短时傅里叶变换(STFT)在频域进行SE,并在类似于深度神经网络(DNN)的U-Net中对信号进行增强。然而,许多方法在乘法累积操作(MAC)和内存带宽方面有相对较大的计算需求。也就是说,较高的采样率通常需要较大的FFT窗口,从而产生大量的频率bin,这直接转化为更多的MAC。
PercepNet[1]通过使用三角形ERB(等效矩形带宽)滤波器组解决了这个问题。在这里,基于STFT的频率bin被对数压缩到32个ERB波段。然而,这只允许实值处理,这就是为什么PercepNet额外应用梳状过滤器来更好地增强语音的周期性成分。相反,FRCRN[3]将频率bin分成3个通道,以减少频率轴的大小。这种方法允许对复数比例掩码(CRM)进行复数的处理和预测。类似地,DMF-Net[4]使用多波段方法,其中频率轴被分成3个波段,由不同的网络分别处理。一般来说,与单阶段方法相比,像DMF-Net这样的多阶段网络最近展示了它们的潜力。例如,GaGNet[5]在特征提取阶段之后使用两个所谓的glance和gaze阶段。glance模块在粗量级域上工作,而gaze模块在复数域上处理频谱,允许以更精细的分辨率重建频谱。
在这项工作中,我们扩展了[2]的工作,[2]也分为两个阶段。DeepFilterNet利用了由一个周期分量和一个随机分量组成的语音模型。第一阶段在ERB域中工作,只增强语音包络,而第二阶段使用深度滤波[6,7]来增强周期性成分。在本文中,我们描述了在Voicebank+Demand[8]和深度噪声抑制(DNS) 4盲测挑战数据集[9]上实现SOTA性能的几个优化。此外,这些优化提高了运行时性能,使得在树莓派4上实时运行模型成为可能。
2 方法
2.1 信号模型和DeepFilterNet框架
我们假设噪音和语音是不相关的,比如
$$公式1:x(t)=s(t)*h(t)+n(t)$$
其中$s(t)$是纯净语音信号,$n(t)$是加性噪声,$h(t)$是模拟混响环境的房间脉冲响应,产生噪声混合物$x(t)$。这直接转化为频域
$$公式2:X(k,f)=S(k,f)*H(k,f)+N(k,f)$$
其中$X(k, f)$为时域信号$X(t)$的STFT表示,$k, f$为时间和频率指标。
在本研究中,我们采用了DeepFilterNet[2]的两阶段去噪过程。也就是说,第一阶段在量级范围内运行,并预测实值增益。整个第一阶段在一个压缩的ERB域内进行,目的是在模拟人耳听觉感知时减少计算复杂性。因此,第一阶段的目的是在粗频率分辨率下增强语音包络。第二阶段利用深度滤波在复数域内工作[7,6],试图重构语音的周期性。[2]表明,深度滤波(DF)通常优于传统的复数比掩模(CRMs),特别是在very noisy的条件下。
组合SE过程可以表述如下。编码器$F_{enc}$将ERB和复数特征编码到一个embedding $\varepsilon$中。
$$公式3:\varepsilon (k)=F_{enc}(X_{erb}(k,b),X_{df}(k,f_{erb}))$$
接下来,第一阶段预测实值增益$G$并增强语音包络,从而得到短时频谱$Y_G$。
$$公式4:\begin{aligned}
G_{erb}(k, b) &=\mathcal{F}_{erb\_dec}(\mathcal{E}(k)) \\
G(k, f) &=\operatorname{interp}(G_{{erb }}(k, b)) \\
Y_G(k, f) &=X(k, f) \cdot G(k, f)
\end{aligned}$$
最后在第二阶段,$F_{df\_dec}$预测了$N$阶的DF系数$C_{df}^N$,然后将其线性应用于$Y_G$。
$$公式5:\begin{aligned}
C_{\mathrm{df}}^N\left(k, i, f_{\mathrm{df}}\right) &=\mathcal{F}_{\mathrm{df} d e c}(\mathcal{E}(k)) \\
Y\left(k, f^{\prime}\right) &=\sum_{i=0}^N C\left(k, i, f^{\prime}\right) \cdot X(k-i+l, f)
\end{aligned}$$
$l$是DF look-ahead。如前所述,第二级只工作在频频谱的较低部分,频率为$f_{df}$= 5 kHz。DeepFilterNet2框架如图1所示。

图1所示 DeepFilterNet2语音增强过程的概述
2.2 训练流程
在DeepFilterNet[2]中,我们使用了exponential learning rate schedule和fixed weight decay。在这项工作中,我们还使用了一个学习率warmup 3个epoch,然后是cosine decay。最重要的是,我们在每次迭代时更新学习率,而不是在每个阶段之后更新。类似地,我们用不断增加的cosine schedule来安排权值衰减,从而为训练的后期阶段带来更大的正则化。最后,为了实现更快的收敛,特别是在训练的开始阶段,我们使用batch scheduling[10],batch size从8开始,逐渐增加到96。调度方案如图2所示。

图2所示 用于训练的学习率、权重衰减和batch size
2.3 多目标损失
我们采用[2]的频谱损失$L_{spec}$。此外,使用多分辨率(MR)频谱损失,其中增强频谱$Y(k, f)$首先转换为时域,然后计算多个stft,窗口从5 ms到40 ms[11]。为了传播这种损失的梯度,我们使用pytorch STFT/ISTFT,它在数值上足够接近于Rust中实现的原始DeepFilterNet处理循环。
$$公式6:\mathcal{L}_{\mathrm{MR}}=\sum_i\left\|\left|Y_i^{\prime}\right|^c-\left|S_i^{\prime}\right|^c\right\|^2\left\|\left|Y_i^{\prime}\right|^c e^{j \varphi_Y}-\left|S_i^{\prime}\right|^c e^{j \varphi_S}\right\|^2$$
其中$Y_i'= STFT_i(y)$为预测TD信号y的第$i$个窗口大小为{5,10,20,40}ms的STFT, $c = 0.3$为压缩参数[1]。与DeepFilterNet[2]相比,我们去掉了$\alpha$损失项,因为所使用的启发式仅是局部语音周期性的较差近似。此外,DF可以增强非语音部分的语音,并可以通过将系数$t_0$的实部设置为1,将其余系数设置为0来禁用其效果。多目标综合损失为:
$$公式7:L=\lambda_{spec}L_{spec}+\lambda_{ML}L_{ML}$$
2.4 数据增强
DeepFilterNet在深度噪声抑制(DNS) 3挑战数据集[12]上进行训练,而我们在DNS4[9]的英语部分上对DeepFilterNet2进行训练,因为DNS4[9]包含更多的全波段噪声和语音样本。
在语音增强中,通常只减少背景噪声,在某些情况下还会减少混响[1,11,2]。在这项工作中,我们将SE的概念进一步扩展到下降。因此,我们区分了动态数据预处理管道中的增强和失真。增强应用于语音和噪声样本,目的是进一步扩展网络在训练中观察到的数据分布。另一方面,失真只应用于语音样本,用于噪声混合的创建。清晰语音目标不受失真变换的影响。因此,DNN学会重建原始的、未失真的语音信号。目前,DeepFilterNet框架支持以下随机增强
- 随机二阶滤波[13]
- 改变Gain
- 通过二阶滤波器的均衡器
- 重采样的速度和音高变化[13]
- 添加彩色噪声(不用于语音样本)
除去噪外,DeepFilterNet还将尝试恢复以下失真:
- 混响:通过衰减房间传递函数,目标信号将包含更少的混响。
- 裁剪信噪比为[20,0]dB的伪影。
2.5 DNN
我们保留了DeepFilterNet[2]的一般卷积U-Net结构,但做了以下调整。最终的架构如图3所示。
1、Unification of the encoder。ERB和复数特征的卷积现在都在编码器中处理,连接,并传递到分组线性(GLinear)层和单个GRU。
2、Simplify Grouping。以前,线性层和GRU层的分组是通过独立的更小的层实现的,这导致了相对较高的处理开销。在DeepFilterNet2中,只有线性层在频率轴上分组,通过单一矩阵乘法实现。GRU hidden dim被减少到256。我们还在DF解码器的输出层应用分组,激励相邻频率足以预测滤波器系数。这大大减少了运行时间,而只增加了少量flop的数量。
3、Reduction of temporal kernels。虽然时间卷积(TCN)或时间注意已经成功地应用于SE,但它们在实时推理时需要时间缓冲。这可以通过环形缓冲区有效地实现,然而,缓冲区需要保存在内存中。这种额外的内存访问可能会导致带宽成为限制瓶颈,尤其对于嵌入式设备来说可能是这种情况。因此,我们减小了卷积的核大小并将卷积从2*3转置到1*3,即频率轴上的1D。现在只有输入层通过因果3*3卷积合并了时间上下文。这大大减少了实时推理期间使用的时间缓冲区。
4、Depthwise pathway convolutions。当使用可分离卷积时,大量的参数和flop位于1*1卷积处。因此,在路径卷积(PConv)中添加分组可以大大减少参数,同时不会损失任何显著的SE性能。

图3 DeepFilterNet2架构
2.6 后处理
我们采用了Valin等人[1]首先提出的后滤波器,目的是略微过衰减有噪声的TF bin,同时为噪声较小的频点增加一些增益。我们在第一阶段的预测gains上执行此操作
$$公式8:\begin{aligned}
G^{\prime}(k, b) &\leftarrow G(k, b)) \cdot \sin \left(\frac{\pi}{2} G(k, b)\right) \\
G(k, b) & \leftarrow \frac{(1+\beta) \cdot G(k, b)}{1+\beta+G^{\prime}(b, k)}
\end{aligned}$$
3 实验
3.1 实现细节
如2.4节所述,我们在DNS4数据集上训练DeepFilterNet2,总共使用超过500小时的全波段纯净语音(大约)。150 H的噪声以及150个真实的和60000个模拟的HRTFs。我们将数据分为训练集、验证集和测试集(70%、15%、15%)。Voicebank集是分离说话人独占,与测试集没有重叠。我们在Voicebank+Demand测试集[8]和DNS4盲测试集[9]上评估了我们的方法。我们用AdamW对模型进行了100个epoch的训练,并根据验证损失选择最佳模型。
在这项工作中,我们使用20毫秒的窗口,50%的重叠,以及两个帧的look-ahead,导致总体算法延迟40毫秒。我们取32个ERB波段,$f_{DF}$= 5kHz,DF阶数$N = 5$,look-ahead = 2帧。损失参数$\lambda_{spec}=1e3$和$\lambda_{spec}=5e2$的选择使两个损失的数量级相同。源代码和一个预先训练的DeepFilterNet2可以在https://github.com/Rikorose/DeepFilterNet获得。
3.2 结果
我们使用Valentini语音库+需求测试集[8]来评估DeepFilterNet2的语音增强性能。因此,我们选择WB-PESQ [19], STOI[20]和综合指标CSIG, CBAK, COVL[21]。表1显示了DeepFilterNet2与其他先进(SOTA)方法的比较结果。可以发现,DeepFilterNet2实现了sota级别的结果,同时需要最小的每秒乘法累积运算(MACS)。在DeepFilterNet(第2.5节)上,参数的数量略有增加,但该网络能够以两倍多的速度运行,并获得0.27的高PESQ评分。GaGNet[5]实现了类似的RTF,同时具有良好的SE性能。然而,它只在提供整个音频时运行得很快,由于它使用了大的时间卷积核,需要大的时间缓冲区。FRCRN[3]在大多数指标上都能获得最好的结果,但具有较高的计算复杂度,这在嵌入式设备上是不可实现的。
表1 Voicebank+Demand测试集的客观结果。实时因子(RTF)是在笔记本Core i5-8250U CPU上通过5次运行的平均值来测量的。
未报告的相关工作表示为 -

- a、度量和RTF测量的源代码和权重提供在https://github.com/xiph/rnnoise
- b、注意,RNNoise运行单线程
- c、RTF测量的源代码提供在https://github.com/huyanxin/DeepComplexCRN
- d、复合和STOI指标由相同的作者在[16]中提供
- e、度量和RTF测量的源代码和权重提供在:https://github.com/hit-thusz-RookieCJ/FullSubNet-plus
- f、RTF测量的源代码提供在:https://github.com/Andong-Li-speech/GaGNet
表2显示了DNSMOS P.835[22]在DNS4盲试验集上的结果。虽然deepfilternet[2]不能提高语音质量平均意见评分(SIGMOS),但使用DeepFilterNet2我们也获得了良好的结果,对于背景和总体MOS值。此外,DeepFilterNet2相对接近用于选择纯净语音样本来训练DNS4基线NSNet2 (SIG=4.2, BAK=4.5, OVL=4.0)[9]的最小DNSMOS值,进一步强调了其良好的SE性能。

4 结论
在这项工作中,我们提出了一个低复杂度的语音增强框架DeepFilterNet2。利用DeepFilterNet的感知方法,我们能够进一步应用一些优化,从而提高SOTA SE的性能。由于其轻量级的架构,它可以在树莓派4上以0.42的实时系数运行。在未来的工作中,我们计划将语音增强的想法扩展到其他增强,比如纠正由于当前房间环境造成的低通特性。
5 参考
[1] Jean-Marc Valin, Umut Isik, Neerad Phansalkar, Ritwik Giri, Karim Helwani, and Arvindh Krishnaswamy, A Perceptually-Motivated Approach for Low-Complexity, Real-Time Enhancement of Fullband Speech, in INTERSPEECH 2020, 2020.
[2] Hendrik Schr oter, Alberto N Escalante-B, Tobias Rosenkranz, and Andreas Maier, DeepFilterNet: A low complexity speech enhancement framework for fullband audio based on deep filtering, in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2022.
[3] Shengkui Zhao, Bin Ma, Karn N Watcharasupat, and Woon-Seng Gan, FRCRN: Boosting feature representation using frequency recurrence for monaural speech enhancement, in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2022.
[4] Guochen Yu, Yuansheng Guan, Weixin Meng, Chengshi Zheng, and Hui Wang, DMF-Net: A decoupling-style multi-band fusion model for real-time full-band speech enhancement, arXiv preprint arXiv:2203.00472, 2022.
[5] Andong Li, Chengshi Zheng, Lu Zhang, and Xiaodong Li, Glance and gaze: A collaborative learning framework for single-channel speech enhancement, Applied Acoustics, vol. 187, 2022.
[6] Hendrik Schr oter, Tobias Rosenkranz, Alberto Escalante Banuelos, Marc Aubreville, and Andreas Maier, CLCNet: Deep learning-based noise reduction for hearing aids using complex linear coding, in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), 2020.
[7] Wolfgang Mack and Emanu el AP Habets, Deep Filtering: Signal Extraction and Reconstruction Using Complex Time-Frequency Filters, IEEE Signal Processing Letters, vol. 27, 2020.
[8] Cassia Valentini-Botinhao, Xin Wang, Shinji Takaki, and Junichi Yamagishi, Investigating RNN-based speech enhancement methods for noise-robust Text-toSpeech, in SSW, 2016.
[9] Harishchandra Dubey, Vishak Gopal, Ross Cutler, Ashkan Aazami, Sergiy Matusevych, Sebastian Braun, Sefik Emre Eskimez, Manthan Thakker, Takuya Yoshioka, Hannes Gamper, et al., ICASSP 2022 deep noise suppression challenge, in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2022.
[10] Samuel L Smith, Pieter-Jan Kindermans, Chris Ying, and Quoc V Le, Don t decay the learning rate, increase the batch size, arXiv preprint arXiv:1711.00489, 2017.
[11] Hyeong-Seok Choi, Sungjin Park, Jie Hwan Lee, Hoon Heo, Dongsuk Jeon, and Kyogu Lee, Real-time denoising and dereverberation wtih tiny recurrent u-net, in International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2021.
[12] Chandan KA Reddy, Harishchandra Dubey, Kazuhito Koishida, Arun Nair, Vishak Gopal, Ross Cutler, Sebastian Braun, Hannes Gamper, Robert Aichner, and Sriram Srinivasan, Interspeech 2021 deep noise suppression challenge, in INTERSPEECH, 2021.
[13] Jean-Marc Valin, A hybrid dsp/deep learning approach to real-time full-band speech enhancement, in 2018 IEEE 20th international workshop on multimedia signal processing (MMSP). IEEE, 2018.
[14] Sebastian Braun, Hannes Gamper, Chandan KA Reddy, and Ivan Tashev, Towards efficient models for realtime deep noise suppression, in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2021.
[15] Yanxin Hu, Yun Liu, Shubo Lv, Mengtao Xing, Shimin Zhang, Yihui Fu, Jian Wu, Bihong Zhang, and Lei Xie, DCCRN: Deep complex convolution recurrent network for phase-aware speech enhancement, in INTERSPEECH, 2020.
[16] Shubo Lv, Yihui Fu, Mengtao Xing, Jiayao Sun, Lei Xie, Jun Huang, Yannan Wang, and Tao Yu, SDCCRN: Super wide band dccrn with learnable complex feature for speech enhancement, in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2022.
[17] Shubo Lv, Yanxin Hu, Shimin Zhang, and Lei Xie, DCCRN+: Channel-wise Subband DCCRN with SNR Estimation for Speech Enhancement, in INTERSPEECH, 2021.
[18] Jun Chen, Zilin Wang, Deyi Tuo, Zhiyong Wu, Shiyin Kang, and Helen Meng, FullSubNet+: Channel attention fullsubnet with complex spectrograms for speech enhancement, in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2022.
[19] ITU, Wideband extension to Recommendation P.862 for the assessment of wideband telephone networks and speech codecs, ITU-T Recommendation P.862.2, 2007.
[20] Cees H Taal, Richard C Hendriks, Richard Heusdens, and Jesper Jensen, An algorithm for intelligibility prediction of time frequency weighted noisy speech, IEEE Transactions on Audio, Speech, and Language Processing, 2011.
[21] Yi Hu and Philipos C Loizou, Evaluation of objective quality measures for speech enhancement, IEEE Transactions on audio, speech, and language processing, 2007.
[22] Chandan KA Reddy, Vishak Gopal, and Ross Cutler, Dnsmos p. 835: A non-intrusive perceptual objective speech quality metric to evaluate noise suppressors, in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2022.
论文翻译:2022_DeepFilterNet2: Towards Real-Time Speech Enhancement On Embedded Devices For Fullband Audio的更多相关文章
- 论文翻译:2020_TinyLSTMs: Efficient Neural Speech Enhancement for Hearing Aids
论文地址:TinyLSTMs:助听器的高效神经语音增强 音频地址:https://github.com/Bose/efficient-neural-speech-enhancement 引用格式:Fe ...
- 【论文:麦克风阵列增强】Speech Enhancement Based on the General Transfer Function GSC and Postfiltering
作者:桂. 时间:2017-06-06 16:10:47 链接:http://www.cnblogs.com/xingshansi/p/6951494.html 原文链接:http://pan.ba ...
- 论文翻译:2021_Towards model compression for deep learning based speech enhancement
论文地址:面向基于深度学习的语音增强模型压缩 论文代码:没开源,鼓励大家去向作者要呀,作者是中国人,在语音增强领域 深耕多年 引用格式:Tan K, Wang D L. Towards model c ...
- [报告] Microsoft :Application of deep learning methods in speech enhancement
Application of deep learning methods in speech enhancement 语音增强中的深度学习应用 按: 本文是DNS,AEC,PLC等国际级语音竞赛的主办 ...
- 论文翻译:Fullsubnet: A Full-Band And Sub-Band Fusion Model For Real-Time Single-Channel Speech Enhancement
论文作者:Xiang Hao, Xiangdong Su, Radu Horaud, and Xiaofei Li 翻译作者:凌逆战 论文地址:Fullsubnet:实时单通道语音增强的全频带和子频带 ...
- 论文翻译:Speech Enhancement Based on the General Transfer Function GSC and Postfiltering
论文地址:基于通用传递函数GSC和后置滤波的语音增强 博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/12232341.html 摘要 在语音增强应 ...
- 论文翻译:2020_WaveCRN: An efficient convolutional recurrent neural network for end-to-end speech enhancement
论文地址:用于端到端语音增强的卷积递归神经网络 论文代码:https://github.com/aleXiehta/WaveCRN 引用格式:Hsieh T A, Wang H M, Lu X, et ...
- 论文翻译:2020_Densely connected neural network with dilated convolutions for real-time speech enhancement in the time domain
提出了模型和损失函数 论文名称:扩展卷积密集连接神经网络用于时域实时语音增强 论文代码:https://github.com/ashutosh620/DDAEC 引用:Pandey A, Wang D ...
- 论文翻译:2020_A Recursive Network with Dynamic Attention for Monaural Speech Enhancement
论文地址:基于动态注意的递归网络单耳语音增强 论文代码:https://github.com/Andong-Li-speech/DARCN 引用格式:Li, A., Zheng, C., Fan, C ...
- 论文翻译:2020_Weighted speech distortion losses for neural-network-based real-time speech enhancement
论文地址:基于神经网络的实时语音增强的加权语音失真损失 论文代码:https://github.com/GuillaumeVW/NSNet 引用:Xia Y, Braun S, Reddy C K A ...
随机推荐
- 第八篇:用css写一个登录界面
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 没有二十年功力,写不出Thread.sleep(0)这一行“看似无用”的代码!
你好呀,我是喜提七天居家隔离的歪歪. 这篇文章要从一个奇怪的注释说起,就是下面这张图: 我们可以不用管具体的代码逻辑,只是单单看这个 for 循环. 在循环里面,专门有个变量 j,来记录当前循环次数. ...
- 装饰Hexo博客以及部署个人站点
我的博客最开始采用的是Hexo+hexo-theme-next搭建的,使用GitHub Pages托管并进行自动化部署,写文发布的流程非常简单方便,云端写作发布也轻而易举. 本来事情到这里就应该结束了 ...
- 【Java UI】HarmonyOS添加日历事件
参考资料 CalendarDataHelper Events Reminders api讲解 添加权限 在config.json添加权限代码如下 "reqPermissions" ...
- Java基础(标识符,数据类型,数据转换,变量)
注释 Java中的注释有3种: 单行注释 // 多行注释 /**/ 文档注释 /***/ 注释不会被执行,是给我们写代码的人看的 书写注释是一个非常好的习惯 标识符 Java所有的组成部分都需要名字, ...
- CentOS使用yum方式安装yarn和nodejs
# 使用epel-release.repo源安装的nodejs版本是6.17.1,有些前端项目使用的话会提示版本太低,具体下图 # 命令执行后的详细情况:curl -sL https://rpm.no ...
- LINUX 新增的磁盘不建立分区,直接建立文件系统并挂载
假设新硬盘是 /dev/sdc fdisk操作的是/dev/sdc ,分区后才会有/dev/sdc1 /dev/sdc2 之类 一般mkfs.ext4 /dev/sdc1 来格式化一个分区,再moun ...
- Compass- 图形化界面客户端
到MongoDB官网下载MongoDB Compass, 地址: https://www.mongodb.com/download-center/v2/compass?initial=true 如果是 ...
- docket打包镜像内部报错
临时记录,后面再完善 对于前端docker一般不太熟悉,当我们想要打包镜像的时候会去找教程,我按着教程去打包一个使用KOA框架搭建的node服务. 这是一个 koa + ts + pm2的项目 结果出 ...
- 关于windows-server-下MySQL Community版本的的安装与配置
在公司电脑或者服务器上安装软件,都是有要求的,要么购买license-(这个需要申请,难度较大),要么安装免费开源的软件 笔者最近想要安装mysql服务环境,用于数据存储及开发一些功能程序需要连接数据 ...