分布式检测声音事件并选取相同事件点的方法
技术领域
本发明涉及分布式计算领域,尤其涉及一种分布式检测声音事件并选取相同事件点的方法。
背景技术
社交网络应用逐步从互联网转移到了移动设备上,例如任天堂公司的街边应用程序吸引了越来越多的用户使用。但是,由此也产生了很多相关的服务技术难题,特别是当用户想在一个区域网络内共同使用同一应用程序,而并不通过基站进行数据连接的问题。高效准确地发现其他用户将为应用程序的使用提供很大的帮助,利于用户之间定位(GPS)设备的共享,店铺也可以应用此功能向顾客发送电子宣传单等。
目前,移动设备主要是由电池提供电量,如果保持无线通讯模块始终在监听状态,虽然可以保证很快发现邻居用户,但是这样会很快消耗掉移动设备的电量,在实际使用中并不合适。因此我们只能间歇性打开无线通讯模块去探测邻居用户,然而,如何保证用户在统一的某一时刻同时进行探测,成为间歇性探测技术中一个关键问题。传统的一些邻居探测方法虽然能保证在一定时间内可以发现邻居用户,但是其功耗依然很大,而且效率低,需要一段时间才可以发现邻居用户。我们可以设置移动设备检测周围声音事件,并以事件点作为触发打开通讯模块的信号实现发现邻居用户。但是,用户之间在此之前没有信息通讯,需要独立分布式计算选择的事件点。实际中缺少一种有效的分布式检测声音事件并选取相同事件点的方法。
发明内容
针对上述技术问题,本发明的目的在于提供一种分布式检测声音事件并选取相同事件点的方法,其在移动设备独立分布式计算的限制下,提高了检测声音事件并且不同设备选择相同事件点的准确性。为达此目的,本发明采用以下技术方案:
一种分布式检测声音事件并选取相同事件点的方法,其包括如下步骤:
A、周期性采集环境声音信息;
B、采集到需要数量的环境声音信息后,利用采集到的声音信息提取一系列熵值和流动值;
C、将一系列的熵值和流动值编码成一个不定长的零一序列,根据熵值编码长度,根据流动值确定编码为零还是为一;
D、从上述零一序列中选取最长的连续为一的编码部分,并将起始位置作为事件点。
特别地,所述步骤A中周期性采集环境声音信息,具体是指:
以2赫兹的频率周期性采集环境声音信息,每次采集时间的长度为64毫秒。
特别地,所述步骤B具体包括:
在采集了20~60次环境声音信息之后,对每一次采样信息进行分析,首先进行快速傅里叶变换,得到声音片段的频域信息,并计算此声音片段即采样片段内的声音熵值和流动值:
熵值:
流动值:
fi(u)指频谱归一化后在第i个声音片段中第u个频域值;M指频域值的个数。
特别地,所述步骤C中编码,具体是指:
我们将这一系列的熵值和流动值编码成一个不定长的零一序列,其中每个采样片段的熵值决定此片段编码的长度,流动值决定了编码成零还是一。
特别地,所述步骤C中在根据熵值编码长度,具体是指:
熵值越低编码长度越长,且编码长度与熵值非线性变化,而符合下列式子
其中,Hmax和Hmin分别指所有采样点中熵值的最大值及最小值。
特别地,所述步骤C中流动值确定编码为零还是为一,具体是指:
以一个采样片段为中心,设置一个大小为15的比较窗口。如果此采样片段的流动值是此窗口内的前三大的流动值,则编码为一,否则编码为零。
特别地,所述步骤D中选取最长的连续为一的编码部分,并将起始位置最为事件点,具体是指:
从步骤C中编好的不定长零一序列中找到最长的连续为一的子序列,并将此子序列的起始位置所对应的采样片段位置作为事件点。
本发明将低功耗采样得到的声音信息片段在频域上提取熵值和流动值,并利用这两个值将声音信息编码成一个不定长的零一序列,最后在序列中找到最长的连续为一的子序列最为事件点,使得不同移动设备独立分布式计算也能选择到相同的事件点,为发现邻居用户提供了便利。
附图说明
图1为本发明实施例提供的分布式检测声音事件并选取相同事件点的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图和实施例对本发明作进一步说明。
请参照图1所示,图1为本发明实施例提供的快速、低功耗发现邻居用户的方法流程图。
本实施例中分布式检测声音事件并选取相同事件点的方法包括如下步骤:
步骤S101、以2赫兹的频率周期性采集环境声音信息,每次采集时间的长度为64毫秒。特别地,针对声音采样频率44.1kHz的设置,每次采集的声音片段约包括2048的采样值。
步骤S102、在一段时间(采集到需要数量的环境声音信息后)之后利用采集到的声音信息提取一系列熵值和流动值。
在采集了20~60次环境声音信息之后,对每一次采样信息进行分析,首先进行快速傅里叶变换,得到声音片段的频域信息,计算此声音片段即采样片段内的声音熵值和流动值。
熵值:
流动值:
fi(u)指频谱归一化后在第i个声音片段中第u个频域值;M指频域值的个数。
步骤S103、将一系列的熵值和流动值编码成一个不定长的零一序列,根据熵值编码长度,流动值确定编码为零还是为一。
依据步骤S102得到的熵值与流动值,决定每一个采样片段编码的长度与数值,特别地,熵值决定长度,熵值越低编码长度越长,且编码长度与熵值非线性变化,而符合下列式子
其中,Hmax和Hmin分别指所有采样点中熵值的最大值及最小值。
流动值决定了编码为零还是为一。以一个采样片段为中心,设置一个大小为15的比较窗口。如果此采样片段的流动值是此窗口内的前三大的流动值,则编码为一,否则编码为零。
这样每一个采样点都变成了一个不定长的连续一或者连续零序列,拼接在一起成为一个不定长的零一序列。
步骤S104、选取最长的连续为一的编码部分,并将起始位置最为事件点。
从步骤S103中的得到的不定长零一序列中,找出最长的连续为一的子序列,并将此子序列的起始位置所对应的采样片段位置作为事件点。
本发明极大的增加了不同移动设备独立分布式计算检测并选取相同声音事件点的可能性,为在此基础上设计的发现邻居用户应用提供了便利。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。