关闭

一些常用的语音特征提取算法

时间: 2019-09-22阅读: 1181标签: 算法

前言

语言是一种复杂的自然习得的人类运动能力。成人的特点是通过大约100块肌肉的协调运动,每秒发出14种不同的声音。说话人识别是指软件或硬件接收语音信号,识别语音信号中出现的说话人,然后识别说话人的能力。特征提取是通过将语音波形以相对最小的数据速率转换为参数表示形式进行后续处理和分析来实现的。因此,可接受的分类是从优良和优质的特征中衍生出来的。Mel频率倒谱系数(MFCC)、线性预测系数(LPC)、线性预测倒谱系数(LPCC)、线谱频率(LSF)、离散小波变换(DWT)和感知线性预测(PLP)是本章讨论的语音特征提取技术。这些方法已经在广泛的应用中进行了测试,使它们具有很高的可靠性和可接受性。研究人员对上述讨论的技术做了一些修改,使它们更不受噪音影响,更健壮,消耗的时间更少。总之,没有一种方法优于另一种,应用范围将决定选择哪种方法。

本文主要的关键技术:mel频率倒谱系数(MFCC),线性预测系数(LPC),线性预测倒谱系数(LPCC),线谱频率(LSF),离散小波变换(DWT),感知线性预测(PLP)

1 介绍

人类通过言语来表达他们的感情、观点、观点和观念。语音生成过程包括发音、语音和流利性[1,2]。这是一种复杂的自然习得的人类运动能力,在正常成年人中,这项任务是通过脊椎和颅神经连接的大约100块肌肉协调运动,每秒发出大约14种不同的声音。人类说话的简单性与任务的复杂性形成对比,这种复杂性有助于解释为什幺语言对与神经系统[3]相关的疾病非常敏感。

在开发能够分析、分类和识别语音信号的系统方面已经进行了几次成功的尝试。为这类任务所开发的硬件和软件已应用于保健、政府部门和农业等各个领域。说话人识别是指软件或硬件接收语音信号,识别语音信号中出现的说话人,并在[4]之后识别说话人的能力。说话人的识别执行的任务与人脑执行的任务类似。这从语音开始,语音是说话人识别系统的输入。一般来说,说话人的识别过程主要分为三个步骤:声音处理、特征提取和分类/识别[5]。

在提取语音[6]的重要属性并进行识别之前,对语音信号进行去噪处理。特征提取的目的是通过给定数量的信号分量来描述语音信号。这是因为声学信号中的所有信息处理起来都过于繁琐,有些信息与识别任务无关[7,8]。

特征提取是通过以相对较低的数据速率将语音波形转换为参数表示形式进行后续处理和分析来完成的。这通常称为前端信号处理[9,10]。它将经过处理的语音信号转换成一种简洁而有逻辑的表示形式,比实际信号更有鉴别性和可靠性。前端是序列中的初始元素,后续特征(模式匹配和speaker建模)的质量受到前端[10]质量的显着影响。

因此,可接受的分类是从优良和优质的特征中衍生出来的。在当前自动说话人识别(ASR)系统,特征提取的过程通常被发现表示相对可靠的几个条件相同的语音信号,即使在环境条件改变或发言人,同时保留的部分描述语音信号中的信息(7、8)。

特征提取方法通常为每个语音信号提取一个多维特征向量。语音信号的参数化表示方法有很多种,如感知线性预测(PLP)、线性预测编码(LPC)和mel-频率倒谱系数(MFCC)。MFCC是最有名和非常受欢迎的[9,12]。特征提取是说话人识别中最相关的部分。语音特征在区分说话人与其他[13]人的过程中起着至关重要的作用。特征提取在不损害语音信号[14]功率的前提下,降低了语音信号的幅度。

在特征提取之前,首先进行预处理阶段的序列。预处理步骤是预强调。这是通过一个FIR滤波器[15]来实现的,它通常是一个一阶有限脉冲响应(FIR)滤波器[16]。接着是帧阻塞,这是一种将语音信号分割成帧的方法。它消除了存在于语音信号[17]的开始和结束处的声学接口。

然后将加框的语音信号加窗。带通滤波器是一个合适的窗口[15],用于最小化每帧开始和结束时的不均匀性。最着名的两类窗户是汉明窗和矩形窗[18]。它增加了谐波的锐度,消除了信号的不连续,减少了帧零的开始和结束。它也减少了由重叠[17]形成的光谱失真。


2 Mel倒频谱系数(MFCC)

Mel频率倒谱系数(MFCC)最初被建议用于识别连续口语句子中的单音节词,但不用于说话人识别。MFCC计算是对人耳听觉系统的一种复制,它假设人耳是一个可靠的说话人识别器[19],以人为地实现人耳的工作原理。MFCC特征来源于人耳临界带宽的差异,低频线性间隔的频率滤波器和高频对数间隔的频率滤波器被用来保留语音信号的语音重要特性。语音信号通常包含不同频率的音调,每个音调都有一个实际的频率,f (Hz),主观音高在梅尔等级上计算。梅尔频率标度在1000赫兹以下为线性频率间隔,在1000赫兹以上为对数频率间隔。1 kHz音高,高于感知可听阈值40 dB,定义为1000 mels,作为参考点[20]。

MFCC是在滤波器组的帮助下实现信号分解的。MFCC给出了在Mel频标[21]上显示的短期能量的实对数的离散余弦变换(DCT)。MFCC用于识别机票预订、电话号码和语音识别系统的安全性。为了获得更好的鲁棒性,有人对基本的MFCC算法进行了一些修改,比如在应用dct0之前将log- mel振幅提升到适当的功率(大约2或3),并减少低能部分[4]的影响。

2.1 算法说明,优缺点

MFCC是在扭曲的频率尺度上推导出的倒谱系数,以人类听觉感知为中心。在MFCC的计算中,首先对语音信号进行加窗处理,将语音信号分割成帧。由于高频共振峰的振幅比低频共振峰的振幅要小,所以高频共振峰的振幅要比低频共振峰的振幅小。加窗后,应用快速傅里叶变换(FFT)求出各帧的功率谱。然后,利用mel-scale对功率谱进行滤波器组处理。将功率谱变换为对数域后,将离散余弦变换应用于语音信号,计算MFCC系数[5]。计算任意频率的mels的公式是[19,22]

其中mel(f)为频率(mels), f为频率(Hz)。

MFCCs的计算公式为[9,19]:

其中k是mel倒谱系数的个数,$\hat{S}_k$是filterbank的输出,$\hat{C}_n$是最终的mfcc系数。

MFCC处理器的框图如图1所示。它总结了获得所需系数的所有过程和步骤。MFCC比高频区域更能有效地表示低频区域,因此,它可以计算低频范围内的共振峰,并描述声道共振。它是典型的说话人识别应用的前端程序,降低了噪声干扰的脆弱性,会话不一致性小,易于挖掘[19]。此外,当源特征是稳定和一致的(音乐和语音)[23]时,它是声音的完美表现。此外,它还可以从采样信号中捕获频率最大为5千赫的信息,这封装了人类[9]发出的声音的大部分能量。

倒谱系数据说在与人类声音有关的某些模式识别问题中是准确的。它们广泛应用于说话人识别和语音识别[21]中。其他共振峰也可能在1khz以上,而且高频[19]范围内的滤波器间距较大,不能有效地考虑共振峰。MFCC特征在背景噪声存在的情况下并不完全准确[14,24],可能不适用于泛化[23]。


图1 MFCC处理器的框图


3 线性预测系数(LPC)

线性预测系数(LPC)模拟人体声道[16],具有鲁棒性强的语音特征。它通过近似共振峰来评估语音信号,从语音信号中去除共振峰的影响,并估计残留语音信号的浓度和频率。结果表明信号的每个样本都是前一个样本的直接结合。差分方程的系数表征共振峰,因此,LPC需要近似这些系数[25]。LPC是一种功能强大的语音分析方法,它作为一种共振峰估计方法获得了广泛的应用。

共振峰出现的频率称为共振峰频率。因此,使用这种技术,通过计算滑动窗口上的线性预测系数,并在随后的线性预测滤波器[17]的频谱中找到峰值,可以预测语音信号中共振峰的位置。LPC有助于在低比特率下对高质量语音进行编码[13,26,27]。

从线性预测倒谱系数(LPCC)、对数面积比(LAR)、反射系数(RC)、线谱频率(LSF)和反正弦系数(Arcus Sine coefficients)[13]可以推导出LPC的其他特征。LPC通常用于语音重建。LPC方法一般应用于音乐和电气公司,用于制造移动机器人,在电话公司,小提琴和其他弦乐器的音调分析[4]。


3.1 算法说明,优缺点

采用线性预测的方法,通过减小输入语音与估计语音[28]之间的均方误差,得到等效于声道的滤波系数。语音信号的线性预测分析是对给定语音样本在特定时间段内的预测,其预测结果是前一样本的线性加权集合。语音生成的线性预测模型为[13,25]

其中^s为预测样本,s为语音样本,p为预测系数。

预测误差为[16,25]:

因此,加窗信号的每一帧都是自相关的,而自相关值最高的是线性预测分析的阶数。然后是LPC分析,每一帧的自相关被转换成LPC参数集,这些参数集由LPC系数[26]组成。获取LPC的过程摘要如图2所示。LPC可由[7]推导


图2 LPC处理器的框图。

其中$a_m$为线性预测系数,$k_m$为reflection coefficient(反射系数)

线性预测分析能有效地从给定的语音[16]中选择声道信息。它以计算速度和准确度着称。LPC很好地代表了稳定一致的[23]源行为。此外,它还被用于语音识别系统中,主要目的是提取声道特性[25]。它对语音参数的估计非常准确,计算效率也相对较高[14,26]。传统的线性预测方法存在自相关系数失真的问题。LPC估计值对量化噪声[30]具有很高的敏感性,可能不适用于泛化[23]。


4 线性预测倒谱系数(LPCC)

线性预测倒谱系数(LPCC)是由LPC计算的频谱包络[11]得到的倒谱系数。LPCC是LPC对数幅度谱的傅里叶变换的系数[30,31]。倒谱分析是语音处理领域中常用的一种分析方法,因为它能够以有限的[31]特征来完美地表征语音波形和特征。

Rosenberg和Sambur观察到相邻的预测系数高度相关,因此,具有较少相关特征的表征更有效,LPCC就是一个典型的例子。LPC与LPCC的关系最早是由Atal在1974年推导出来的。从理论上讲,在相位信号[32]最小的情况下,将LPC转换为LPCC相对容易。

4.1 算法说明,优缺点

在语音处理中,LPCC类似于LPC,由语音波形的采样点计算得到,横轴是时间轴,纵轴是振幅轴[31]。


图3。LPCC处理器的框图。

LPCC处理器如图3所示。它形象地解释了获得LPCC的过程。LPCC可以用[7,15,33]来计算

其中am为线性预测系数,Cm为倒谱系数。

LPCC对噪声[30]的脆弱性较低。与LPC特性[31]相比,LPCC特性的错误率更低。高阶倒谱系数在数学上是有限的,因此从低阶倒谱系数转移到高阶[34]倒谱系数时,产生了极为广泛的方差阵列。类似地,LPCC估计对量化噪声[35]非常敏感。高频语音信号的倒谱分析给出了低频域[29]的小源滤波器可分性。低阶倒谱系数对谱斜率敏感,而高阶倒谱系数对噪声[15]敏感。


5 线谱频率(LSF)

线谱对(LSP)的单线称为线谱频率(LSF)。LSF定义了发生在人类声道内连接管模型中的两种共振情况。该模型考虑了鼻腔和口腔的形状,为线性预测的基本生理重要性奠定了基础。这两种共振情况定义了声门[36]处声道要幺完全打开要幺完全闭合。这两种情况产生两组共振频率,每组共振频率的数目由连接管的数量来推断。每一种情况下的共振都是相应的奇偶线谱,并交织成一个奇异上升的LSF[36]群。

LSF表示法是由Itakura[37,38]提出的,用来代替线性预测参数表示法。在语音编码领域,人们已经认识到该算法比其他线性预测参数化算法(LAR和RC)具有更好的量化特性。LSF图能够在不影响合成语音质量的前提下,将传输线性预测信息的比特率降低25% ~ 30%[3840]。除量子化外,预测器的LSF图也适用于插值。从理论上讲,将lsf域平方量化误差与感知相关的对数谱相联系的灵敏度矩阵是对角的[41,42],这可以从这一点得到启发。

5.1 算法说明,优缺点

LP建立在语音信号可以由式(3)定义的点上

其中k是时间指数,p是线性预测的阶数,$\hat{s}(n)$是预测信号,$a_k$是LPC系数。

通过自相关或协方差的方法确定$a_k$系数以减小预测误差。公式(3)可以在频域中用z-Transform进行修改,因此,语音信号的一小部分预计将作为输出给全极点滤波器H(z)。新公式是

其中H(z)是全极点滤波器,A(z)是LPC分析滤波器

为了计算LSF系数,一个逆多项式滤波器被分成两个多项式P(z)和Q(z)[36,38,40,41]:


其中P(z)是声门闭合的声道,Q(z)是阶P的LPC分析过滤器。为了将LSF转换回LPC,使用以下公式[36,41,43,44]


图4.LSF处理器框图。

LSF处理器的框图如图4所示。LSF在语音压缩领域的应用最为突出,并扩展到说话人识别和语音识别领域。这项技术在其他领域的应用也受到限制。LSF已被研究用于乐器识别和编码。LSF还被应用于动物噪音识别、个人工具识别和金融市场分析。LSF的优点包括其对光谱灵敏度的定位能力,它们可以表征带宽和共振位置,并强调了谱峰定位的重要方面。在大多数情况下,LSF表示为后续的分类[36]提供了一个几乎最小的数据集。

由于LSF以低于原始输入样本的数据速率表示光谱形状信息,因此,在LSP领域中仔细使用处理和分析方法可以降低对原始输入数据本身进行操作的替代技术的复杂性。LSF在声道信息从语音编码器到解码器的传输中起着重要的作用,其良好的量化特性使其得到了广泛的应用。LSP参数的生成可以使用多种复杂的方法来完成。主要的问题是求出Eqs中定义的P和Q多项式的根。(8)和(9)。这可以通过标准的根解法或更模糊的方法得到,通常在余弦域[36]中执行。


6 离散小波变换

小波变换(WT)理论的核心是在[45]的时域和频域使用不同尺度的信号分析。在理论物理学家Alex Grossmann的支持下,Jean Morlet引入了小波变换,该变换允许以增强的时间分辨率识别高频事件[45 47]。小波是一种有效的有限持续时间的波形,其平均值为零。许多小波也表现出正交性,这是紧凑信号表示[46]的理想特征。小波变换是一种信号处理技术,可以高效地表示现实生活中的非平稳信号[33,46]。它能够在时域和频域同时从瞬态信号中挖掘信息[33,45,48]。

利用连续小波变换(CWT)将连续时间函数分解成小波。然而,由于存在信息冗余,计算CWT所有可能的尺度和平移需要大量的计算工作,因此限制了它的使用[45]。离散小波变换(DWT)是小波变换(WT)的扩展,提高了分解过程[48]的灵活性。它是一种非常灵活和高效的信号子带击穿方法[46,49]。在早期的应用中,线性离散化用于连续小波变换的离散化。Daubechies和其他人开发了一种正交DWT,专门用于分析尺度集(二元离散化)[47]上的有限观测集。

6.1 算法说明,优缺点

小波变换将信号分解成一组称为小波的基本函数。小波由一个称为母波的原型小波通过扩展和移位得到。小波变换的主要特点是利用可变窗口扫描频谱,提高了分析的时间分辨率[45,46,50]。

wt将信号分解到经过翻译和扩展的母波上。母波是一个能量有限且衰减快的时间函数。单个小波的不同版本是互相正交的。连续小波变换(CWT)由[33,45,50]给出

其中$\psi (t)$是母小波,a和b是连续参数。

小波变换系数是一个展开式,一个特定的位移代表原始信号与经过平移和放大的母波的对应程度。因此,与特定信号相关的CWT (a, b)的系数群是原始信号相对于母波[45]的小波表示。由于连续小波变换具有较高的冗余度,因此利用小尺度分析信号,每个尺度上的平移量各不相同,即离散化尺度和a 2j、b 2jk的平移参数,得到DWT。DWT理论需要[33]给出的尺度函数和小波函数两组相关函数:


其中$\phi (t)$是标度函数,$\psi (t)$是小波函数,h[n]是低通滤波器的脉冲响应,g[n]是高通滤波器的脉冲响应。

有几种方法可以使CWT离散化。连续信号的dwt也可由[45]给出:

其中$\psi _{m,p}$是小波函数基,m是扩张参数,p是平移参数。

因此$\psi _{m,p}$被定义为:

离散信号的DWT来源于CWT,定义为


其中$g(*)$是母小波,x[n]是离散信号。母小波可以通过选择缩放参数$a=a_0^m$和平移参数$b=nb_0a_0^m$(常数取$a_0>1$,$b_0>1$,而m和n被赋予一组正整数)来离散地放大和平移。

利用一对滤波器h[n]和g[n],即具有$g[n]=(-1)^{1-n}h[n]$性质的正交镜滤波器(quadrature mirror filters),可以有效地实现尺度变换和小波函数。输入信号经过低通滤波和高通滤波,分别得到近似分量和细节分量。图5总结了这一点。利用相同的低通滤波器和高通滤波器对各阶段的近似信号进行进一步分解,得到下一阶段的近似分量和细节分量。这种分解称为二元分解[33]。

DWT参数包含不同频率尺度的信息。这增强了在相应频段[33]中获得的语音信息。DWT能够按比例对输入元素的方差进行分区,这是一个额外的优势。这种划分导致了尺度相关小波方差的观点,它在很多方面等价于我们更熟悉的频率相关的傅里叶功率谱[47]。经典的离散分解方案是二元的,不能满足直接用于参数化的所有要求。DWT确实为有效的语音分析[51]提供了足够的频带数。由于输入信号的长度是有限的,由于边界[50]处的不连续性,使得小波系数在边界处的变化非常大。


图5 DWT的方框图


7. 感知线性预测(PLP)

感知线性预测(PLP)技术将关键频带、强度-响度压缩和等响度预强调相结合,用于语音相关信息的提取。它植根于非线性树皮规模,最初是打算用于语音识别任务中消除说话人相关的特征[11]。PLP给出了一个符合平滑的短期频谱的表示,该短期频谱已被均衡和压缩,类似于人类的听觉,使其类似于MFCC。在PLP方法中,我们复制了听觉的几个显着特征,然后用自回归全极点模型[52]近似地表示类似听觉的语音频谱。PLP给出了高频下的最小分辨率,这意味着基于听觉滤波器组的方法,同时给出了与倒谱分析相似的正交输出。它使用线性预测来平滑光谱,因此,它的名字是感知线性预测[28]。PLP是光谱分析和线性预测分析的结合。

7.1 算法说明,优缺点

为了计算语音的PLP特征,计算了语音的快速傅里叶变换(FFT)和幅度的平方。这给出了功率谱估计。然后在1树皮间隔上应用梯形滤波器,将重叠的临界带滤波器响应整合到功率谱中。这能有效地把高频压缩成窄带。在树皮扭曲的频率尺度上的对称频域卷积允许低频掩盖高频,同时平滑频谱。频谱随后被预先强调,以近似人类听觉在各种频率下的不均匀灵敏度。对谱振幅进行压缩,减小了谱共振的振幅变化。通过离散傅里叶反变换(IDCT)得到自相关系数。进行谱平滑,求解自回归方程。将自回归系数转换为倒谱变量[28]。计算树皮鳞片频率的公式为


图6。PLP处理器的方框图

滤波器系数滤波器的形状建模方法速度的计算系数类型抗噪声能力对量化/附加噪声的灵敏度可靠性捕获频率
Mel倒频谱系数(MFCC)Mel三角形人类听觉系统倒频谱中等中等
线性预测系数(LPC)线性预测线性人类声道自相关系数
线性预测倒谱系数(LPCC)线性预测线性人类声道中等倒频谱中等低&中等
谱线频率(LSF)线性预测线性人类声道中等频谱中等低&中等
离散小波变换(DWT)低通&高通小波中等中等中等低&中等
感知线性预测(PLP)Bark梯形人类听觉系统中等倒频谱&自相关中等中等中等低&中等

表1 特征提取技术的比较。

其中,bark(f)为频率(bark), f为频率(Hz)。

PLP的识别效果优于LPC[28],因为它有效地抑制了说话人相关信息[52],是对传统LPC的改进。此外,它还增强了与扬声器无关的识别性能,并且对噪声、信道变化和麦克风[53]具有鲁棒性。PLP精确重构了自回归噪声分量[54]。基于PLP的前端对共振峰频率的任何变化都很敏感。

图6显示了PLP处理器,显示了获取PLP系数所需的所有步骤。PLP对谱倾斜的敏感性较低,这与我们的研究结果一致,即对谱倾斜的语音判断相对不敏感。此外,PLP分析依赖于整体光谱平衡(共振峰振幅)的结果。共振峰振幅易受记录设备、通信信道和附加噪声[52]等因素的影响。此外,时间-频率分辨率和有效采样的短期表现在一个特设的方式解决了[54]。

表1显示了上述六种特征提取技术的比较。尽管用于研究的特征提取算法的选择是独立的,但是本表能够根据选择任何特征提取算法时的主要考虑因素来描述这些技术。这些考虑因素包括计算速度,抗噪声性和对附加噪声的敏感性。该表还可作为考虑在所讨论的任何两个或多个算法之间进行选择时的指南。


8. 结论

MFCC、LPC、LPCC、LSF、PLP和DWTare是一些用于提取语音信号中相关信息的特征提取技术,用于语音识别和识别。这些技术经受住了时间的考验,并在语音识别系统中得到了广泛的应用。语音信号是一种慢时变的准平稳信号,当在5 ~ 100毫秒的足够短的时间内观察到它时,它的行为是相对平稳的。因此,包括MFCC、LPCC和PLP在内的短时谱分析常被用于从语音信号中提取重要信息。噪声是特征提取以及说话人识别过程中所面临的一个严峻挑战。随后,研究人员对上述讨论的技术进行了一些修改,使它们更不受噪音影响,更健壮,消耗的时间更少。这些方法也被用于声音的识别。提取的信息将被输入分类器进行识别。上述特征提取方法可以用MATLAB实现。

原文 https://flashgene.com/archives/70752.html

站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/6074

关闭

js生成32位uuid算法总汇_js 如何生成uuid?

GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中的 x 是 0-9 或 a-f 范围内的一个32位十六进制数。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。

数据结构与算法之绪论

什么是数据结构?简单来说可以解释为:程序设计=数据结构+算法;主要是用来研究数据结构的关系,数据元素之间存在的一种或多种特定关系的集合;

JS排序算法:记数排序

计数排序是一个非基于比较的[排序算法],该算法于1954年由 Harold H. Seward 提出。 它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围), 快于任何比较排序算法。

用 Javascript 写排序算法

至于为什么选择用 Javascript,则是因为我觉得 Javascript 是最方便运行和调试的,只需要复制代码粘贴到浏览器的控制台就可以了,我为所有的算法附上了测试用例,通过引入 Mocha 就可以在浏览器中显示用例的通过情况

js算法-查找斐波纳契数列中第N个数

所谓的斐波纳契数列是指前2个数是 0 和 1 ,第 i 个数是第 i-1 个数和第i-2 个数的和。下面我们来用js获取菲波那契数列的第N个数为多少:递归、闭包+缓存、直接计算出该数列的值得数组,然后再从数组中取值 、直接使用数学表达式

js求水仙花数_JavaScript可自定义范围打印水仙花数

水仙花数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。这篇文章主要介绍js实现生成自定义范围内的水仙花数。

js算法实现_二维数组中的查找

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数

js实现生成任意长度的随机字符串

js生成任意长度的随机字符串,包含:数字,字母,特殊字符。实现原理:可以手动指定字符库及随机字符长度,利用Math.round()和Math.random()两个方法实现获取随机字符

JS 洗牌算法

最近的一个塔罗牌项目中,有一个洗牌的需求,其实也就是随机打乱数组,遂网上搜了下,再此做个整理…塔罗牌,举例来说,我们有一个如下图所示的数组,数组长度为 9,数组内元素的值顺次分别是 1~9:

js字典对象_js实现字典Dictionary类操作

字典(Dictionary)是一种以 键-值对 形式存储数据的数据结构 ,其实对于javascript来说,字典类(Dictionary)的基础是Array类,js中的Array既是一个数组,同时也是一个字典。字典(Dictionary)类的基础是 Array 类。同之前的我们所看到的数据结构一样,字典类也应该有添加、删除、清空等操作。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!