首页> 中国专利> 一种基于一维卷积神经网络的风叶声音边界定位方法和存储设备

一种基于一维卷积神经网络的风叶声音边界定位方法和存储设备

摘要

本发明涉及音频数据处理领域,特别涉及一种基于一维卷积神经网络的风叶声音边界定位方法和存储设备。所述一种基于一维卷积神经网络的风叶声音边界定位方法,包括步骤:对输入的声音信号进行特征提取得特征序列;输入特征序列至预先设计的基于一维卷积神经网络的分类模型得标签序列,每个序列化特征片段生成一个预测标签;根据预设规则对所述标签序列进行调整处理得风叶声音的边界位置。通过实验数据证明,根据以上步骤可取得更准确的风叶声音的边界位置。

著录项

  • 公开/公告号CN112733927A

    专利类型发明专利

  • 公开/公告日2021-04-30

    原文格式PDF

  • 申请/专利权人 福州数据技术研究院有限公司;

    申请/专利号CN202110006725.1

  • 申请日2021-01-05

  • 分类号G06K9/62(20060101);G06N3/04(20060101);G10L25/30(20130101);G10L25/87(20130101);F03D17/00(20160101);

  • 代理机构35219 福州市景弘专利代理事务所(普通合伙);

  • 代理人魏小霞;林祥翔

  • 地址 350000 福建省福州市长乐区数字福建产业园东湖路33号6#楼

  • 入库时间 2023-06-19 10:48:02

说明书

技术领域

本发明涉及音频数据处理领域,特别涉及一种基于一维卷积神经网络的风叶声音边界定位方法和存储设备。

背景技术

风电叶片是风机捕获风能的核心部件,需要长期可靠地运行在极其恶劣的户外环境下,难免会遭受雷击、环境腐蚀等影响,从而造成穿孔、脱漆,变形等损伤。对这些损伤进行检测一般需要通过停机通过望远镜进行检测,也有一些通过无人机拍摄视频进行检测,也有一些通过采集风叶扫风声音进行故障检测,但这种基于声音检测的前提是:可以在复杂的充满各种噪声的环境下准确定界出风叶扫风的声音边界,从而提取出风叶声音的频谱特征,进行下一步的故障判断。

故此如何在复杂环境下,准确地提取出风叶声音的频谱特征成了亟需解决的技术问题。

在申请号201810962524.7《一种寻找非稳态时间序列微弱尖峰的方法》中提出获取一维的时间序列数据作为待处理信号;然后计算所述时间序列数据的一阶差分;根据计算的差分寻找所述时间序列数据中所有尖峰;估算噪声幅值;滤除较小尖峰,保留较大尖峰即为所求的信号尖峰。该方法的不足之处是,当叠加一个周期性背景信号时,可能采集到的尖峰是周期性背景信号,而不是真正想要的真实信号。

在申请号201810101218.4《一种音频句子边界检测方法》提出一种音频句子边界检测方法:针对歌声音频的分句问题,根据人耳听觉感知特性对演唱歌声采用CQT进行时频转换,通过子带谱熵法对演唱歌声进行细粒度的端点检测;在此基础上,利用演唱歌声句子之间停顿和发音间隔较长的特点,基于K-means算法进行聚类分析得到分句端点位置,可较好的得到清唱音频句子之间的边界点,并自适应不同节奏的音乐。该方法的缺点是主要针对清唱音频句子之间分句,但针对风叶声音,由于环境复杂,往往夹杂着连续的背景噪声,效果并不确定。如果背景叠加周期性噪声还可能导致聚类失败。

在申请号201880089324.3《学习装置,声音区间检测装置及声音区间检测方法》提出使用输入声音信号区间叠加噪声区间的混合声音以及噪声作为数据输入网络进行学习,其缺点是,使用的神经网络模型层主要基于多层感知机,并不能学习到某些声音在时间序列上的特性,也不能利用某些声音的周期性特性,因此应用场景有限。

发明内容

为此,需要提供一种基于一维卷积神经网络的风叶声音边界定位方法,用以解决现有技术无法在复杂的充满各种噪声的环境下准确定界出风叶扫风的声音边界的技术问题。具体技术方案如下:

一种基于一维卷积神经网络的风叶声音边界定位方法,包括步骤:

对输入的声音信号进行特征提取得特征序列;

输入特征序列至预先设计的基于一维卷积神经网络的分类模型得标签序列,每个序列化特征片段生成一个预测标签;

根据预设规则对所述标签序列进行调整处理得风叶声音的边界位置。

进一步的,所述“输入特征序列至预先设计的基于一维卷积神经网络的分类模型得标签序列,每个序列化特征片段生成一个预测标签”,具体还包括步骤:

依次输入所述特征序列至不同的一维及卷积模块得第一结果;

对所述第一结果进行一维卷积计算得第二结果;

对所述第二结果进行处理并输入全连接层得标签序列。

进一步的,所述“依次输入所述特征序列至不同的一维及卷积模块得第一结果”,具体还包括步骤:

输入所述特征序列至一维及卷积模块1得第一预测结果;

输入第一预测结果至一维及卷积模块2得第二预测结果;

输入第二预测结果至一维及卷积模块3得第一结果。

进一步的,所述“输入所述特征序列至一维及卷积模块1得第一预测结果”,具体还包括步骤:

对所述特征序列一次进行一维卷积计算、批标准化和最大池化计算得第一预测结果;

所述“输入第一预测结果至一维及卷积模块2得第二预测结果”,具体还包括步骤:

对所述第一预测结果进行一维卷积计算、批标准化和最大池化计算得第二预测结果;

所述“输入第二预测结果至一维及卷积模块3得第一结果”,具体还包括步骤:

对所述第二预测结果进行一维卷积计算、批标准化和最大池化计算得第一结果。

进一步的,所述“根据预设规则对所述标签序列进行调整处理得风叶声音的边界位置”,具体还包括步骤:

对所述标签序列进行拼接及尖峰滤除;

对尖峰滤除后的标签序列进行扩采样;

寻找扩采样后的标签序列的跳变沿,得风叶声音的边界位置。

为解决上述技术问题,还提供了一种存储设备,具体技术方案如下:

一种存储设备,其中存储有指令集,所述指令集用于执行:

对输入的声音信号进行特征提取得特征序列;

输入特征序列至预先设计的基于一维卷积神经网络的分类模型得标签序列,每个序列化特征片段生成一个预测标签;

根据预设规则对所述标签序列进行调整处理得风叶声音的边界位置。

进一步的,所述指令集还用于执行:所述“输入特征序列至预先设计的基于一维卷积神经网络的分类模型得标签序列,每个序列化特征片段生成一个预测标签”,具体还包括步骤:

依次输入所述特征序列至不同的一维及卷积模块得第一结果;

对所述第一结果进行一维卷积计算得第二结果;

对所述第二结果进行处理并输入全连接层得标签序列。

进一步的,所述指令集还用于执行:所述“依次输入所述特征序列至不同的一维及卷积模块得第一结果”,具体还包括步骤:

输入所述特征序列至一维及卷积模块1得第一预测结果;

输入第一预测结果至一维及卷积模块2得第二预测结果;

输入第二预测结果至一维及卷积模块3得第一结果。

进一步的,所述指令集还用于执行:所述“输入所述特征序列至一维及卷积模块1得第一预测结果”,具体还包括步骤:

对所述特征序列一次进行一维卷积计算、批标准化和最大池化计算得第一预测结果;

所述“输入第一预测结果至一维及卷积模块2得第二预测结果”,具体还包括步骤:

对所述第一预测结果进行一维卷积计算、批标准化和最大池化计算得第二预测结果;

所述“输入第二预测结果至一维及卷积模块3得第一结果”,具体还包括步骤:

对所述第二预测结果进行一维卷积计算、批标准化和最大池化计算得第一结果。

进一步的,所述指令集还用于执行:所述“根据预设规则对所述标签序列进行调整处理得风叶声音的边界位置”,具体还包括步骤:

对所述标签序列进行拼接及尖峰滤除;

对尖峰滤除后的标签序列进行扩采样;

寻找扩采样后的标签序列的跳变沿,得风叶声音的边界位置。

本发明的有益效果是:通过对输入的声音信号进行特征提取得特征序列;输入特征序列至预先设计的基于一维卷积神经网络的分类模型得标签序列,每个序列化特征片段生成一个预测标签;根据预设规则对所述标签序列进行调整处理得风叶声音的边界位置。通过实验数据证明,根据以上步骤可取得更准确的风叶声音的边界位置。

附图说明

图1为具体实施方式所述一种基于一维卷积神经网络的风叶声音边界定位方法的流程图;

图2为具体实施方式所述输入特征序列至预先设计的基于一维卷积神经网络的分类模型得标签序列的过程示意图;

图3为具体实施方式所述滑动窗口示意图一;

图4为具体实施方式所述滑动窗口示意图二;

图5为具体实施方式所述效果示意图一;

图6为具体实施方式所述效果示意图二;

图7为具体实施方式所述效果示意图三;

图8为具体实施方式所述一种存储设备的模块示意图。

附图标记说明:

800、存储设备。

具体实施方式

为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。

请参阅图1至图7,在本实施方式中,所述一种基于序列神经网络自动编码解码器的风叶声音边界定位方法可应用在一种存储设备上,所述存储设备包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备、嵌入式设备、可编程设备等。

具体技术方案如下:

步骤S101:对输入的声音信号进行特征提取得特征序列。具体可如下:输入为声音信号,然后使用python_speech_features库中的梅尔滤波器能量特征对数函数(logfbank)作为特征提取函数,从原始的声音信号提取出特征序列。本实施方式中设计特征提取时的分析窗口参数采用25ms,窗口步进参数采用10ms,FFT大小使用512,滤波器个数使用40。特征函数的这些参数设定可以根据具体场景调整。

输出为特征序列,本次设计特征函数输出序列的尺寸:n*filters,n为特征提取函数计算后输出的序列化长度,filters是特征维数,也就是特征提取函数的滤波器个数决定。

步骤S102:输入特征序列至预先设计的基于一维卷积神经网络的分类模型得标签序列,每个序列化特征片段生成一个预测标签。具体还包括步骤:

依次输入所述特征序列至不同的一维及卷积模块得第一结果;

对所述第一结果进行一维卷积计算得第二结果;

对所述第二结果进行处理并输入全连接层得标签序列。

以下对预先设计的基于一维卷积神经网络的分类模型进行说明:

1)、模型的神经网络结构

图2为自构建的基于一维卷积神经网络的分类模型的神经网络结构。

模型的神经网络结构实际上是定义了输入的特征序列的计算流程,通过一些基本计算单元的组合实施,得到最终的计算结果。神经网络模型的结构一般通过深度学习框架软件进行描述,比如tensorflow、pytorch等。

神经网络结构主要由3层的“一维卷积及池化”模块和最后一层的分类器组成:

其中3层的一维卷积及池化模块学习输入特征序列空间维度上的关系及时间轴方向的短时关系。其中第一层的卷积核大小设计为5,后面两层设计为3。第一层主要考虑设计一个相对较长的时间感知区域。

最后一层分类器根据前面学到的高级信息进行分类预测。

神经网络的一些计算算子说明如下:

InputLayer:输入的序列特征,也就是模块1的输出通过滑动窗口切割,形成windows*dims的序列输入模型,其中windows是一次计算的输入序列长度。本次为16(可根据场景调整),相当于输入160ms(16*10ms,10ms是模块1的分析步进窗口决定)。dims设计为40,与特征提取函数的滤波器个数一致。

Conv1D:一维卷积计算,计算空间方向及时间轴方向的特征关联。

MaxPooling1D:最大池化计算,取出上一层特征(feature)的设定窗口内的最明显特征。本次设计根据场景实验结果窗口设计为2。

BatchNormalization:批标准化,主要用于模型训练时容易收敛。

Flatten:将卷积的计算结果打平成一维向量,这样才能和后面的全连接网络连接。

Dense:全连接层,输出该声音片段的概率值。

图2中设计的只是模型的网络结构图,初始时这些网络节点分配的只是按照一定规则产生的随机值,实际应用前还需要通过大量的标注过的特征序列进行训练,从而学习到这些模型的各节点参数。

2)、模型的训练和参数学习

模型的训练采用有监督学习方法,就是根据业界通用的反向传播算法对模型进行训练。训练时输入批量的特征序列以及序列对应的标签值进行训练。

构造数据时,采用滑动窗口的方式对训练样本数据进行切片,如图3所示,切片后进行随机这样可以构造出大量的训练样本:

以下是一个输入的批量学习样本实例:

特征序列批量:

tf.Tensor(

[[[14.67487414.92917614.721283...5.76132256.13723046.5646505]

[15.46635214.42631214.200517...6.52372366.4829136.6087995]

[14.73976615.05977914.39604...7.7585117.83593657.8599515]

...

[15.44026216.17983211.991561...7.41736368.1492967.7754693]

[14.64718516.0111215.886822...6.8603478.0657886.2964406]

[13.57402514.95449914.037189...7.50315438.2016476.983526]]

[[18.59503419.33532119.32931...8.09948.3428598.36008]

[18.89443218.1057516.897528...11.25423111.38291611.445265]

[16.72313515.53775816.109953...9.239429.1405729.073882]

...

[19.93872518.99490518.840532...9.3838569.4476579.532557]

[20.3766418.66117518.02043...11.728188511.76804811.813188]

[20.56935120.33538218.154741...9.990389.98156410.010539]]

[[16.99134320.80117418.968353...8.8804258.8960558.933146]

[16.2737920.46038816.293732...9.98971910.00512310.042806]

[18.82071320.70531717.829527...10.89320310.91335710.949796]

...

[16.39034720.0544917.022566...13.1151213.13616313.175951]

[16.5568819.66687813.888933...8.7471298.7282228.764774]

[15.02191619.49529319.43134...13.23597613.26208213.302599]]

...

[[8.3987759.1258799.910327...7.1319947.0357576.8724523]

[7.91550878.9561210.631763...6.56753355.8077526.562023]

[8.3201089.5098199.687053...6.44785836.3614926.7415905]

...

[8.6934448.77817710.701321...6.5184265.88669356.3651733]

[9.65578610.32337956.776757...6.60496435.92078166.273444]

[3.74130239.7775468.534977...6.1811426.09520536.3909864]]

[[15.93504816.37894814.8027115...9.7316579.7382139.758192]

[15.0232618.27827614.0468...7.72696267.7996417.7823877]

[17.76542318.88382515.068492...6.06162556.2048916.355777]

...

[15.62406217.90128316.076818...9.1837229.2907969.299961]

[16.75757415.02949317.35574...9.6837659.70966159.756988]

[15.95612218.23239715.486906...6.64314376.6859336.895863]]],shape=(64,16,40),dtype=float32)

对应的标签值:

1的标签代表上面输入的特征序列是风叶声音,0代表是声音间隔:

tf.Tensor(

[0.0.0.0.0.0.0.0.0.1.0.0.1.0.0.1.0.1.0.1.0.0.1.0.

0.0.0.0.0.0.0.1.0.0.0.0.0.0.0.0.0.0.0.1.0.1.0.0.

1.0.1.0.0.1.0.0.1.0.1.0.0.1.0.0.],shape=(64,),dtype=float32)

上述样例的64代表每次输入64个样本进行训练,可以根据内存或显卡的内存容量进行调整。

3)、模型的实际部署使用

模型实际部署时,将声音信号转化成序列特征,然后对序列特征按窗口滑动截取成sequence*dims,输入到训练好的模型进行计算。滑动窗口的步进为2,如图4所示。

模型针对滑动窗口内的序列特征进行计算,计算后的输出实际上是0~1之间的概率值,我们设定阈值为0.7,将概率值转化为最后的预测标签值。阈值的设计会影响实际的精确率和召回率,可以根据实际场景调整。

经过阈值判断后,输出的标签序列为[1,1,1,1,1,0,0,0,…1,1,1,1…],1的位置代表预测为有风叶声音,0代表无风叶声音。

设计好基于一维卷积神经网络的分类模型,进一步的,所述“依次输入所述特征序列至不同的一维及卷积模块得第一结果”,具体还包括步骤:

输入所述特征序列至一维及卷积模块1得第一预测结果;

输入第一预测结果至一维及卷积模块2得第二预测结果;

输入第二预测结果至一维及卷积模块3得第一结果。

所述“输入所述特征序列至一维及卷积模块1得第一预测结果”,具体还包括步骤:

对所述特征序列一次进行一维卷积计算、批标准化和最大池化计算得第一预测结果;

所述“输入第一预测结果至一维及卷积模块2得第二预测结果”,具体还包括步骤:

对所述第一预测结果进行一维卷积计算、批标准化和最大池化计算得第二预测结果;

所述“输入第二预测结果至一维及卷积模块3得第一结果”,具体还包括步骤:

对所述第二预测结果进行一维卷积计算、批标准化和最大池化计算得第一结果。

步骤S103:根据预设规则对所述标签序列进行调整处理得风叶声音的边界位置。具体还包括步骤:

对所述标签序列进行拼接及尖峰滤除。具体可如下:

针对每个滑动窗口进行计算,将计算的结果拼接在一起。

由于每个序列窗口的预测输出是概率值,经过阈值判断后可能某些地方有尖峰,比如出现[…1,1,1,0,1,1,…]或者[…0,0,0,1,0,…]。

第1个标签序列需要将其中的单独的“0”改成“1”,第2个标签序列需要将单独的“1”改成“0”。这是因为风叶扫风有声音是个连续过程,无声音也是个连续过程,中间不会出现瞬变。

对尖峰滤除后的标签序列进行扩采样。具体可如下:由于窗口计算的步进是2,所以需要做一次扩采样与特征序列长度一一对应。方法就是简单的把每个标签值复制一次。

实例:

计算得到的标签序列[1,1,1,1,0,0,0,0,0],

扩采样后的标签序列[1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0]。

寻找扩采样后的标签序列的跳变沿,得风叶声音的边界位置。具体可如下:寻找扩采样后标签序列的跳变沿,从0到1代表风叶声音开始,从1到0代表风叶声音结束,因此就得到风叶声音的边界位置。

请参阅图5至图7,其中线在上方的代表人工听到的声音边界,线在下方的表示本申请方案标注的声音边界。图5为风机1:正常叶片。图6为风机2:其中两个风叶声音持续时间较长,一个风叶持续时间较短,从图中可以看出,针对短时声音,与采样窗口临界时,识别率会降低。图7为风机3:叠加环境噪声时,噪声降低时可恢复。

通过对输入的声音信号进行特征提取得特征序列;输入特征序列至预先设计的基于一维卷积神经网络的分类模型得标签序列,每个序列化特征片段生成一个预测标签;根据预设规则对所述标签序列进行调整处理得风叶声音的边界位置。通过实验数据证明,根据以上步骤可取得更准确的风叶声音的边界位置。

请参阅图2至图8,在本实施方式中,一种存储设备800的具体实施方式如下:

一种存储设备800,其中存储有指令集,所述指令集用于执行:

对输入的声音信号进行特征提取得特征序列。具体可如下:输入为声音信号,然后使用python_speech_features库中的梅尔滤波器能量特征对数函数(logfbank)作为特征提取函数,从原始的声音信号提取出特征序列。本实施方式中设计特征提取时的分析窗口参数采用25ms,窗口步进参数采用10ms,FFT大小使用512,滤波器个数使用40。特征函数的这些参数设定可以根据具体场景调整。

输出为特征序列,本次设计特征函数输出序列的尺寸:n*filters,n为特征提取函数计算后输出的序列化长度,filters是特征维数,也就是特征提取函数的滤波器个数决定。

输入特征序列至预先设计的基于一维卷积神经网络的分类模型得标签序列,每个序列化特征片段生成一个预测标签。具体还包括步骤:

依次输入所述特征序列至不同的一维及卷积模块得第一结果;

对所述第一结果进行一维卷积计算得第二结果;

对所述第二结果进行处理并输入全连接层得标签序列。

以下对预先设计的基于一维卷积神经网络的分类模型进行说明:

1)、模型的神经网络结构

图2为自构建的基于一维卷积神经网络的分类模型的神经网络结构。

模型的神经网络结构实际上是定义了输入的特征序列的计算流程,通过一些基本计算单元的组合实施,得到最终的计算结果。神经网络模型的结构一般通过深度学习框架软件进行描述,比如tensorflow、pytorch等。

神经网络结构主要由3层的“一维卷积及池化”模块和最后一层的分类器组成:

其中3层的一维卷积及池化模块学习输入特征序列空间维度上的关系及时间轴方向的短时关系。其中第一层的卷积核大小设计为5,后面两层设计为3。第一层主要考虑设计一个相对较长的时间感知区域。

最后一层分类器根据前面学到的高级信息进行分类预测。

神经网络的一些计算算子说明如下:

InputLayer:输入的序列特征,也就是模块1的输出通过滑动窗口切割,形成windows*dims的序列输入模型,其中windows是一次计算的输入序列长度。本次为16(可根据场景调整),相当于输入160ms(16*10ms,10ms是模块1的分析步进窗口决定)。dims设计为40,与特征提取函数的滤波器个数一致。

Conv1D:一维卷积计算,计算空间方向及时间轴方向的特征关联。

MaxPooling1D:最大池化计算,取出上一层特征(feature)的设定窗口内的最明显特征。本次设计根据场景实验结果窗口设计为2。

BatchNormalization:批标准化,主要用于模型训练时容易收敛。

Flatten:将卷积的计算结果打平成一维向量,这样才能和后面的全连接网络连接。

Dense:全连接层,输出该声音片段的概率值。

图2中设计的只是模型的网络结构图,初始时这些网络节点分配的只是按照一定规则产生的随机值,实际应用前还需要通过大量的标注过的特征序列进行训练,从而学习到这些模型的各节点参数。

2)、模型的训练和参数学习

模型的训练采用有监督学习方法,就是根据业界通用的反向传播算法对模型进行训练。训练时输入批量的特征序列以及序列对应的标签值进行训练。

构造数据时,采用滑动窗口的方式对训练样本数据进行切片,如图3所示,切片后进行随机这样可以构造出大量的训练样本:

以下是一个输入的批量学习样本实例:

特征序列批量:

tf.Tensor(

[[[14.67487414.92917614.721283...5.76132256.13723046.5646505]

[15.46635214.42631214.200517...6.52372366.4829136.6087995]

[14.73976615.05977914.39604...7.7585117.83593657.8599515]

...

[15.44026216.17983211.991561...7.41736368.1492967.7754693]

[14.64718516.0111215.886822...6.8603478.0657886.2964406]

[13.57402514.95449914.037189...7.50315438.2016476.983526]]

[[18.59503419.33532119.32931...8.09948.3428598.36008]

[18.89443218.1057516.897528...11.25423111.38291611.445265]

[16.72313515.53775816.109953...9.239429.1405729.073882]

...

[19.93872518.99490518.840532...9.3838569.4476579.532557]

[20.3766418.66117518.02043...11.728188511.76804811.813188]

[20.56935120.33538218.154741...9.990389.98156410.010539]]

[[16.99134320.80117418.968353...8.8804258.8960558.933146]

[16.2737920.46038816.293732...9.98971910.00512310.042806]

[18.82071320.70531717.829527...10.89320310.91335710.949796]

...

[16.39034720.0544917.022566...13.1151213.13616313.175951]

[16.5568819.66687813.888933...8.7471298.7282228.764774]

[15.02191619.49529319.43134...13.23597613.26208213.302599]]

...

[[8.3987759.1258799.910327...7.1319947.0357576.8724523]

[7.91550878.9561210.631763...6.56753355.8077526.562023]

[8.3201089.5098199.687053...6.44785836.3614926.7415905]

...

[8.6934448.77817710.701321...6.5184265.88669356.3651733]

[9.65578610.32337956.776757...6.60496435.92078166.273444]

[3.74130239.7775468.534977...6.1811426.09520536.3909864]]

[[15.93504816.37894814.8027115...9.7316579.7382139.758192]

[15.0232618.27827614.0468...7.72696267.7996417.7823877]

[17.76542318.88382515.068492...6.06162556.2048916.355777]

...

[15.62406217.90128316.076818...9.1837229.2907969.299961]

[16.75757415.02949317.35574...9.6837659.70966159.756988]

[15.95612218.23239715.486906...6.64314376.6859336.895863]]],shape=(64,16,40),dtype=float32)

对应的标签值:

1的标签代表上面输入的特征序列是风叶声音,0代表是声音间隔:

tf.Tensor(

[0.0.0.0.0.0.0.0.0.1.0.0.1.0.0.1.0.1.0.1.0.0.1.0.

0.0.0.0.0.0.0.1.0.0.0.0.0.0.0.0.0.0.0.1.0.1.0.0.

1.0.1.0.0.1.0.0.1.0.1.0.0.1.0.0.],shape=(64,),dtype=float32)

上述样例的64代表每次输入64个样本进行训练,可以根据内存或显卡的内存容量进行调整。

3)、模型的实际部署使用

模型实际部署时,将声音信号转化成序列特征,然后对序列特征按窗口滑动截取成sequence*dims,输入到训练好的模型进行计算。滑动窗口的步进为2,如图4所示。

模型针对滑动窗口内的序列特征进行计算,计算后的输出实际上是0~1之间的概率值,我们设定阈值为0.7,将概率值转化为最后的预测标签值。阈值的设计会影响实际的精确率和召回率,可以根据实际场景调整。

经过阈值判断后,输出的标签序列为[1,1,1,1,1,0,0,0,…1,1,1,1…],1的位置代表预测为有风叶声音,0代表无风叶声音。

设计好基于一维卷积神经网络的分类模型,进一步的,所述指令集还用于执行:所述“依次输入所述特征序列至不同的一维及卷积模块得第一结果”,具体还包括步骤:

输入所述特征序列至一维及卷积模块1得第一预测结果;

输入第一预测结果至一维及卷积模块2得第二预测结果;

输入第二预测结果至一维及卷积模块3得第一结果。

所述指令集还用于执行:所述“输入所述特征序列至一维及卷积模块1得第一预测结果”,具体还包括步骤:

对所述特征序列一次进行一维卷积计算、批标准化和最大池化计算得第一预测结果;

所述“输入第一预测结果至一维及卷积模块2得第二预测结果”,具体还包括步骤:

对所述第一预测结果进行一维卷积计算、批标准化和最大池化计算得第二预测结果;

所述“输入第二预测结果至一维及卷积模块3得第一结果”,具体还包括步骤:

对所述第二预测结果进行一维卷积计算、批标准化和最大池化计算得第一结果。

根据预设规则对所述标签序列进行调整处理得风叶声音的边界位置。具体还包括步骤:

对所述标签序列进行拼接及尖峰滤除。具体可如下:

针对每个滑动窗口进行计算,将计算的结果拼接在一起。

由于每个序列窗口的预测输出是概率值,经过阈值判断后可能某些地方有尖峰,比如出现[…1,1,1,0,1,1,…]或者[…0,0,0,1,0,…]。

第1个标签序列需要将其中的单独的“0”改成“1”,第2个标签序列需要将单独的“1”改成“0”。这是因为风叶扫风有声音是个连续过程,无声音也是个连续过程,中间不会出现瞬变。

对尖峰滤除后的标签序列进行扩采样。具体可如下:由于窗口计算的步进是2,所以需要做一次扩采样与特征序列长度一一对应。方法就是简单的把每个标签值复制一次。

实例:

计算得到的标签序列[1,1,1,1,0,0,0,0,0],

扩采样后的标签序列[1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0]。

寻找扩采样后的标签序列的跳变沿,得风叶声音的边界位置。具体可如下:寻找扩采样后标签序列的跳变沿,从0到1代表风叶声音开始,从1到0代表风叶声音结束,因此就得到风叶声音的边界位置。

请参阅图5至图7,其中线在上方的代表人工听到的声音边界,线在下方的表示本申请方案标注的声音边界。图5为风机1:正常叶片。图6为风机2:其中两个风叶声音持续时间较长,一个风叶持续时间较短,从图中可以看出,针对短时声音,与采样窗口临界时,识别率会降低。图7为风机3:叠加环境噪声时,噪声降低时可恢复。

通过对输入的声音信号进行特征提取得特征序列;输入特征序列至预先设计的基于一维卷积神经网络的分类模型得标签序列,每个序列化特征片段生成一个预测标签;根据预设规则对所述标签序列进行调整处理得风叶声音的边界位置。通过实验数据证明,根据以上步骤可取得更准确的风叶声音的边界位置。

需要说明的是,尽管在本文中已经对上述各实施例进行了描述,但并非因此限制本发明的专利保护范围。因此,基于本发明的创新理念,对本文所述实施例进行的变更和修改,或利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接地将以上技术方案运用在其他相关的技术领域,均包括在本发明的专利保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号