论文地址:基于分层递归神经网络的嵌入式设备轻量化在线降噪

引用格式:Schröter H, Rosenkranz T, Zobel P, et al. Lightweight Online Noise Reduction on Embedded Devices using Hierarchical Recurrent Neural Networks[J]. arXiv preprint arXiv:2006.13067, 2020.


摘要

  基于深度学习的降噪算法已经证明了它们的成功,尤其是对非平稳噪声,这使得它们也可以用于嵌入式设备,如助听器(HAs)。然而,用最先进的方法,这目前是不可能的。它们要么需要大量参数和计算能力,因此只有使用现代cpu才可行。或者它们不适合在线处理,这需要滤波器组和算法本身的低延迟等约束。

  在这项工作中,我们提出了一种基于掩模的降噪方法。使用分层循环神经网络,我们能够大大减少每层神经元的数量,同时通过分层连接包括时间上下文。这使我们能够优化我们的模型,使其参数和浮点操作(FLOPs)的数量最小化,同时与以前的工作相比保持降噪质量。我们的最小网络只包含5k个参数,这使得该算法适用于嵌入式设备。我们在EUROM和真实噪声数据库的混合基础上评估我们的模型,并报告未经训练噪声的客观指标。

索引术语:语音增强,降噪,循环神经网络,嵌入式设备

1  引言

  降噪(NR)旨在减少不必要的环境噪音,如街道噪音,并增强叠加语音信号。NR是现代助听器的一个重要功能。最近,基于深度学习的单耳语音增强方法[1,2,3,4,5]取得了与传统噪声抑制方法[6,7]相比的巨大改进。这使得将这些方法合并到HAs中是可取的。然而,这些采用深度神经网络的算法对内存和计算能力都有很大的要求。此外,许多算法以离线的方式处理噪声信号[8,2,9,10,11]或引入较大的延迟,这在HAs上是不可行的。根据Jeremy et al.[12],通常可接受的最大延迟是10毫秒。有一个开放的声学耦合,较大的延迟引入恼人的梳状滤波器效应,由于叠加处理和直接信号。

  Valin[13]和Aubreville[3]提出了接近实时和在线处理约束的方法。Valin等人[13]使用RNN处理20毫秒窗口,50%重叠,采样率为48 kHz。为了降低模型的复杂性,他们使用了类似于bark scale,这进一步降低了输入和输出单元的数量。这导致了一个包含88.5 k参数和大约每秒40 MFLOPs的网络。虽然该算法能够在树莓派上实时处理数据,并以在线方式处理数据,但引入的延迟大于20毫秒,这对于我们的要求太长了。  

  Aubreville等人[3]采用了一种听觉仪器级滤波器组,它引入了大约6毫秒的综合分析和合成延迟。此外,它们还包括了2毫秒的未来上下文,从而导致了8毫秒的整体延迟。然而,他们使用一个包含约28.6 M参数的全连接网络预测了Wiener增益,仅算法每秒产生约57.3 GFLOPs,不包括滤波器组计算。

  在这项工作中,我们考虑了低延迟要求(10ms),并进一步关注参数和FLOPs的减少。为了实现我们的目标,我们采用了具有低频谱分辨率的均匀多相滤波器组。我们以大约6ms的帧为基础,以1ms的帧移处理数据(第2节)。使用RNN cell,如门控递归单元(GRU)或长-短期记忆(LSTM)细胞,能够捕获长期和短期相关性,但它们需要足够的参数,并且很难训练。为了能够减少参数数量,从而减少重复状态的隐藏状态,我们使用层次(hierarchical)结构来合并1 ms的短期时间上下文。这允许我们使用最多只有12个隐藏单元的GRU单元。我们在EUROM数据库中报告了第3节中使用助听器设备记录的260个德语句子和49个真实世界噪声信号的结果。此外,我们还提供了与传统方法以及使用相同处理工具链的先前工作的比较。我们在第4节中分析了我们模型的复杂性,并为FLOP估计提供了计算基础和假设。

2  信号处理工具链

  我们使用标准的均匀多相滤波器组(uniform polyphase filter bank)将时域信号转换为时间/频率(TF)域。分析窗口在24 kHz采样率下工作,以大约6 ms的帧为基础处理输入信号,偏移(hop)为1 ms。该滤波器组确保了我们的低延迟要求,但导致48个频率区间的低分辨率频谱表示。

  降噪系统的信号框图如图1所示。我们将复数滤波器组表示转换为分贝尺度,并使用指数平均对其进行归一化。噪声降低本身通过实值掩码在Bark压缩频谱表示上执行。RNN使用幅度谱近似(MSA)损失进行训练[14]。

图1:处理工具链。AFB/SFB描述了分析和合成滤波器组

2.1  归一化 Normalization

  归一化是神经网络训练的一个关键部分,因为它极大地有助于收敛和泛化,并减少初始化的影响。此外,由于人类感知的响度是对数尺度,我们首先将complex 滤波器组表示转换为分贝尺度,并在100分贝处进行剪辑。

$$公式1:X_{dB}[t,f]=10*log_{10}(max(|X[t,f]|^2,10^{-10}))$$

式中$t$表示TF域的时间步长,$f$表示频带。然后,我们将每个频率的频谱归一化为零均值和单位方差

$$公式2:X_{\text {norm }}[t, f]=\frac{X_{\mathrm{dB}}[t, f]-\hat{\mu}[t, f]}{\sqrt{\hat{\sigma}^{2}[t, f]}}$$

式中$\hat{\mu}$和$\hat{\sigma}$为估计的均值和方差。也就是说,我们可以通过指数衰减来计算均值估计$\hat{\mu }$和样本平方估计$\hat{s}$[15]:

$$公式3:\hat{\mu}[t,f]=\alpha\hat{\mu}[t-1,f]+(1-\alpha)X_{dB}[t,f]$$

$$公式4:\hat{s}^2[t,f]=\alpha\hat{s}^2[t-1,f]+(1-\alpha)(X_{dB}[t,f])^2$$

得到方差估计

$$公式5:\hat{\sigma}^{2}[t, f]=\hat{s}^{2}[t, f]-\hat{\mu}^{2}[t, f]$$

Viiki等人[15]建议归一化周期$\tau$约为1 s。我们的采样率在滤波器组域中,这对应于$\alpha= exp(\bigtriangleup t/\tau)\simeq  0.999$。在实验3.1中,我们进一步评估了方差归一化和方差归一化后的模型。也就是说,我们只是假设输入具有单位方差,并跳过平方根和平方根计算。Xia等人[16]还使用了指数衰减归一化,并将其与基于训练集的全局均值/方差归一化进行了比较。他们推荐基于指数衰减和3秒归一化周期的在线方法。

2.2  bark scale

  我们没有直接在统一滤波器组表示法上进行基于降噪的掩模,而是使用类似于Bark的频带缩放来进一步降低输入和输出维度。因此,我们可以利用人类的频率感知也是在对数尺度上的这一事实,并对较高的频率使用较粗的频率分辨率。也就是说,我们使用矩形频带(rectangular bands)将归一化频谱图从48个通道减少到16个频带,确保前8个bark band直到2khz只有1个频率通道,并遵循bark scale获得更高的频率。此外,该网络仅产生具有16个单元的掩码,该掩码通过逆运算转换为线性频率scale。这可以极大地减少网络大小,我们发现它对非常小的网络的收敛有很大帮助。

2.3  分层RNN

  时域上下文是降噪算法的关键。Aubreville等人[3]表明,时间look back context(上下文)$\gg 30ms$将低频率能量小的摩擦器与噪声区分开来。他们进一步表明,除了过去的context,未来的context也能更好地降低噪音。然而,未来上下文总是会引入不可取的延迟,这就是为什么他们将未来上下文限制在2毫秒。

  显然,可以使用RNN的隐藏状态合并过去的上下文。然而,隐藏状态的大小,即神经元的数量,限制了可以存储的上下文的数量。因此,为了让网络专注于长期的时间上下文,例如在一个词或音素中,我们合并了1ms的时间上下文(表示为层次上下文(HC))。但是,我们没有将短期上下文作为第一层RNN(C-RNN)的输入,而是提供了第一层输出的上下文窗口作为第二层(HC-RNN)(如图2所示)的输入。这种分层短期上下文包含类似于完全卷积网络,由于stride>1,该网络具有更深层的感受野。我们在实验中表明,使用HC的分层结构优于具有早期融合的标准RNN。

图2:分层RNN架构。第二层RNN包括前一个、当前和下一个时间步的时间上下文

2.4  网络训练

  近年来提出了几种损失函数。在这项工作中,出于性能和鲁棒性原因,我们只关注基于实值掩码的损失。这些损失函数可大致分为两类:掩模近似(MA)和信号近似。对于前者,常见的掩模目标是理想比率掩模(IRM)、理想幅值掩模(IAM)或维纳滤波器样掩模(Wiener filter like,WF)[1]。所有这些都具有略微不同的特性,在语音和噪声不相关的情况下,WF是最优信噪比。Aubreville等人在助听器环境中成功地使用了WF型mask。MA损失定义为:

$$公式6:L_{MA}=\sum_{t,f}(|M[t,f]-\hat{M}[t,f]|^2)$$

其中$\hat{M}$为掩码估计,$M$为目标掩码,如WF。Weninger等人[14]并没有根据掩码计算损失,而是强迫网络输出一个掩码,直接应用于噪声信号。然后根据得到的增强频谱和纯净频谱来计算损失。这种损失称为幅度谱近似(MSA),定义为

$$公式7:L_{\mathrm{MSA}}=\sum_{t, f}\left(|| S[t, f]|-| X[t, f]|\odot \hat{M}[t, f]|^{2}\right)$$

其中$\odot $是逐点乘法。我们注意到,特别是在噪声条件下,MSA损失优于像WF这样的MA损失。此外,我们在实验3.3中提供了与组合MA-MSA损失的比较。我们使用至少5s的序列、20的batch size和Adam优化器,使用深度学习框架PyTorch[17],使用门控递归单元(GRU)层训练网络,学习率为0.001。

3  实验

  在本节中,我们介绍了各种实验,并使用SI-SDR度量[18]和噪声差异来评估它们,以增强短时间客观可懂度(STOI)[19]。所有网络(实验3.1除外)都使用2层的GRU,然后是sigmoid激活的全连接层。我们在训练、验证(开发)和测试集上将噪声和语音语料库在原始信号水平上进行分割。我们使用与[3,5]相同的分割。除非另有说明,否则所有结果都基于测试集。

3.1  方差归一化

  虽然许多研究对输入使用了零均值和单位方差归一化[3,16],但我们发现归一化到单位方差并没有提供额外的好处。表1展示了一个简单的3层LSTM网络的STOI改进,每个网络有48个隐藏单元。没有显著差异,这就导致我们假设网络第一层能够对输入方差进行建模。此外,该网络只产生一个用于带噪语音频谱的输出掩码,该掩码应与带噪语音频谱scale无关。因此,对于进一步的实验,以减少计算工作量,我们只使用零均值归一化。

表1:当提供零均值和单位方差的输入时,$\bigtriangleup STOI$开发集结果,并且仅在保持原始方差的情况下提供零均值。

3.2  通过分层RNN分析短期上下文的复杂性

  在本实验中,我们发现具有层次上下文结构的网络(HC-RNN)具有较好的STOI评分。HC-RNNs只需要很小的输入层,第二层包含了1帧的短期上下文,因此更大。 我们将这些网络与在第一层包含短期上下文的网络进行比较,因此,第一层比第二层(C-RNN)更大。 图3为不同网络规模下的STOI得分。 所有网络配置如表2所示。

图3:不同网络大小的平均∆STOI得分

表2:图3中不同网络的输入维度I,隐藏维度H,参数个数P的网络配置。对于所有网络,输出层为全连接层,隐藏维数为16

  我们可以看到,分层RNN优于传统的RNN,即在每一个参数的基础上在第一层包含上下文。这使我们得出结论,至少对于这些小数量的参数,它有利于将短期上下文集成到后面的层,从而将大多数参数转移到更深的层。

3.3  掩模近似与信号近似

  先前的研究报告称,MSA目标优于WF等MA方法[1,14]。然而,我们发现这很大程度上依赖于输入信噪比。图4中的方框图显示,在带噪语音($SNR\le 0$)条件下,MSA优于具有WF类掩模的MA。对于$SNR\ge 5$的情况,MA和MA-MSA 损失会导致更好的STOI得分。由于MA-MSA和MSA的性能似乎相似,我们在实验3.4中对我们的最小模型和5k参数进行了评估。

图4:使用分层RNN的STOI结果,使用MSA损失训练了25K参数,使用类似WF的掩码和组合训练了MA损失

3.4  与前期工作进行客观的评价和比较

  我们将最小的HC-RNN模型与各种最新的结果进行比较。我们选择递归最小跟踪(recursive minimum tracking)[20]作为基线,并根据我们的测试集使用FC-WG[3]和RNNoise[13]提供结果。从表3可以看出,HC-RNN模型的性能与之前的研究相似,但当MSA损失的信噪比较大时,性能略有下降。在任何情况下,它仍然优于传统方法,如递归最小跟踪[20],它只能在0到10范围内为SNRs提供 SDR改进。

表3:使用我们最小的HC-RNN模型、RNNoise[13]和FC-WF[3]在测试集上的度量结果。括号中为网络参数个数。

SI-SDR和STOI根据输入信噪比提供,时域信号的均方根误差(RMSE)在所有输入信噪比上平均。递归最小跟踪基线[20]也使用衰减极限14 dB进行评估。

4  复杂度分析

  GRU每秒的FLOPs由:

$$公式8:T*6N(M+N+1)$$

  其中$T$是时间步数,$M$是输入大小,$N$是隐藏层大小。在我们的例子中,T=1000步/秒,最小的网络在每层中有16个隐藏单元,而输入大小分别为16和48。我们为乘法和加法计算一个单独的操作。对于tanh或sigmoid等激活函数,我们假设查找表消耗1个FLOP。此外,对于全连接的输出层,这将导致10.0 MFLOPS。归一化需要额外的0.14 MFLOPS,bark scale需要48kFLOPS。这里不考虑滤波器组,因为其他任务也需要它,并通过硬件实现。与需要大约40 MFLOP的RNNoise相比,我们仍然有相当大的FLOPS减少,即4倍,同时将延迟从>20毫秒降低到8毫秒。我们的模型能够使用深度学习框架PyTorch的非优化Python前端在Raspberry Pi 3上实时运行。

5   结论

  提出了一种低延迟、低计算量的实时降噪方法。我们的总体延迟约为8毫秒,包括约6毫秒的滤波器组分析和综合,1毫秒的未来上下文和1毫秒的处理。虽然我们能够获得与其他实时方法(如RNNoise)相似的结果,但我们将参数的数量显著减少到只有5 k, FLOPS的数量减少到大约10 M。

参考论文

[1] H. Erdogan, J. R. Hershey, S. Watanabe, and J. Le Roux, Phasesensitive and recognition-boosted speech separation using deep recurrent neural networks, in 2015 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2015, pp. 708 712.

[2] S. Pascual, A. Bonafonte, and J. Serr`a, Segan: Speech enhancement generative adversarial network,  Proc. Interspeech 2017, pp. 3642 3646, 2017.

[3] M. Aubreville, K. Ehrensperger, A. Maier, T. Rosenkranz, B. Graf, and H. Puder, Deep denoising for hearing aid applications, in 2018 16th International Workshop on Acoustic Signal Enhancement (IWAENC). IEEE, 2018, pp. 361 365.

[4] J. Le Roux, G. Wichern, S. Watanabe, A. Sarroff, and J. R. Hershey, Phasebook and friends: Leveraging discrete representations for source separation, IEEE Journal of Selected Topics in Signal Processing, vol. 13, no. 2, pp. 370 382, 2019.

[5] H. Schrter, T. Rosenkranz, A. N. E. B., M. Aubreville, and A. Maier, CLCNet: Deep learning-based Noise Reduction for Hearing Aids using Complex Linear Coding, in ICASSP 2020- 2020 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2020.

[6] Y. Ephraim and D. Malah, Speech enhancement using a minimum-mean square error short-time spectral amplitude estimator, IEEE Transactions on acoustics, speech, and signal processing, vol. 32, no. 6, pp. 1109 1121, 1984.

[7] R. Martin, Noise power spectral density estimation based on optimal smoothing and minimum statistics, IEEE Transactions on speech and audio processing, vol. 9, no. 5, pp. 504 512, 2001.

[8] X. Lu, Y. Tsao, S. Matsuda, and C. Hori, Speech enhancement based on deep denoising autoencoder. in Interspeech, 2013, pp. 436 440.

[9] D. S. Williamson, Monaural speech separation using a phaseaware deep denoising auto encoder, in 2018 IEEE 28th International Workshop on Machine Learning for Signal Processing (MLSP). IEEE, 2018, pp. 1 6.

[10] Z.-Q. Wang, J. L. Roux, D. Wang, and J. R. Hershey, End-to-end speech separation with unfolded iterative phase reconstruction, arXiv preprint arXiv:1804.10204, 2018.

[11] H. Zhao, S. Zarar, I. Tashev, and C.-H. Lee, Convolutionalrecurrent neural networks for speech enhancement, in 2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2018, pp. 2401 2405.

[12] J. Agnew and J. M. Thornton, Just noticeable and objectionable group delays in digital hearing aids, Journal of the American Academy of Audiology, vol. 11, no. 6, pp. 330 336, 2000.

[13] J.-M. 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, pp. 1 5.

[14] F. Weninger, J. R. Hershey, J. Le Roux, and B. Schuller, Discriminatively trained recurrent neural networks for single-channel speech separation, in 2014 IEEE Global Conference on Signal and Information Processing (GlobalSIP). IEEE, 2014, pp. 577 581.

[15] O. Viikki, D. Bye, and K. Laurila, A recursive feature vector normalization approach for robust speech recognition in noise, in Proceedings of the 1998 IEEE International Conference on Acoustics, Speech and Signal Processing, ICASSP 98 (Cat. No. 98CH36181), vol. 2. IEEE, 1998, pp. 733 736.

[16] Y. Xia, S. Braun, C. K. A. Reddy, H. Dubey, R. Cutler, and I. Tashev, Weighted speech distortion losses for neural-networkbased real-time speech enhancement, in ICASSP 2020 - 2020 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), 2020, pp. 871 875.

[17] A. Paszke, S. Gross, S. Chintala, G. Chanan, E. Yang, Z. DeVito, Z. Lin, A. Desmaison, L. Antiga, and A. Lerer, Automatic differentiation in pytorch, 2017.

[18] J. Le Roux, S. Wisdom, H. Erdogan, and J. R. Hershey, SDR half-baked or well done? in ICASSP 2019-2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2019, pp. 626 630.

[19] C. H. Taal, R. C. Hendriks, R. Heusdens, and J. Jensen, An algorithm for intelligibility prediction of time frequency weighted noisy speech, IEEE Transactions on Audio, Speech, and Language Processing, vol. 19, no. 7, pp. 2125 2136, 2011.

[20] E. H ansler and G. Schmidt, Acoustic echo and noise control: a practical approach. John Wiley & Sons, 2005, vol. 40.

论文翻译:2020_Lightweight Online Noise Reduction on Embedded Devices using Hierarchical Recurrent Neural Networks的更多相关文章

  1. 论文翻译:2020_RESIDUAL ACOUSTIC ECHO SUPPRESSION BASED ON EFFICIENT MULTI-TASK CONVOLUTIONAL NEURAL NETWORK

    论文翻译:https://arxiv.53yu.com/abs/2009.13931 基于高效多任务卷积神经网络的残余回声抑制 摘要 在语音通信系统中,回声会降低用户体验,需要对其进行彻底抑制.提出了 ...

  2. 深度学习论文翻译解析(九):Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    论文标题:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 标题翻译:用于视觉识别的深度卷积神 ...

  3. 论文解读(GraphSMOTE)《GraphSMOTE: Imbalanced Node Classification on Graphs with Graph Neural Networks》

    论文信息 论文标题:GraphSMOTE: Imbalanced Node Classification on Graphs with Graph Neural Networks论文作者:Tianxi ...

  4. 论文解读(ChebyGIN)《Understanding Attention and Generalization in Graph Neural Networks》

    论文信息 论文标题:Understanding Attention and Generalization in Graph Neural Networks论文作者:Boris Knyazev, Gra ...

  5. 论文翻译:Conditional Random Fields as Recurrent Neural Networks

    Conditional Random Fields as Recurrent Neural Networks ICCV2015    cite237 1摘要: 像素级标注的重要性(语义分割 图像理解) ...

  6. RNN(2) ------ “《A Critical Review of Recurrent Neural Networks for Sequence Learning》RNN综述性论文讲解”(转载)

    原文链接:http://blog.csdn.net/xizero00/article/details/51225065 一.论文所解决的问题 现有的关于RNN这一类网络的综述太少了,并且论文之间的符号 ...

  7. Deep Learning 论文解读——Session-based Recommendations with Recurrent Neural Networks

    博客地址:http://www.cnblogs.com/daniel-D/p/5602254.html 新浪微博:http://weibo.com/u/2786597434 欢迎多多交流~ Main ...

  8. 论文阅读笔记三十:One pixel attack for fooling deep neural networks(CVPR2017)

    论文源址:https://arxiv.org/abs/1710.08864 tensorflow代码: https://github.com/Hyperparticle/one-pixel-attac ...

  9. 论文笔记:Emotion Recognition From Speech With Recurrent Neural Networks

    动机(Motivation) 在自动语音识别(Automated Speech Recognition, ASR)中,只是把语音内容转成文字,但是人们对话过程中除了文本还有其它重要的信息,比如语调,情 ...

随机推荐

  1. MAC NGINX PHP XDEBUG

    1. 安装 homebrew 2. 安装nginx ; 终端运行 brew install nginx: 1)给nginx 设置管理员权限:如果不设置管理员权限,80端口是不能监听的: #这里的目录根 ...

  2. SQL Server导出MDF数据库文件

    更新日志 2022年6月13日 发布. 2022年6月2日 开始. 一句话总结:先分离,然后复制. 先分离要导出mdf数据库文件的数据库. 在Microsoft SQL Server Manageme ...

  3. 一张图进阶 RocketMQ - 整体架构

    前 言 三此君看了好几本书,看了很多遍源码整理的 一张图进阶 RocketMQ 图片链接,关于 RocketMQ 你只需要记住这张图!如果你第一次看到这个系列,墙裂建议你打开链接.觉得不错的话,记得点 ...

  4. redisson之分布式锁实现原理(三)

    官网:https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95 一.什么是分布式锁 1.1.什么是分布式锁 分布式锁,即分布式系统中的锁 ...

  5. v-if和v-for哪个优先级更高?

    首先在实际开发阶段,不应该把v-if和v-for在同一个标签中使用, 在vue2中,v-for的优先级是高于v-if的,如果同时出现,每次渲染都会先执行循环再判断条件,无论如何循环都不可避免,浪费了性 ...

  6. (win环境)使用Electron打造一个桌面应用翻译小工具

    初始化项目 npm init 修改package.json {"name": "trans","version": "1.0.0& ...

  7. SAP Web Dynpro - 教程

    SAP Web Dynpro是一种标准的SAP UI技术,用于使用图形工具和与ABAP工作台集成的开发环境来开发Web应用程序. 图形工具的使用减少了实施工作,并有助于维护ABAP工作台中的组件. 本 ...

  8. 在VMware Workstation 16上安装Windows7虚拟机以及VMware tools安装失败解决方法

    安装VMware Workstation 16 搜素"VMware Workstation下载" 下载 VMware Workstation Pro 下载Windows7系统镜像 ...

  9. WPF第三方控件,只能输入数字型数据

    话不多说,根据最近项目需求,为了减少输入验证等相关代码量,需要此控件 先上效果图 默认样式是这样,自己可以根据需求修改外形,但我更喜欢它自带的简洁版 有人可能会问怎么实现的呢?其实很简单,我们设置它的 ...

  10. 【黑马pink老师的H5/CSS课程】(二)标签与语法

    视频链接:P8~P29 黑马程序员pink老师前端入门教程,零基础必看的h5(html5)+css3+移动 参考链接: HTML 元素 1.HTML语法规范 1.1 基本语法概述 HTML 标签是由尖 ...