用户音高条的显示方法及计算机可读存储介质与流程

未命名 10-09 阅读:107 评论:0


1.本发明涉及多媒体技术领域,尤其涉及一种用户音高条的显示方法及计算机可读存储介质。


背景技术:

2.在歌曲演唱时,一般需要用标准音高条与用户音高条对照的方式,来显示用户演唱过程的音准、节奏的正确情况,以达到纠错目的。
3.在对照显示的时候,现有技术一般有两种方案:
4.一种是当用户演唱音高正确时,填充相应位置的标准音高条,用户演唱音高有偏差的时候,不做任何填充动作。一些微调方案中会有一个实时指示当前用户音高的游标,随时间在音高条区域滑动。这一方案的优点是界面干净(演唱过的位置只有正确的才填充),显著缺点是缺乏严谨的纠错能力(因为没有标注唱错的位置是偏高还是偏低,偏多少)。
5.另一种方案是当用户演唱时,实时地把用户演唱的音高用区别于标准音高条的颜色都标注出来。因为音准评分系统的基础原理是以小时间分片(如50毫秒)为单位计算一次用户音高值,然后与标准音高值比对显示;而标准音高条一般在一段时间(如2秒内)是平稳的,所以,当用户音高在这段时间内有波动的时候,就会绘制出零散的高低错落的多个小音高条,整体界面会显得很凌乱。一些微调方案中会在绘制当前用户音高时,根据是否与附近时刻音高接近为依据进行音高条“合并显示”。该微调方案能有效解决界面凌乱问题,但却损失了一定的严谨性。
6.另外,现有的方案中,音高条区域一般只会显示歌曲音高范围,若用户低八度或高八度演唱,按音高映射到音高条区域,则用户音高条会显示在音高条区域之外,此时用户则无法观察到音高比对结果。


技术实现要素:

7.本发明所要解决的技术问题是:提供一种用户音高条的显示方法及计算机可读存储介质,能够更精准硬度地显示用户音高条。
8.为了解决上述技术问题,本发明采用的技术方案为:一种用户音高条的显示方法,包括:
9.根据预设的时长,实时获取当前输入音频片段,并获取当前输入音频片段的音高值,作为当前用户音高值;
10.根据当前输入音频片段对应的偏移时间以及歌曲曲谱对应的各标准音高条的起止时间,在各标准音高条中确定当前用户音高值对应的目标音高条,并获取所述目标音高条的音高值、时长和绘制宽高;
11.根据歌曲曲谱对应的音域范围,对当前用户音高值进行修正;
12.根据修正后的当前用户音高值、当前输入音频片段对应的偏移时间和时长以及所述目标音高条的起止时间、横向起止位置、时长和绘制宽高,确定当前用户音高条在预设的
音高条区域内的绘制位置和绘制宽高;
13.根据当前用户音高条的绘制参数,所述绘制参数包括绘制位置和绘制宽高,在所述音高条区域内绘制当前用户音高条。
14.本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的方法。
15.本发明的有益效果在于:通过根据歌曲的音域范围,对用户音高值进行修正,可以自适应地将高于或低于歌曲整八度的用户音高映射到歌曲音域范围内,在相同的音域范围内对用户音高条和标准音高条进行对照显示,使得用户降八度或高八度演唱时,仍然可以有效地观察到音高比对结果;同时,无论演唱对错均展示用户音高条,确保纠错信息的完整性。
附图说明
16.图1为本发明的一种用户音高条的显示方法的流程图;
17.图2为本发明实施例一的方法流程图;
18.图3为本发明实施例一的音高条区域与音域的关系示意图;
19.图4为本发明实施例一的用户音高条的颜色示意图;
20.图5为本发明实施例二的步骤s4的流程图。
具体实施方式
21.为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
22.请参阅图1,一种用户音高条的显示方法,包括:
23.根据预设的时长,实时获取当前输入音频片段,并获取当前输入音频片段的音高值,作为当前用户音高值;
24.根据当前输入音频片段对应的偏移时间以及歌曲曲谱对应的各标准音高条的起止时间,在各标准音高条中确定当前用户音高值对应的目标音高条,并获取所述目标音高条的音高值、时长和绘制宽高;
25.根据歌曲曲谱对应的音域范围,对当前用户音高值进行修正;
26.根据修正后的当前用户音高值、当前输入音频片段对应的偏移时间和时长以及所述目标音高条的起止时间、横向起止位置、时长和绘制宽高,确定当前用户音高条在预设的音高条区域内的绘制位置和绘制宽高;
27.根据当前用户音高条的绘制参数,所述绘制参数包括绘制位置和绘制宽高,在所述音高条区域内绘制当前用户音高条。
28.从上述描述可知,本发明的有益效果在于:通过对用户音高值进行修正,可正确识别用户音域,并偏移到曲谱音高条表示的音域范围,进行对照显示,使得用户降八度或高八度演唱时,仍然可以有效地观察到音高比对结果;同时确保了纠错信息的完整性。
29.进一步地,所述根据歌曲曲谱对应的音域范围,对当前用户音高值进行修正,具体为:
30.根据第一修正公式,计算修正后的当前用户音高值,所述第一修正公式为
fixeduserpitch=userpitch+12
×
round((normalpitch-userpitch)/12),其中,userpitch为当前用户音高值,fixeduserpitch为修正后的当前用户音高值,normalpitch为所述目标音高条的音高值,round()表示取四舍五入后的整数。
31.由上述描述可知,通过对用户音高值进行整八度倍数地修正,使得用户降八度或高八度演唱时,仍然可以有效地观察到音高比对结果。
32.进一步地,所述根据歌曲曲谱对应的音域范围,对当前用户音高值进行修正,具体为:
33.获取标准音高值数组和用户音高值数组,所述用户音高值数组包括当前时刻前预设时段内的各输入音频片段的音高值,所述标准音高值数组包括所述各输入音频片段对应的目标音高条的音高值;
34.根据所述标准音高值数组和用户音高值数组,计算八度位移数组;
35.根据所述用户音高值数组和八度位移数组,计算修正音高值数组;
36.根据所述标准音高值数组和修正音高值数组,计算偏差值数组;
37.获取所述偏差值数组中小于预设偏差阈值的偏差值的索引,并根据所述索引检索所述八度位移数组,得到修正八度位移数组;
38.统计所述修正八度位移数组中出现次数最多的值,作为最终八度位移值;
39.根据所述最终八度位移值,对当前用户音高值进行修正。
40.由上述描述可知,通过分析前一段时间内的标准音高值数组和用户音高值数组,可更准确地评估出用户音高值相对标准音高值的八度位移值,从而更准确地显示音高比对结果。
41.进一步地,所述根据所述标准音高值数组和用户音高值数组,计算八度位移数组;根据所述用户音高值数组和八度位移数组,计算修正音高值数组;根据所述标准音高值数组和修正音高值数组,计算偏差值数组,具体为:
42.根据八度位移数组计算公式,计算八度位移数组,所述八度位移数组计算公式为octaveshiftarray=round((normalpitcharray-userpitcharray)/12);
43.根据修正音高值数组计算公式,计算修正音高值数组,所述修正音高值数组计算公式为fixeduserpitcharray=userpitcharray+12
×
octaveshiftarray;
44.根据偏差值数组计算公式,计算偏差值数组,所述偏差值数组计算公式为diffarray=abs(fixeduserpitcharray-normalpitcharray);
45.其中,octaveshiftarray表示八度位移数组,round()表示取四舍五入后的整数,normalpitcharray表示标准音高值数组,userpitcharray表示用户音高值数组,fixeduserpitcharray表示修正音高值数组,diffarray表示偏差值数组,abs()表示取绝对值。
46.进一步地,所述根据所述最终八度位移值,对当前用户音高值进行修正,具体为:
47.根据第二修正公式,对当前用户音高值进行修正,所述第二修正公式为fixeduserpitch=userpitch+12
×
octaveshift,其中,userpitch为当前用户音高值,fixeduserpitch为修正后的当前用户音高值,octaveshift为最终八度位移值。
48.进一步地,所述绘制参数还包括绘制颜色;
49.所述根据歌曲曲谱对应的音域范围,对当前用户音高值进行修正之后,进一步包
括:
50.根据修正后的当前用户音高值和所述目标音高条的音高值,确定当前用户音高条的绘制颜色。
51.进一步地,所述根据修正后的当前用户音高值和所述目标音高条的音高值,确定当前用户音高条的绘制颜色,具体为:
52.若修正后的当前用户音高值与所述目标音高条的音高值相等,则将当前用户音高条的绘制颜色设为第一颜色;
53.若修正后的当前用户音高值与所述目标音高条的音高值的差值绝对值小于或等于预设的音高差值阈值,则将当前用户音高条的绘制颜色设为第二颜色;
54.若修正后的当前用户音高值与所述目标音高条的音高值的差值绝对值大于预设的音高差值阈值,则将当前用户音高条的绘制颜色设为第三颜色;
55.其中,所述第一颜色和第二颜色为相近色。
56.由上述描述可知,通过在用户音高值与目标音高条的音高值偏差不大的时候用较浅的正确色绘制用户音高条,可在降低界面凌乱程度的同时,保留音差程度信息。
57.进一步地,所述根据当前输入音频片段对应的偏移时间以及歌曲曲谱对应的各标准音高条的起止时间,在各标准音高条中确定当前用户音高值对应的目标音高条,包括:
58.若当前输入音频片段对应的偏移时间在一标准音高条的起止时间之间,则将所述一标准音高条作为当前用户音高值对应的目标音高条。
59.由上述描述可知,根据时间关系,可准确地确定对应的目标音高条。
60.进一步地,所述根据预设的时长,实时获取当前输入音频片段之前,进一步包括:
61.获取歌曲曲谱,并在预设的音高条区域内显示所述歌曲曲谱对应的标准音高条。
62.进一步地,以所述音高条区域的左下角为原点,向右方向为x轴正方向,向上方向为y轴正方向,构建二维坐标系;
63.所述音高条区域的高度为h,h=a
×
(maxpitch-minpitch),其中,maxpitch和minpitch分别为所述歌曲曲谱中的最大音高值和最小音高值,a为预设的映射系数;
64.各标准音高条在所述音高条区域内的纵向位置分别通过第一纵向位置计算公式确定,所述第一纵向位置计算公式为normyi=a
×
(normpitch
i-minpitch),其中,normyi为一标准音高条在所述音高条区域内的纵向位置,normpitchi为所述一标准音高条的音高值。
65.进一步地,所述根据修正后的当前用户音高值、当前输入音频片段对应的偏移时间和时长以及所述目标音高条的起止时间、横向起止位置、时长和绘制宽高,确定当前用户音高条在预设的音高条区域内的绘制位置和绘制宽高,具体为:
66.根据第二纵向位置计算公式,计算当前用户音高条在所述音高条区域内的纵向位置,所述第二纵向位置计算公式为usery=a
×
(fixeduserpitch-minpitch),其中,usery为当前用户音高条在所述音高条区域内的纵向位置,fixeduserpitch为修正后的当前用户音高值,minpitch为歌曲曲谱中的最小音高值,a为预设的映射系数;
67.根据横向位置计算公式,计算当前用户音高条在所述音高条区域内的横向位置,所述横向计算公式为userx=(usertime-normalstarttime)/normalduration
×
normalw+xnormalstart,其中,userx为当前用户音高条在所述音高条区域内的横向位置,usertime
为当前输入音频对应的偏移时间,normalduration为所述目标音高条的时长,normalduration=normalendtime-normalstarttime,normalstarttime和normalendtime分别为所述目标音高条的开始时间和结束时间,normalw为所述目标音高条的绘制宽度,normalw=xnormalend-xnormalstart,xnormalstart和xnormalend分别为所述目标音高条的横向开始位置和横向结束位置;
68.根据绘制宽度计算公式,计算当前用户音高条的绘制宽度,所述绘制宽度计算公式为w=userduration/normalduration
×
normalw,其中,w为当前用户音高条的绘制宽度,userduration为当前输入音频的时长;
69.根据所述目标音高条的绘制高度,确定当前用户音高条的绘制高度。
70.由上述描述可知,通过根据音高值来确定音高条的纵向位置,可直观地体现出不同音高条之间的音高关系;根据当前输入音频在目标音高条的时间比例关系,确定用户音高条的横向起止位置及宽度,可保证用户音高条对目标音高条的横向对齐。
71.本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的方法。
72.实施例一
73.请参照图2-4,本发明的实施例一为:一种用户音高条的显示方法,可应用于视听场所内的多媒体终端,如图2所示,包括如下步骤:
74.s1:获取歌曲曲谱,并在预设的音高条区域内显示所述歌曲曲谱对应的标准音高条。
75.具体地,以音高条区域的左下角为原点,向右方向为x轴正方向,向上方向为y轴正方向,构建二维坐标系。
76.音高条区域为左上角坐标为(0,h),右下角坐标为(w,0)的矩形区域,其中,h=a
×
(maxpitch-minpitch),maxpitch和minpitch分别为所述歌曲曲谱中的最大音高值和最小音高值,a为预设的映射系数,本实施例中,a=5。
77.各标准音高条在音高条区域内的纵向位置分别通过第一纵向位置计算公式确定,第一纵向位置计算公式为:
78.normyi=a
×
(normpitch
i-minpitch);
79.其中,normyi为一标准音高条在音高条区域内的纵向位置,normpitchi为该标准音高条的音高值。
80.s2:根据预设的时长,实时获取当前输入音频片段,并获取当前输入音频片段的音高值,作为当前用户音高值。
81.本实施例中,预设的时长为50ms,即实时获取50ms的输入音频片段作为当前输入音频片段,并获取其音高值,以midi表示,作为当前用户音高值userpitch。
82.s3:根据当前输入音频片段对应的偏移时间以及歌曲曲谱对应的各标准音高条的起止时间,在各标准音高条中确定当前用户音高值对应的目标音高条,并获取所述目标音高条的音高值、时长和绘制宽高。
83.具体地,若当前输入音频片段对应的偏移时间在一标准音高条的起止时间之间,则将所述一标准音高条作为当前用户音高值对应的目标音高条,
84.其中,当前输入音频片段对应的偏移时间指的是相对歌曲开始时间的偏移时间,
即一标准音高条的开始时间≤偏移时间≤一标准音高条的结束时间,则将该标准音高条作为目标音高条,并获取其音高值normalpitch、时长normalduration、绘制宽度normalw和绘制高度normalh。
85.进一步地,如果偏移时间位于相邻的两条标准音高条的间隔时间之间,即若当前输入音频片段对应的偏移时间在第一标准音高条的结束时间和第二标准音高条的开始时间之间,第一标准音高条和第二标准音高条为相邻的两条标准音高条,则将第一标准音高条或第二标准音高条作为当前用户音高值对应的目标音高条。或者不显示当前输入音频片段对应的音高条,即不显示当前用户音高条。
86.s4:根据歌曲曲谱对应的音域范围,对当前用户音高值进行修正。
87.具体地,根据第一修正公式,计算修正后的当前用户音高值,第一修正公式为fixeduserpitch=userpitch+12
×
round((normalpitch-userpitch)/12),其中,userpitch为当前用户音高值,fixeduserpitch为修正后的当前用户音高值,normalpitch为所述目标音高条的音高值,round()表示取四舍五入后的整数。
88.由步骤s1可知,音高条区域的高度是根据歌曲曲谱中的最大音高值和最小音高值计算得到的,因此,音高条区域的高度不会覆盖所有音域,只覆盖了歌曲曲谱对应的音域范围。而用户演唱音高可能在歌曲音域,也可能在比歌曲标准音高整体高八度或低八度演唱的音域,若根据用户音高值计算用户音高条的纵向位置,则会显示在音高条区域之外。例如,如图3所示,虚线框为应用界面范围,音高条区域位于界面下方,假设歌曲曲谱的音高范围为60-67,而用户低八度演唱(67低八度为55),此时按照用户音高值映射纵向位置,则用户音高条会显示在界面范围之外。但整体高八度或低八度演唱方式也被认为是正确的,应该显示在音高条区域之内,因此,通过对用户音高值进行整八度倍数地修正,使得用户降八度或高八度演唱时,仍然可以有效地观察到音高比对结果。
89.s5:根据修正后的当前用户音高值、当前输入音频片段对应的偏移时间和时长以及所述目标音高条的起止时间、横向起止位置、时长和绘制宽高,确定当前用户音高条在音高条区域内的绘制位置和绘制宽高。
90.具体地,根据第二纵向位置计算公式usery=a
×
(fixeduserpitch-minpitch),计算当前用户音高条在音高条区域内的纵向位置usery,其中,fixeduserpitch为修正后的当前用户音高值,minpitch为歌曲曲谱中的最小音高值,a为预设的映射系数。
91.根据横向位置计算公式userx=(usertime-normalstarttime)/normalduration
×
normalw+xnormalstart,normalduration=normalendtime-normalstarttime,normalw=xnormalend-xnormalstart,计算当前用户音高条在音高条区域内的横向位置userx,其中,usertime为当前输入音频对应的偏移时间,normalduration为目标音高条的时长,normalstarttime和normalendtime分别为目标音高条的开始时间和结束时间,normalw为目标音高条的绘制宽度,xnormalstart和xnormalend分别为目标音高条的横向开始位置和横向结束位置。
92.根据绘制宽度计算公式w=userduration/normalduration
×
normalw,计算当前用户音高条的绘制宽度w,其中,userduration为当前输入音频的时长,即步骤s2中预设的时长,本实施例中即为50ms。
93.根据目标音高条的绘制高度,确定当前用户音高条的绘制高度,即当前用户音高
条的绘制高度h=目标音高条的绘制高度normalh。
94.s6:根据修正后的当前用户音高值和所述目标音高条的音高值,确定当前用户音高条的绘制颜色。
95.具体地,若修正后的当前用户音高值与所述目标音高条的音高值相等,即fixeduserpitch=normalpitch,则将当前用户音高条的绘制颜色设为第一颜色。
96.若修正后的当前用户音高值与所述目标音高条的音高值的差值绝对值小于或等于预设的音高差值阈值,即abs(fixeduserpitch-normalpitch)≤α,则将当前用户音高条的绘制颜色设为第二颜色。其中,abs()表示取绝对值。本实施例中,音高差值阈值α=2。
97.若修正后的当前用户音高值与所述目标音高条的音高值的差值绝对值大于预设的音高差值阈值,即abs(fixeduserpitch-normalpitch)>α,则将当前用户音高条的绘制颜色设为第三颜色。
98.其中,第一颜色和第二颜色为相近色,第一颜色和第三颜色为对比色,如图4所示。本实施例中,第一颜色为绿色,第二颜色为浅绿色,第三颜色为红色。
99.s7:根据当前用户音高条的绘制位置、绘制宽高和绘制颜色,在所述音高条区域内绘制当前用户音高条。
100.具体地,以当前用户音高条在音高条区域内的纵向位置usery为矩形横向中心线位置,以当前用户音高条在音高条区域内的横向位置userx为矩形左边界位置,绘制一个矩形,该矩形的宽度为绘制宽度w,高度为绘制高度h,并填充相应的绘制颜色,即表示当前用户音高条。
101.本实施例通过根据歌曲的音域范围,对用户音高值进行修正,可以自适应地将高于或低于歌曲整八度的用户音高映射到歌曲音域范围内,在相同的音域范围内对用户音高条和标准音高条进行对照显示,使得用户降八度或高八度演唱时,仍然可以有效地观察到音高比对结果;同时,无论演唱对错均展示用户音高条,确保纠错信息的完整性;并且,通过在用户音高值与目标音高条的音高值偏差不大的时候用较浅的正确色绘制用户音高条,可在降低界面凌乱程度的同时,保留音差程度信息。
102.实施例二
103.请参照图5,本实施例是实施例一中步骤s4的另一种实现方式,如图5所示,包括如下步骤:
104.s401:获取标准音高值数组和用户音高值数组,其中,用户音高值数组包括当前时刻前预设时段内的各输入音频片段的音高值,标准音高值数组包括所述各输入音频片段对应的目标音高条的音高值。
105.本实施例中预设时段为5秒,即获取当前输入音频片段对应的偏移时间的前5s内的所有输入音频片段的音高值,每个输入音频片段的时长为50ms,因此一般情况下,相当于获取当前输入音频片段之前的100个输入音频片段的音高值,并获取这100个输入音频片段对应的目标音高条的音高值,作为标准音高值数组。
106.s402:根据所述标准音高值数组和用户音高值数组,计算八度位移数组。
107.具体地,根据八度位移数组计算公式,计算八度位移数组,八度位移数组计算公式为octaveshiftarray=round((normalpitcharray-userpitcharray)/12);其中,octaveshiftarray表示八度位移数组,round()表示取四舍五入后的整数,
normalpitcharray表示标准音高值数组,userpitcharray表示用户音高值数组。
108.s403:根据所述用户音高值数组和八度位移数组,计算修正音高值数组。
109.具体地,根据修正音高值数组计算公式,计算修正音高值数组fixeduserpitcharray,修正音高值数组计算公式为fixeduserpitcharray=userpitcharray+12
×
octaveshiftarray。
110.s404:根据所述标准音高值数组和修正音高值数组,计算偏差值数组。
111.具体地,根据偏差值数组计算公式,计算偏差值数组diffarray,偏差值数组计算公式为diffarray=abs(fixeduserpitcharray-normalpitcharray);其中,abs()表示取绝对值。
112.s405:获取所述偏差值数组中小于预设偏差阈值的偏差值的索引,并根据所述索引检索所述八度位移数组,得到修正八度位移数组。
113.本实施例中,预设偏差阈值为2。
114.s406:统计所述修正八度位移数组中出现次数最多的值,作为最终八度位移值。
115.例如,假设标准音高值数组normalpitcharray=[60,60,60,67,67,67],用户音高值数组userpitcharray=[48,47,49,60,62,60],则八度位移数组octaveshiftarray=[1,1,1,1,0,1],修正音高值数组fixeduserpitcharray=[60,59,61,72,62,72],偏差值数组diffarray=[0,1,1,5,5,5]。
[0116]
由于偏差值数组diffarray中的第一个值至第三个值均小于2,因此满足条件的索引为0、1、2,而八度位移数组中的第一个值至第三个值为[1,1,1],因此修正八度位移数组octaveshiftarray=[1,1,1]。由于修正八度位移数组octaveshiftarray中出现次数最多的值为1,因此最终八度位移值octaveshift=1。
[0117]
s407:根据所述最终八度位移值,对当前用户音高值进行修正。
[0118]
具体地,根据第二修正公式,对当前用户音高值进行修正,第二修正公式为fixeduserpitch=userpitch+12
×
octaveshift,其中,userpitch为当前用户音高值,fixeduserpitch为修正后的当前用户音高值,octaveshift为最终八度位移值。
[0119]
如果用户音高值等于目标音高条的音高值
±
12的整数倍,则不存在二义性,否则存在二义性,例如,若用户音高值比目标音高条的音高值大6,则可以理解为在同一个八度内用户音高值比标准音高值高了6,此时用户音高条绘制在目标音高条的上方,也可以理解为用户音高值在比标准音高值高了一个八度的情况下,又比标准音高值低了6,此时用户音高条绘制在目标音高条的下方。
[0120]
本实施例通过分析前一段时间内的标准音高值数组和用户音高值数组,可更准确地评估出用户音高值相对标准音高值的八度位移值,从而更准确地显示音高比对结果。
[0121]
实施例三
[0122]
本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中一种用户音高条的显示方法的各个步骤,且能达到相同的技术效果,此处不再累述。
[0123]
综上所述,本发明提供的一种用户音高条的显示方法及计算机可读存储介质,通过根据歌曲的音域范围,对用户音高值进行修正,可以自适应地将高于或低于歌曲整八度的用户音高映射到歌曲音域范围内,在相同的音域范围内对用户音高条和标准音高条进行
对照显示,使得用户降八度或高八度演唱时,仍然可以有效地观察到音高比对结果;通过根据音高值来确定音高条的纵向位置,可直观地体现出不同音高条之间的音高关系;根据当前输入音频在目标音高条的时间比例关系,确定用户音高条的横向起止位置及宽度,可保证用户音高条对目标音高条的横向对齐;同时,无论演唱对错均展示用户音高条,确保纠错信息的完整性;并且,通过在用户音高值与目标音高条的音高值偏差不大的时候用较浅的正确色绘制用户音高条,可在降低界面凌乱程度的同时,保留音差程度信息。本发明能够更精准硬度地显示用户音高条。
[0124]
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

技术特征:
1.一种用户音高条的显示方法,其特征在于,包括:根据预设的时长,实时获取当前输入音频片段,并获取当前输入音频片段的音高值,作为当前用户音高值;根据当前输入音频片段对应的偏移时间以及歌曲曲谱对应的各标准音高条的起止时间,在各标准音高条中确定当前用户音高值对应的目标音高条,并获取所述目标音高条的音高值、时长和绘制宽高;根据歌曲曲谱对应的音域范围,对当前用户音高值进行修正;根据修正后的当前用户音高值、当前输入音频片段对应的偏移时间和时长以及所述目标音高条的起止时间、横向起止位置、时长和绘制宽高,确定当前用户音高条在预设的音高条区域内的绘制位置和绘制宽高;根据当前用户音高条的绘制参数,所述绘制参数包括绘制位置和绘制宽高,在所述音高条区域内绘制当前用户音高条。2.根据权利要求1所述的用户音高条的显示方法,其特征在于,所述根据歌曲曲谱对应的音域范围,对当前用户音高值进行修正,具体为:根据第一修正公式,计算修正后的当前用户音高值,所述第一修正公式为fixeduserpitch=userpitch+12
×
round((normalpitch-userpitch)/12),其中,userpitch为当前用户音高值,fixeduserpitch为修正后的当前用户音高值,normalpitch为所述目标音高条的音高值,round()表示取四舍五入后的整数。3.根据权利要求1所述的用户音高条的显示方法,其特征在于,所述根据歌曲曲谱对应的音域范围,对当前用户音高值进行修正,具体为:获取标准音高值数组和用户音高值数组,所述用户音高值数组包括当前时刻前预设时段内的各输入音频片段的音高值,所述标准音高值数组包括所述各输入音频片段对应的目标音高条的音高值;根据所述标准音高值数组和用户音高值数组,计算八度位移数组;根据所述用户音高值数组和八度位移数组,计算修正音高值数组;根据所述标准音高值数组和修正音高值数组,计算偏差值数组;获取所述偏差值数组中小于预设偏差阈值的偏差值的索引,并根据所述索引检索所述八度位移数组,得到修正八度位移数组;统计所述修正八度位移数组中出现次数最多的值,作为最终八度位移值;根据所述最终八度位移值,对当前用户音高值进行修正。4.根据权利要求3所述的用户音高条的显示方法,其特征在于,所述根据所述标准音高值数组和用户音高值数组,计算八度位移数组;根据所述用户音高值数组和八度位移数组,计算修正音高值数组;根据所述标准音高值数组和修正音高值数组,计算偏差值数组,具体为:根据八度位移数组计算公式,计算八度位移数组,所述八度位移数组计算公式为octaveshiftarray=round((normalpitcharray-userpitcharray)/12);根据修正音高值数组计算公式,计算修正音高值数组,所述修正音高值数组计算公式为fixeduserpitcharray=userpitcharray+12
×
octaveshiftarray;根据偏差值数组计算公式,计算偏差值数组,所述偏差值数组计算公式为diffarray=
abs(fixeduserpitcharray-normalpitcharray);其中,octaveshiftarray表示八度位移数组,round()表示取四舍五入后的整数,normalpitcharray表示标准音高值数组,userpitcharray表示用户音高值数组,fixeduserpitcharray表示修正音高值数组,diffarray表示偏差值数组,abs()表示取绝对值。5.根据权利要求3所述的用户音高条的显示方法,其特征在于,所述根据所述最终八度位移值,对当前用户音高值进行修正,具体为:根据第二修正公式,对当前用户音高值进行修正,所述第二修正公式为fixeduserpitch=userpitch+12
×
octaveshift,其中,userpitch为当前用户音高值,fixeduserpitch为修正后的当前用户音高值,octaveshift为最终八度位移值。6.根据权利要求1所述的用户音高条的显示方法,其特征在于,所述绘制参数还包括绘制颜色;所述根据歌曲曲谱对应的音域范围,对当前用户音高值进行修正之后,进一步包括:根据修正后的当前用户音高值和所述目标音高条的音高值,确定当前用户音高条的绘制颜色。7.根据权利要求6所述的用户音高条的显示方法,其特征在于,所述根据修正后的当前用户音高值和所述目标音高条的音高值,确定当前用户音高条的绘制颜色,具体为:若修正后的当前用户音高值与所述目标音高条的音高值相等,则将当前用户音高条的绘制颜色设为第一颜色;若修正后的当前用户音高值与所述目标音高条的音高值的差值绝对值小于或等于预设的音高差值阈值,则将当前用户音高条的绘制颜色设为第二颜色;若修正后的当前用户音高值与所述目标音高条的音高值的差值绝对值大于预设的音高差值阈值,则将当前用户音高条的绘制颜色设为第三颜色;其中,所述第一颜色和第二颜色为相近色。8.根据权利要求1所述的用户音高条的显示方法,其特征在于,所述根据当前输入音频片段对应的偏移时间以及歌曲曲谱对应的各标准音高条的起止时间,在各标准音高条中确定当前用户音高值对应的目标音高条,包括:若当前输入音频片段对应的偏移时间在一标准音高条的起止时间之间,则将所述一标准音高条作为当前用户音高值对应的目标音高条。9.根据权利要求1所述的用户音高条的显示方法,其特征在于,所述根据预设的时长,实时获取当前输入音频片段之前,进一步包括:获取歌曲曲谱,并在预设的音高条区域内显示所述歌曲曲谱对应的标准音高条;其中,以所述音高条区域的左下角为原点,向右方向为x轴正方向,向上方向为y轴正方向,构建二维坐标系;所述音高条区域的高度为h,h=a
×
(maxpitch-minpitch),其中,maxpitch和minpitch分别为所述歌曲曲谱中的最大音高值和最小音高值,a为预设的映射系数;各标准音高条在所述音高条区域内的纵向位置分别通过第一纵向位置计算公式确定,所述第一纵向位置计算公式为normy
i
=a
×
(normpitch
i-minpitch),其中,normy
i
为一标准音高条在所述音高条区域内的纵向位置,normpitch
i
为所述一标准音高条的音高值。
10.根据权利要求9所述的用户音高条的显示方法,其特征在于,所述根据修正后的当前用户音高值、当前输入音频片段对应的偏移时间和时长以及所述目标音高条的起止时间、横向起止位置、时长和绘制宽高,确定当前用户音高条在预设的音高条区域内的绘制位置和绘制宽高,具体为:根据第二纵向位置计算公式,计算当前用户音高条在所述音高条区域内的纵向位置,所述第二纵向位置计算公式为usery=a
×
(fixeduserpitch-minpitch),其中,usery为当前用户音高条在所述音高条区域内的纵向位置,fixeduserpitch为修正后的当前用户音高值,minpitch为歌曲曲谱中的最小音高值,a为预设的映射系数;根据横向位置计算公式,计算当前用户音高条在所述音高条区域内的横向位置,所述横向计算公式为userx=(usertime-normalstarttime)/normalduration
×
normalw+xnormalstart,其中,userx为当前用户音高条在所述音高条区域内的横向位置,usertime为当前输入音频对应的偏移时间,normalduration为所述目标音高条的时长,normalduration=normalendtime-normalstarttime,normalstarttime和normalendtime分别为所述目标音高条的开始时间和结束时间,normalw为所述目标音高条的绘制宽度,normalw=xnormalend-xnormalstart,xnormalstart和xnormalend分别为所述目标音高条的横向开始位置和横向结束位置;根据绘制宽度计算公式,计算当前用户音高条的绘制宽度,所述绘制宽度计算公式为w=userduration/normalduration
×
normalw,其中,w为当前用户音高条的绘制宽度,userduration为当前输入音频的时长;根据所述目标音高条的绘制高度,确定当前用户音高条的绘制高度。11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-10任一项所述的方法。

技术总结
本发明公开了一种用户音高条的显示方法及计算机可读存储介质,方法包括:根据预设的时长实时获取当前输入音频片段,并获取其音高值作为当前用户音高值;在各标准音高条中确定当前用户音高值对应的目标音高条,并获取目标音高条的音高值、时长和绘制宽高;根据歌曲曲谱对应的音域范围,修正当前用户音高值;根据修正后的当前用户音高值、当前输入音频片段对应的偏移时间和时长以及目标音高条的起止时间、横向起止位置、时长和绘制宽高,确定当前用户音高条在预设的音高条区域内的绘制位置和绘制宽高;根据当前用户音高条的绘制位置和绘制宽高,在音高条区域内绘制当前用户音高条。本发明能够更精准硬度地显示用户音高条。本发明能够更精准硬度地显示用户音高条。本发明能够更精准硬度地显示用户音高条。


技术研发人员:陈勇 蔡智力 苏财德 王艺伟
受保护的技术使用者:福建星网视易信息系统有限公司
技术研发日:2023.07.07
技术公布日:2023/10/6
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐