1.一种检测手指敲击声实现开关的方法,其特征在于,包括:S1、声感区域划分:将被控目标物的外表面划分成若干个可供手指敲击的声感区域;
S2、数据采集:在被控目标物的内部安装麦克风,让多个敲击人分别多次手指敲击声感区域,通过麦克风采集静音、敲击的起始音、敲击的拖尾音和噪音;
S3、数据标注:将静音、敲击的起始音、敲击的拖尾音作为正样本数据进行标注,静音标注为第一标签,敲击的起始音标注为第二标签,敲击的拖尾音标注为第三标签;将噪音作为负样本数据进行标注,噪音标注为第四标签;标注后的正样本数据和负样本数据组成数据集合;
S4、数据集合加噪、特征提取、打乱、分割:将数据集合进行加噪、特征提取,得到带有标签数据的数据特征;将数据特征打乱后,分割成训练集、校验集、测试集;
S5、神经网络模型设计和训练:采用卷积神经网络模型,其损失函数采用多分类交叉熵损失函数;将训练集、校验集、测试集放入卷积神经网络模型中进行训练,得到手指敲击检测神经网络模型;
S6、加载、编译手指敲击检测神经网络模型;
S7、通过麦克风接收声音信号,由手指敲击检测神经网络模型对声音信号进行预判分类,分类为静音、敲击的起始音、敲击的拖尾音或噪音;
S8、由手指敲击检测神经网络模型对分类后的声音信号的每帧识别结果进行解码,并且缓存解码得到的序列;
S9、由解码器的后滤波器解析序列,判断是否为有效敲击;若是,则启动被控目标物的开关操作;若否,则保持被控目标物的原有状态。
2.根据权利要求1所述的一种检测手指敲击声实现开关的方法,其特征在于:步骤S2中的麦克风套设有硅胶套。
3.根据权利要求1所述的一种检测手指敲击声实现开关的方法,其特征在于:步骤S2中的手指敲击包含手指尖敲击、手指腹敲击和手指关节敲击。
4.根据权利要求1所述的一种检测手指敲击声实现开关的方法,其特征在于:步骤S2中的手指敲击的力度为每个敲击人按个人认为舒适的方式随意敲击。
5.根据权利要求1所述的一种检测手指敲击声实现开关的方法,其特征在于:步骤S2中的手指敲击的方式和次数为:
1)手指尖敲击:每个敲击人在每个声感区域敲击M次,包含N次连续敲击两下和(M‑N)次连续敲击三下;
2)手指腹敲击:每个敲击人在每个声感区域敲击M次,包含N次连续敲击两下和(M‑N)次连续敲击三下;
3)手指关节敲击:每个敲击人在每个声感区域敲击M次,包含N次连续敲击两下和(M‑N)次连续敲击三下。
6.根据权利要求5所述的一种检测手指敲击声实现开关的方法,其特征在于:所述连续敲击为相邻2次敲击的时间不超过200ms。
7.根据权利要求1所述的一种检测手指敲击声实现开关的方法,其特征在于:步骤S4中的特征提取采用均衡Fbank特征提取方法。
8.根据权利要求7所述的一种检测手指敲击声实现开关的方法,其特征在于:所述均衡Fbank特征提取方法的具体流程为:
1)设原始的输入数据为x,圆周率为FPI,傅里叶变化点数为N,最高频为Max_freq,最低频为Min_freq,生成容器个数为M;
2)生成抖动因子,具体如下:
用余弦函数把抖动因子限定在一个范围内,即d_feat = sqrt(‑2 * log(d_) * cos(2*FPI* d_),其中d_为均值为0、方差为1的高斯分布;
抖动因子为dither = (d_feat * 2.0f) ‑ 1.0f),其中f表示浮点数;
3)原始数据加上抖动因子:x_D = x + dither;
4)处理后的每400个点,即25ms,取均值,然后做规整,具体如下:对x_D取均值:x_bar = mean(x_D);
减去直流分量,做规整,防止变化太大:x_f = x_D ‑ x_bar;
5)预加重:
第一个点,直流分量为x_pre(i) = x_f(i) * 0.05,其中i=0;
从第二个点直到后面的点,做差分:x_pre(i) = x_f(i) ‑ x_f(i‑1) *0.95,其中i=1,
2,3,……,N;
6)添加汉明窗,具体如下:
汉明窗的数值大小:ham = 0.54 ‑ 0.46*cos((2FPI/(N‑1)) * i),其中i=0,2,
3,……,N;
数据加窗:x_H = x_pre * ham;
7)N个点的短时傅里叶变换:
由时域变换到频域,即X_H = fft(x_H, N);
8)取能量谱:
X_E = real(X_H) ^ 2 + imag(X_H) ^ 2;
9)均衡生成对应的容器:
频谱带宽:SPAN_freq = (Max_freq‑ Min_freq);
平均容器大小:B_s = SPAN_freq /(M + 1);
对应点相乘:X_c =X_E* SPAN_freq[j * B_s:(j + 1)* B_s ],其中j=0,2,3,……,M;
10)每个容器内的点相加求和,然后取自然对数,即得到均衡的Fbank:Unibank[j] =Log(sum( X_c[j* B_s:(j + 1)* B_s ])),其中j=j=0,2,3,……,M。
9.根据权利要求1所述的一种检测手指敲击声实现开关的方法,其特征在于:步骤S9中的后滤波器的后滤波算法流程如下:
1)把神经网络解码得到的序列以及对应的概率放入缓冲区A和A_PRO;
2)分析缓冲区A和A_PROB,合并相同且相邻的类别,放入缓冲区B,且记录下连续相同类别的区间长度,放入缓冲区B_SPAN,且计算出区间长度内的均值概率放入B_PROB;
3)根据缓冲区B、B_SPAN和B_PROB:如果是连续2‑5帧的第二标签,把第二标签放入缓冲区C,如果是连续4‑10帧的第三标签,把第三标签放入C,否则把第一标签放入缓冲区C,且把分别类别对应的概率放入C_PROB;
4)对缓冲区C、C_PROB和B_SPAN进行二次解码,在缓冲区C里面找到相邻的第二标签和第三标签,且它们的概率分别超过设定的阀值,且敲击时长不超过27帧且含有两次或三次敲击声,判断为有效敲击,否则为无效敲击。
10.根据权利要求1所述的一种检测手指敲击声实现开关的方法,其特征在于:步骤S9中的有效敲击为2次或3次连续敲击。