一种马达控制方法、控制系统和控制芯片

文档序号:706958 发布日期:2021-04-16 浏览:16次 >En<

阅读说明:本技术 一种马达控制方法、控制系统和控制芯片 (Motor control method, control system and control chip ) 是由 缪丽林 于 2020-12-31 设计创作,主要内容包括:本发明提供了一种马达控制方法、控制系统和控制芯片,包括:获取当前运行游戏的立体音频数据;判断所述立体音频数据中是否包含特定语音;若包含特定语音,判断所述特定语音是否为第一特定语音,所述特定语音包括枪声,所述第一特定语音包括所述当前运行游戏的玩家自己的枪声;若是第一特定语音,在播放所述第一特定语音时,控制马达进行振动,从而可以仅在玩家自己射击枪声时控制马达产生振动,屏蔽了别人射击枪声带来的误振,增强了人机互动,提升了射击类游戏枪声振动的乐趣。(The invention provides a motor control method, a control system and a control chip, comprising the following steps: acquiring stereo audio data of a current running game; judging whether the stereo audio data contains specific voice or not; if the specific voice is contained, judging whether the specific voice is a first specific voice, wherein the specific voice comprises a gunshot, and the first specific voice comprises the own gunshot of the player currently running the game; if first specific pronunciation, playing during first specific pronunciation, the control motor vibrates to can only control the motor and produce the vibration when the player oneself shoots the gunshot, shield the mistake that other people shot the gunshot and brought and vibrate, strengthen man-machine interaction, promote the enjoyment of shooting type recreation gunshot vibration.)

一种马达控制方法、控制系统和控制芯片

技术领域

本发明涉及马达控制技术领域,更具体地说,涉及一种马达控制方法、控制系统和控制芯片。

背景技术

手机作为现代社会科技进步的象征,已经成为每个人都几乎必须拥有的工具,手机游戏也逐渐成为人们日常休闲娱乐的活动。其中射击类手机游戏,玩家通过控制人物移动和射击,与其他玩家进行竞技,在这个过程中玩家不仅能从扬声器播出的游戏声音获得一定的游戏反馈,还能从手机随着枪声振动获得更多维度的游戏反馈。

但是,现有技术的缺点在于,在游戏竞技过程中,不仅玩家自己射击枪声会产生相应振动,别的玩家射击枪声也会产生振动,无法满足玩家对于仅自己射击枪声产生振动的需求。

发明内容

有鉴于此,本发明提供了一种马达控制方法、控制系统和控制芯片,以仅在玩家自己射击枪声时控制马达产生相应的振动。

为实现上述目的,本发明提供如下技术方案:

一种马达控制方法,包括:

获取当前运行游戏的立体音频数据;

判断所述立体音频数据中是否包含特定语音;

若包含特定语音,判断所述特定语音是否为第一特定语音,所述特定语音包括枪声,所述第一特定语音包括所述当前运行游戏的玩家自己的枪声;

若是第一特定语音,在播放所述第一特定语音时,控制马达进行振动。

可选地,判断所述立体音频数据中是否包含特定语音之前还包括:

将所述立体音频数据分成第一组数据、第二组数据和第三组数据,所述第一组数据为所述立体音频数据中左声道数据和右声道数据中绝对值最小的一个,所述第二组数据为所述立体音频数据中的左声道数据,所述第三组数据为所述立体音频数据中的右声道数据;

判断所述立体音频数据中是否包含特定语音包括:根据所述第一组数据判断所述立体音频数据中是否包含特定语音;

判断所述特定语音是否为第一特定语音包括:根据所述第二组数据和所述第三组数据判断所述特定语音是否为第一特定语音。

可选地,根据所述第一组数据判断所述立体音频数据中是否包含特定语音之前,还包括:

将所述第一组数据、所述第二组数据和所述第三组数据都分成多帧数据,其中,每N个数据为一帧,N为大于1的自然数;

对所述第一组数据、所述第二组数据和所述第三组数据中的每帧数据进行低通滤波处理,保留每帧数据中特定语音所在频段的数据;

对低通滤波处理后的第一组数据、第二组数据和第三组数据中每帧数据中的N个数据取绝对值后求和,并计算出所述第一组数据、所述第二组数据和所述第三组数据中每帧数据中的N个数据的平均值。

可选地,根据所述第一组数据判断所述立体音频数据中是否包含特定语音包括:

判定所述第一组数据中的第i帧数据所在点是快速波峰点,i≥0,则所述第i帧数据包含所述特定语音;

判定所述第一组数据中的第i帧数据所在点非快速波峰点,但所述第一组数据中的第i-1帧数据所在点为波峰点,i≥1,则所述第i-1帧数据包含所述特定语音;

若所述第i帧数据或所述第i-1帧数据包含所述特定语音,则所述立体音频数据包含所述特定语音。

可选地,判断所述第一组数据中的第i帧数据所在点是快速波峰点包括:

判断所述第一组数据中第i帧数据的平均值大于等于第一预设值,以及,所述第一组数据中第i帧数据与其之前的相邻波谷点之间的数据的平均值都小于等于第一预设值这两个条件是否同时成立,i≥0;

若是,则所述第一组数据中的第i帧数据所在点是快速波峰点。

可选地,判断是否为波谷点包括:

判断所述第一组数据中第i-2帧数据的平均值大于第i-1帧数据的平均值,以及,第i-1帧数据的平均值小于或等于第i帧数据的平均值这两个条件是否同时成立,i≥2;

若是,判定所述第一组数据中的第i-1帧数据所在点为波谷点。

可选地,判断所述第一组数据中的第i-1帧数据是否为波峰点包括:

判断所述第一组数据中第i-2帧数据的平均值小于第i-1帧数据的平均值,以及,第i-1帧数据的平均值大于或等于第i帧数据的平均值这两个条件是否同时成立,i≥2;

若是,判定所述第一组数据中的第i-1帧数据所在点为波峰点。

可选地,根据所述第二组数据和所述第三组数据判断所述特定语音是否为第一特定语音包括:

判断第j帧数据的特定语音参数是否小于第二预设值,若是,则判定所述第j帧数据中的特定语音为所述第一特定语音;

其中,若所述第二组数据中第j帧数据的平均值大于或等于所述第三组数据中第j帧数据的平均值,则所述特定语音参数等于所述第二组数据中第j帧数据的平均值与所述第三组数据中第j帧数据的平均值的比值;若所述第二组数据中第j帧数据的平均值小于所述第三组数据中第j帧数据的平均值,则所述特定语音参数等于所述第三组数据中第j帧数据的平均值与所述第二组数据中第j帧数据的平均值的比值。

可选地,判定所述特定语音为第一特定语音之后,还包括:

根据所述第一组数据中第j帧数据的平均值确定所述马达的振感,以控制马达进行相应振感的振动。

一种马达控制系统,包括:

音频获取模块,用于获取当前运行游戏的立体音频数据;

语音识别模块,用于判断所述立体音频数据中是否包含特定语音以及所述特定语音是否为第一特定语音,并用于输出控制指令,其中,所述特定语音包括枪声,所述第一特定语音包括所述当前运行游戏的玩家自己的枪声;

马达驱动芯片,用于接收所述控制指令并控制马达进行振动;

音频功放模块,用于接收所述音频获取模块获取的立体音频数据,并用于控制扬声器播放所述立体音频数据。

可选地,所述语音识别模块还用于将所述立体音频数据分成第一组数据、第二组数据和第三组数据,所述第一组数据为所述立体音频数据中左声道数据和右声道数据中绝对值最小的一个,所述第二组数据为所述立体音频数据中的左声道数据,所述第三组数据为所述立体音频数据中的右声道数据,并根据所述第一组数据判断所述立体音频数据中是否包含特定语音,根据所述第二组数据和所述第三组数据判断所述特定语音是否为第一特定语音。

可选地,在根据所述第一组数据判断所述立体音频数据中是否包含特定语音之前,所述语音识别模块还用于将所述第一组数据、所述第二组数据和所述第三组数据都分成多帧数据,对所述第一组数据、所述第二组数据和所述第三组数据中的每帧数据进行低通滤波处理,保留每帧数据中特定语音所在频段的数据,对低通滤波处理后的第一组数据、第二组数据和第三组数据中每帧数据中的N个数据取绝对值后求和,并计算出所述第一组数据、所述第二组数据和所述第三组数据中每帧数据中的N个数据的平均值;

其中,每N个数据为一帧,N为大于1的自然数。

可选地,所述语音识别模块用于在所述第一组数据中的第i帧数据所在点是快速波峰点时,i≥0,判定所述立体音频数据包含所述特定语音,或者,在所述第一组数据中的第i帧数据所在点非快速波峰点,但所述第一组数据中的第i-1帧数据为波峰点时,i≥1,判定所述立体音频数据包含所述特定语音。

可选地,所述语音识别模块用于在所述第一组数据中第i帧数据的平均值大于等于第一预设值,且所述第一组数据中第i帧数据与其之前的相邻波谷点之间的数据的平均值都小于等于第一预设值时,判定所述第一组数据中的第i帧数据所在点是快速波峰点;i≥0。

可选地,所述语音识别模块用于在所述第一组数据中第i-2帧数据的平均值大于第i-1帧数据的平均值,且第i-1帧数据的平均值小于或等于第i帧数据的平均值时,判定所述第一组数据中的第i-1帧数据所在点为波谷点;i≥2。

可选地,所述语音识别模块用于在所述第一组数据中第i-2帧数据的平均值小于第i-1帧数据的平均值,且第i-1帧数据的平均值大于或等于第i帧数据的平均值时,判定所述第一组数据中的第i-1帧数据所在点为波峰点;i≥2。

可选地,所述语音识别模块用于在第j帧数据的特定语音参数小于第二预设值时,判定所述第j帧数据中的特定语音为所述第一特定语音;

其中,若所述第二组数据中第j帧数据的平均值大于或等于所述第三组数据中第j帧数据的平均值,则所述特定语音参数等于所述第二组数据中第j帧数据的平均值与所述第三组数据中第j帧数据的平均值的比值;若所述第二组数据中第j帧数据的平均值小于所述第三组数据中第j帧数据的平均值,则所述特定语音参数等于所述第三组数据中第j帧数据的平均值与所述第二组数据中第j帧数据的平均值的比值。

可选地,判定所述特定语音为第一特定语音之后,所述语音识别模块还用于根据所述第一组数据中第j帧数据的平均值确定所述马达的振感,以通过所述控制指令控制马达进行相应振感的振动。

一种马达控制芯片,包括处理器和存储器;

所述存储器用于存储计算机执行指令;

所述处理器用于执行如上任一项所述的马达控制方法。

与现有技术相比,本发明所提供的技术方案具有以下优点:

本发明所提供的马达控制方法、控制系统和控制芯片,获取当前运行游戏的音频数据,判断所述音频数据中是否包含特定语音,若包含特定语音,判断所述特定语音是否为第一特定语音,所述特定语音包括枪声,所述第一特定语音包括所述当前运行游戏的玩家自己的枪声,若是第一特定语音,在播放所述第一特定语音时,控制马达进行振动,从而可以仅在玩家自己射击枪声时控制马达产生相应的振动,屏蔽了别人射击枪声带来的误振,增强了人机互动,提升了射击类游戏枪声振动的乐趣。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明一个实施例提供的马达控制方法的流程图;

图2为本发明一个实施例提供的马达控制系统的结构示意图。

具体实施方式

以上是本发明的核心思想,为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种马达控制方法,如图1所示,包括:

S101:获取当前运行游戏的立体音频数据;

以采用手机运行游戏为例,在游戏运行的过程中,随着玩家的操作,游戏会生成并播放不同的语音,如玩家射击时,游戏会生成并播放枪声。基于此,本发明实施例中,可以从手机系统端获得当前运行游戏的音频数据,即立体音频信号,该音频数据可以是各种格式的音频文件经过解码后输出的音频数据流,之后将音频数据流处理为16bit的有符号整数,这里以绝地求生刺激战场游戏为例,从手机系统端获取到48k采样率,16bit采样深度的立体音频数据流。当然,在其他实施例中,可以根据实际情况设置采样率和采样深度,在此不再赘述。

S102:判断音频数据流中是否包含特定语音,若包含特定语音,进入S103;

S103:判断特定语音是否为第一特定语音,特定语音包括枪声,第一特定语音包括当前运行游戏的玩家自己的枪声,若是第一特定语音,进入S104;

S104:在播放第一特定语音时,控制马达进行振动。

获取当前运行游戏的立体音频数据之后,可以从立体音频数据中获得当前运行游戏生成待播放的语音,进而可以从语音中识别出是否包含所需的特定语音如枪声,然后判断特定语音是否为第一特定语音,如判断枪声是否为玩家自己的枪声,如果是玩家自己的枪声,则在播放第一特定语音即玩家自己的枪声的同时,控制马达进行振动,如果不是玩家自己的枪声,而是别的玩家的枪声,则不控制马达进行振动。需要说明的是,本发明实施例中,仅以特定语音为枪声,第一特定语音为玩家自己的枪声为例进行说明,但是,并不仅限于此。

由于游戏播放语音时,会根据发出语音的位置与玩家之间的距离以及发出语音的位置与玩家之间的角度,生成左右声道参数不同的立体语音,例如,玩家自己发出的语音,则玩家左右声道的全频段语音音量差别不大,玩家左侧的其他玩家发出的语音,则玩家左声道的高频部分频段语音音量较大、右声道的高频对应频段语音音量较小,玩家右侧的其他玩家发出的语音,则玩家右声道的高频部分频段语音音量较大、左声道的高频对应频段语音音量较小,因此,玩家可以根据立体语音判断发出语音的位置。

基于此,本发明实施例中,可以根据立体音频数据判断当前语音中是否包含特定语音,根据立体音频数据中的左声道数据和右声道数据判断特定语音是否为第一特定语音。并且,为了减小判断立体音频数据中当前语音中是否包含特定语音的数据量,提高计算效率,本发明一些实施例中,对立体音频数据中的左声道数据和右声道数据取小,以通过对较小的数据的计算判断当前语音中是否包含特定语音。

即,本发明一些实施例中,判断立体音频数据中是否包含特定语音之前还包括:将立体音频数据分成第一组数据、第二组数据和第三组数据,第一组数据为立体音频数据中左声道数据和右声道数据中绝对值最小的一个,第二组数据为立体音频数据中的左声道数据,第三组数据为立体音频数据中的右声道数据。

并且,判断立体音频数据中是否包含特定语音包括:根据第一组数据判断音频数据中是否包含特定语音;判断特定语音是否为第一特定语音包括:根据第二组数据和第三组数据判断特定语音是否为第一特定语音。

其中,取左声道数据和右声道数据中绝对值最小的一个的计算公式如下:

若abs(Audio_L(n))≤abs(Audio_R(n)),则Audio(n)=Audio_L(n);

若abs(Audio_L(n))>abs(Audio_R(n)),则Audio(n)=Audio_R(n);

其中,n=0、1、2…,Audio(n)表示第一组数据,Audio_L(n)表示左声道数据,Audio_R(n)表示右声道数据,abs()表示取绝对值。

在此基础上,根据第一组数据判断立体音频数据中是否包含特定语音之前,还包括:

将第一组数据、第二组数据和第三组数据都分成多帧数据,其中,每N个数据为一帧,不足N个的结尾进行补0处理,N为大于1的自然数;为了方便计算,N可以取1024;其中,第一组数据、第二组数据和第三组数据分成的帧数相同;

对第一组数据、第二组数据和第三组数据中的每帧数据进行低通滤波处理,保留每帧数据中特定语音所在频段的数据,滤除其他频段的数据,特定语音包含第一特定语音。由于游戏中枪声的主要频点在60Hz-200Hz范围内,因此,本发明一些实施例中,选取低通滤波的截止频率为225Hz,滤除游戏中的绝大部分人声和背景音。之后,对滤波处理后的第一组数据、第二组数据和第三组数据中每帧数据中的N个数据取绝对值后求和,并计算出第一组数据、第二组数据和第三组数据中每帧数据中的N个数据的平均值。

即,对低通滤波处理后的第一组数据中的每帧数据中的N个数据取绝对值后求和得到SUM(i),并计算出第一组数据中每帧数据中的N个数据的平均值AVE(i),对低通滤波处理后的第二组数据中的每帧数据中的N个数据取绝对值后求和得到SUM_L(i),并计算出第二组数据中每帧数据中的N个数据的平均值AVE_L(i),对低通滤波处理后的第三组数据中的每帧数据中的N个数据取绝对值后求和得到SUM_R(i),并计算出第三组数据中每帧数据中的N个数据的平均值AVE_R(i);其中,i=0、1、2…,AVE(i)=SUM(i)/N,AVE_L(i)=SUM_L(i)/N,AVE_R(i)=SUM_R(i)/N。

获得第一组数据中每帧数据中的N个数据的平均值AVE(i)之后,即可根据平均值AVE(i)判断立体音频数据中是否包含特定语音,本发明一些实施例中,根据第一组数据判断立体音频数据中是否包含特定语音包括:

判定第一组数据中的第i帧数据所在点是快速波峰点,i≥0,则第i帧数据包含特定语音;

判定第一组数据中的第i帧数据所在点非快速波峰点,但第一组数据中的第i-1帧数据所在点为波峰点,i≥1,则第i-1帧数据包含特定语音;

若第i帧数据或第i-1帧数据包含特定语音,则立体音频数据包含特定语音。

即,判断第一组数据中的第i帧数据所在点是否是快速波峰点,i≥0,若是快速波峰点,则第i帧数据包含特定语音;若不是快速波峰点,判断第一组数据中的第i-1帧数据是否为波峰点,i≥1,若是波峰点,则第i-1帧数据包含特定语音;若第i帧数据或第i-1帧数据包含特定语音,则立体音频数据包含特定语音。

本发明一些实施例中,判断第一组数据中的第i帧数据所在点是快速波峰点包括:

判断第一组数据中第i帧数据的平均值大于等于第一预设值,以及,第一组数据中第i帧数据与其之前的相邻波谷点之间的数据的平均值都小于等于第一预设值这两个条件是否同时成立,i≥0;若是,则第一组数据中的第i帧数据所在点是快速波峰点。

其中,当特定语音为枪声时,第一预设值为枪声振动判定最强振感的触发阈值。可选地,第一预设值为3500,当然,本发明并不仅限于此,在不同应用场景中可根据实际情况对第一预设值进行设定。

本发明一些实施例中,判断第一组数据中的第i-1帧数据是否为波峰点包括:

判断第一组数据中第i-2帧数据的平均值小于第i-1帧数据的平均值,以及,第i-1帧数据的平均值大于或等于第i帧数据的平均值这两个条件是否同时成立,i≥2;若是,判定第一组数据中的第i-1帧数据所在点为波峰点。

本发明一些实施例中,判断是否为波谷点包括:

判断第一组数据中第i-2帧数据的平均值大于第i-1帧数据的平均值,以及,第i-1帧数据的平均值小于或等于第i帧数据的平均值这两个条件是否同时成立,i≥2;若是,判定第一组数据中的第i-1帧数据所在点为波谷点。

需要说明的是,当数据中包含特定语音如枪声时,数据的平均值较大,数据所在点一般为波峰点,相邻特定语音如相邻枪声之间的点一般为波谷点。但是,在判断数据中是否存在特定语音时,若判断第i帧数据所在点是否波峰点,需等待手机系统端输出第i+1帧数据后才能进行判断,这样就会导致判断时间较长。

基于此,本发明一些实施例中,通过判断第i帧数据的平均值是否大于等于第一预设值,来判断第i帧数据所在点是否为快速波峰点,该快速波峰点位于即将达到波峰点的位置,通过判断是否存在快速波峰点即可判断是否存在波峰点,进而可以判断是否存在特定语音,从而无需等待手机系统端输出第i+1帧数据,进而可以快速地判断数据中是否存在特定语音。

需要说明的是,判断第一组数据中第i帧数据的平均值大于等于第一预设值之后,还需判断第一组数据中第i帧数据与其之前的相邻波谷点之间的数据的平均值都小于等于第一预设值才能确定第i帧数据所在点是否为快速波峰点。这是因为不仅波峰点左侧存在平均值大于等于第一预设值的点,波峰点右侧也存在平均值大于等于第一预设值的点。若第一组数据中第i帧数据与其之前的相邻波谷点之间的数据的平均值大于第一预设值,则说明已经对波峰点左侧的快速波峰点进行了判断,已经确定了数据中包含了特定语音,因此,不需要再重复判断。但是,若第一组数据中第i帧数据与其之前的相邻波谷点之间的数据的平均值都小于等于第一预设值,则说明还未判定该波峰点包含了特定语音,因此,需要进入后续判断流程进行判断。

还需要说明的是,之所以限定第一组数据中第i帧数据与其之前的相邻波谷点之间的数据,是因为音频数据中会包含多个特定语音,如包含多个枪声,而相邻特定语音如相邻枪声之间的点一般为波谷点,因此,为了避免对之前已经判断过的特定语音进行判断,在判断快速波峰点时,限定了判定的数据为第一组数据中第i帧数据与其之前的相邻波谷点之间的数据。

一些具体实施方式中,根据第一组数据判断立体音频数据中是否包含特定语音包括:

判断第一组数据中第i-2帧数据的平均值AVE(i-2)小于第i-1帧数据的平均值AVE(i-1),以及,第i-1帧数据的平均值AVE(i-1)大于或等于第i帧数据的平均值AVE(i)这两个条件是否同时成立,i≥2;

若是,判定第一组数据中的第i-1帧数据所在点为波峰点,并令波峰标志Peak_falg为1、波谷标志Valley_flag为0;

若否,判断第一组数据中第i-2帧数据的平均值AVE(i-2)大于第i-1帧数据的平均值AVE(i-1),以及,第i-1帧数据的平均值AVE(i-1)小于或等于第i帧数据的平均值AVE(i)这两个条件是否同时成立;

若是,判定第一组数据中的第i-1帧数据所在点为波谷点,并令快速波峰标志FastPeak_flag为0、波峰标志Peak_falg为0、波谷标志Valley_flag为1;

若否,判断第一组数据中第i帧数据的平均值AVE(i)大于第一预设值,以及,快速波峰标志FastPeak_flag为0这两个条件是否同时成立,其中,i≥0;

若是,判定第一组数据中的第i帧数据所在点为快速波峰点,令快速波峰标志FastPeak_flag为1、波谷标志Valley_flag为0;

判断快速波峰标志FastPeak_flag是否为1,若是,则判定第i帧数据包含特定语音,若否,则判定第i帧数据不包含特定语音。

本发明一些实施例中,判定第i帧数据不包含特定语音之后,还包括:

判断波峰标志Peak_falg等于1,以及,快速波峰标志FastPeak_flag等于0这两个条件是否同时成立;若是,则判定第i-1帧数据包含特定语音,若否,判定第i-1帧数据不包含特定语音。

同样,若第i帧数据或第i-1帧数据包含特定语音,则判定立体音频数据包含特定语音。

在判定第i帧数据包含特定语音之后还包括:判定第i帧数据包含的特定语音是否为第一特定语音;判定第i-1帧数据包含特定语音之后还包括:判定第i-1帧数据包含的特定语音是否为第一特定语音。

本发明一些实施例中,根据第二组数据和第三组数据判断特定语音是否为第一特定语音包括:

判断第j帧数据的特定语音参数是否小于第二预设值,若是,则判定第j帧数据中的特定语音为第一特定语音;

其中,若第二组数据中第j帧数据的平均值大于或等于第三组数据中第j帧数据的平均值,则特定语音参数等于第二组数据中第j帧数据的平均值与第三组数据中第j帧数据的平均值的比值;若第二组数据中第j帧数据的平均值小于第三组数据中第j帧数据的平均值,则特定语音参数等于第三组数据中第j帧数据的平均值与第二组数据中第j帧数据的平均值的比值。

一些具体实施方式中,根据第二组数据和第三组数据判断特定语音是否为第一特定语音包括:

判断第二组数据中第j帧数据的平均值AVE_L(j)是否大于或等于第三组数据中第j帧数据的平均值AVE_R(j),j≥0;

若是,即当第二组数据中第j帧数据的平均值AVE_L(j)大于或等于第三组数据中第j帧数据的平均值AVE_R(j)时,令特定语音参数Self_shoot_flag等于第二组数据中第j帧数据的平均值AVE_L(j)与第三组数据中第j帧数据的平均值AVE_R(j)的比值,即令Self_shoot_flag=AVE_L(j)/AVE_R(j);

若否,即当第二组数据中第j帧数据的平均值AVE_L(j)小于第三组数据中第j帧数据的平均值AVE_R(j)时,令特定语音参数Self_shoot_flag等于第三组数据中第j帧数据的平均值AVE_R(j)与第二组数据中第j帧数据的平均值AVE_L(j)的比值,即令Self_shoot_flag=AVE_R(j)/AVE_L(j);

判断特定语音参数Self_shoot_flag是否小于第二预设值,若是,则判定第j帧数据包含第一特定语音。其中,当特定语音为枪声时,第二预设值可选为1.08。

也就是说,判定第i帧数据所在的点为快速波峰点,则可判定第i帧数据包含特定语音,之后判断第二组数据中第i帧数据的平均值AVE_L(i)是否大于或等于第三组数据中第i帧数据的平均值AVE_R(i),i≥0;若是,令Self_shoot_flag=AVE_L(i)/AVE_R(i);若否,令Self_shoot_flag=AVE_R(i)/AVE_L(i);进一步判断特定语音参数Self_shoot_flag是否小于第二预设值,若是,则判定第i帧数据包含第一特定语音。

判定i-1帧数据所在的点为波峰点且非快速波峰点时,则可判定第i-1帧数据包含特定语音,之后,判断第二组数据中第i-1帧数据的平均值AVE_L(i-1)是否大于或等于第三组数据中第i-1帧数据的平均值AVE_R(i-1),(i-1)≥0;若是,令Self_shoot_flag=AVE_L(i-1)/AVE_R(i-1);若否,令Self_shoot_flag=AVE_R(i-1)/AVE_L(i-1);进一步判断特定语音参数Self_shoot_flag是否小于第二预设值,若是,则判定第i-1帧数据包含第一特定语音。

本发明一些实施例中,判定第j帧数据包含第一特定语音之后,还包括:根据第一组数据中第j帧数据的平均值确定马达的振感,以控制马达进行相应振感的振动。

具体地,当第j帧数据所在的点为快速波峰点,且判定第j帧数据包含第一特定语音之后,则控制马达在第j帧进行相应振感的振动;当第j-1帧数据所在的点为波峰点且非快速波峰点,且判定第j-1帧数据包含第一特定语音之后,则控制马达在第j帧进行相应振感的振动。

由于不同类型的枪发出的语音不同,因此,本发明一些实施例中,根据不同的枪声控制马达进行了不同振感的振动,以提升游戏体验效果。其中,当判定第j帧数据包含第一特定语音之后,令马达振感判定数据PeakData等于第一组数据中第j帧数据的平均值AVE(j),即令PeakData=AVE(j),若1000≤PeakData<2100,则令马达振感为第一值;若2100≤PeakData<2500,则令马达振感为第二值;若2500≤PeakData<3500,则令马达振感为第三值;若3500≤PeakData,则令马达振感为第四值;PeakData等于其他值,则马达不振或停止振动。

可选地,第一值、第二值、第三值和第四值依次增大,且平均值AVE(j)越大马达的振感强度越强。但是,本发明并不仅限于此,在另一些实施例中,平均值AVE(j)不同的马达的振感强度相同,但平均值AVE(j)越大马达的振动时长越长,以使平均值AVE(j)不同的马达的振感不同。需要说明的是,本发明实施例中,会不断获取当前运行游戏的立体音频数据,会不断地对立体音频数据进行分组、分帧和滤波处理等,会按照时间顺序不断地对每帧数据进行判断,若判定其中一帧数据包含第一特定语音,则控制马达进行相应的振动。不论判断结果中,当前数据是否包含第一特定语音,都会对后续输出的立体音频数据进行判断,直到当前运行的游戏停止或关闭。

本发明实施例还提供了一种马达控制系统,如图2所示,包括:

音频获取模块20,用于获取当前运行游戏的立体音频数据;

语音识别模块21,用于判断立体音频数据中是否包含特定语音以及特定语音是否为第一特定语音,并输出控制指令,其中,特定语音包括枪声,第一特定语音包括当前运行游戏的玩家自己的枪声;

马达驱动芯片23,用于接收语音识别模块21输出的控制指令并控制马达25进行振动;

音频功放模块22,用于接收音频获取模块20获取的立体音频数据,并控制扬声器24播放立体音频数据。

需要说明的是,音频获取模块20获取当前运行游戏的立体音频数据之后,会将立体音频数据传输至音频功放模块22,音频功放模块22会控制扬声器24播放立体音频数据。音频获取模块20将立体音频数据传输至音频功放模块22的同时,会将立体音频数据传输至语音识别模块21,语音识别模块21判断立体音频数据中是否包含特定语音,并判断特定语音是否是第一特定语音,若立体音频数据中包含特定语音且特定语音是第一特定语音时,则输出控制指令至马达驱动芯片23,马达驱动芯片23在接收到控制指令后控制马达25进行振动。由于语音识别模块21的识别速度很快,因此,可以在扬声器24播放立体音频数据的同时,控制马达25进行振动。

以采用手机运行游戏为例,在游戏运行的过程中,随着玩家的操作,游戏会生成并播放不同的语音,如玩家射击时,游戏会生成并播放枪声。基于此,音频获取模块20从手机系统端获得当前运行游戏的音频数据即立体语音频信号,该音频数据可以是各种格式的音频文件经过解码后输出的音频数据流。

本发明一些实施例中,语音识别模块21还用于将立体音频数据分成第一组数据、第二组数据和第三组数据,第一组数据为立体音频数据中左声道数据和右声道数据中绝对值最小的一个,第二组数据为立体音频数据中的左声道数据,第三组数据为立体音频数据中的右声道数据,并根据第一组数据判断立体音频数据中是否包含特定语音,根据第二组数据和第三组数据判断特定语音是否为第一特定语音。

在此基础上,在根据第一组数据判断立体音频数据中是否包含特定语音之前,语音识别模块21还用于将第一组数据、第二组数据和第三组数据都分成多帧数据,对第一组数据、第二组数据和第三组数据中的每帧数据进行低通滤波处理,保留每帧数据中特定语音所在频段的数据,对低通滤波处理后的第一组数据、第二组数据和第三组数据中每帧数据中的N个数据取绝对值后求和,并计算出第一组数据、第二组数据和第三组数据中每帧数据中的N个数据的平均值;

其中,每N个数据为一帧,N为大于1的自然数。

即,语音识别模块21还用于将第一组数据、第二组数据和第三组数据都分成多帧数据,其中,每N个数据为一帧,不足N个的结尾进行补0处理,N为大于1的自然数;对第一组数据、第二组数据和第三组数据中的每帧数据进行低通滤波处理,保留每帧数据中特定语音所在频段的数据,滤除其他频段的数据,特定语音包含第一特定语音;对低通滤波处理后的第一组数据中的每帧数据中的N个数据取绝对值后求和得到SUM(i),并计算出第一组数据中每帧数据中的N个数据的平均值AVE(i),对低通滤波处理后的第二组数据中的每帧数据中的N个数据取绝对值后求和得到SUM_L(i),并计算出第二组数据中每帧数据中的N个数据的平均值AVE_L(i),对低通滤波处理后的第三组数据中的每帧数据中的N个数据取绝对值后求和得到SUM_R(i),并计算出第三组数据中每帧数据中的N个数据的平均值AVE_R(i)。其中,i=0、1、2…,AVE(i)=SUM(i)/N,AVE_L(i)=SUM_L(i)/N,AVE_R(i)=SUM_R(i)/N。

本发明一些实施例中,语音识别模块21用于在第一组数据中的第i帧数据所在点是快速波峰点时,i≥0,判定立体音频数据包含特定语音,或者,在第一组数据中的第i帧数据所在点非快速波峰点,但第一组数据中的第i-1帧数据所在点为波峰点时,i≥1,判定立体音频数据包含特定语音。

本发明一些实施例中,语音识别模块21用于在第一组数据中第i帧数据的平均值大于等于第一预设值,且第一组数据中第i帧数据与其之前的相邻波谷点之间的数据的平均值都小于等于小于第一预设值时,判定第一组数据中的第i帧数据所在点是快速波峰点;i≥0。

本发明一些实施例中,语音识别模块21用于在第一组数据中第i-2帧数据的平均值大于第i-1帧数据的平均值,且第i-1帧数据的平均值小于或等于第i帧数据的平均值时,判定第一组数据中的第i-1帧数据所在点为波谷点;i≥2。

本发明一些实施例中,语音识别模块21用于在第一组数据中第i-2帧数据的平均值小于第i-1帧数据的平均值,且第i-1帧数据的平均值大于或等于第i帧数据的平均值时,判定第一组数据中的第i-1帧数据所在点为波峰点;i≥2。

一些具体实施方式中,语音识别模块21用于判断第一组数据中第i-2帧数据的平均值AVE(i-2)小于第i-1帧数据的平均值AVE(i-1),以及,第i-1帧数据的平均值AVE(i-1)大于或等于第i帧数据的平均值AVE(i)这两个条件是否同时成立,i≥2;

若是,判定第一组数据中的第i-1帧数据所在点为波峰点,并令波峰标志Peak_falg为1、波谷标志Valley_flag为0;

若否,判断第一组数据中第i-2帧数据的平均值AVE(i-2)大于第i-1帧数据的平均值AVE(i-1),以及,第i-1帧数据的平均值AVE(i-1)小于或等于第i帧数据的平均值AVE(i)这两个条件是否同时成立;

若是,判定第一组数据中的第i-1帧数据所在点为波谷点,并令快速波峰标志FastPeak_flag为0、波峰标志Peak_falg为0、波谷标志Valley_flag为1;

若否,判断第一组数据中第i帧数据的平均值AVE(i)大于第一预设值,以及,快速波峰标志FastPeak_flag为0这两个条件是否同时成立,其中,i≥0;

若是,判定第一组数据中的第i帧数据所在点为快速波峰点,令快速波峰标志FastPeak_flag为1、波谷标志Valley_flag为0;

判断快速波峰标志FastPeak_flag是否为1,若是,则判定第i帧数据包含特定语音,若否,则判定第i帧数据不包含特定语音。

在此基础上,判定第i帧数据不包含特定语音之后,语音识别模块21还用于判断波峰标志Peak_falg等于1,以及,快速波峰标志FastPeak_flag等于0这两个条件是否同时成立;若是,则判定第i-1帧数据包含特定语音,若否,判定第i-1帧数据不包含特定语音。其中,若判定第i帧数据包含特定语音或判定第i-1帧数据包含特定语音,则语音识别模块21判定立体音频数据中包含特定语音。

在此基础上,本发明一些实施例中,语音识别模块21还用于在第j帧数据的特定语音参数小于第二预设值时,判定第j帧数据中的特定语音为第一特定语音;

其中,若第二组数据中第j帧数据的平均值大于或等于第三组数据中第j帧数据的平均值,则特定语音参数等于第二组数据中第j帧数据的平均值与第三组数据中第j帧数据的平均值的比值;若第二组数据中第j帧数据的平均值小于第三组数据中第j帧数据的平均值,则特定语音参数等于第三组数据中第j帧数据的平均值与第二组数据中第j帧数据的平均值的比值。

一些具体实施方式中,语音识别模块21用于判断第二组数据中第j帧数据的平均值AVE_L(j)是否大于或等于第三组数据中第j帧数据的平均值AVE_R(j),j≥0;若是,令特定语音参数Self_shoot_flag等于第二组数据中第j帧数据的平均值AVE_L(j)与第三组数据中第j帧数据的平均值AVE_R(j)的比值,即令Self_shoot_flag=AVE_L(j)/AVE_R(j);若否,令特定语音参数Self_shoot_flag等于第三组数据中第j帧数据的平均值AVE_R(j)与第二组数据中第j帧数据的平均值AVE_L(j)的比值,即令Self_shoot_flag=AVE_R(j)/AVE_L(j);判断特定语音参数Self_shoot_flag是否小于第二预设值,若是,则判定第j帧数据包含第一特定语音。其中,当特定语音为枪声时,第二预设值可选为1.08。

也就是说,在判定第i帧数据包含特定语音之后,语音识别模块21用于判断第二组数据中第i帧数据的平均值AVE_L(i)是否大于或等于第三组数据中第i帧数据的平均值AVE_R(i),i≥0;

若是,令Self_shoot_flag=AVE_L(i)/AVE_R(i);

若否,令Self_shoot_flag=AVE_R(i)/AVE_L(i);

判断特定语音参数Self_shoot_flag是否小于第二预设值,若是,则判定第i帧数据包含第一特定语音。

判定第i-1帧数据包含特定语音之后,语音识别模块21用于判断第二组数据中第i-1帧数据的平均值AVE_L(i-1)是否大于或等于第三组数据中第i-1帧数据的平均值AVE_R(i-1),(i-1)≥0;

若是,令Self_shoot_flag=AVE_L(i-1)/AVE_R(i-1);

若否,令Self_shoot_flag=AVE_R(i-1)/AVE_L(i-1);

判断特定语音参数Self_shoot_flag是否小于第二预设值,若是,则判定第i-1帧数据包含第一特定语音。

本发明一些实施例中,判定特定语音为第一特定语音之后,语音识别模块21还用于根据第一组数据中第j帧数据的平均值确定马达的振感,以通过控制指令控制马达进行相应振感的振动。

一些具体实施方式中,语音识别模块21判定第j帧数据包含第一特定语音之后,令马达振感判定数据PeakData等于第一组数据中第j帧数据的平均值AVE(j),即令PeakData=AVE(j),之后,判断PeakData是否大于或等于1000、且小于2100,若是,令马达振感为第一值,若否,判断PeakData是否大于或等于2100、且小于2500,若是,令马达振感为第二值,若否,判断PeakData是否大于或等于2500、且小于3500,若是,令马达振感为第三值,若否,判断PeakData是否大于或等于3500,若是,则令马达振感为第四值,若否,则马达不振或停止振动。

本发明实施例还提供了一种马达控制芯片,包括处理器和存储器;

存储器用于存储计算机执行指令;

当处理器执行计算机执行指令时,处理器执行如上任一实施例提供的马达控制方法。即,处理器用于执行如上任一实施例提供的马达控制方法。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:游戏运行方法和装置、电子设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类