CN108074588B - 一种音高计算方法及装置 - Google Patents

一种音高计算方法及装置 Download PDF

Info

Publication number
CN108074588B
CN108074588B CN201611019030.2A CN201611019030A CN108074588B CN 108074588 B CN108074588 B CN 108074588B CN 201611019030 A CN201611019030 A CN 201611019030A CN 108074588 B CN108074588 B CN 108074588B
Authority
CN
China
Prior art keywords
data
fundamental frequency
audio
pitch
buffer queue
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201611019030.2A
Other languages
English (en)
Other versions
CN108074588A (zh
Inventor
陈华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Chang Ba Technology Co ltd
Original Assignee
Beijing Chang Ba Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Chang Ba Technology Co ltd filed Critical Beijing Chang Ba Technology Co ltd
Priority to CN201611019030.2A priority Critical patent/CN108074588B/zh
Publication of CN108074588A publication Critical patent/CN108074588A/zh
Application granted granted Critical
Publication of CN108074588B publication Critical patent/CN108074588B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/90Pitch determination of speech signals
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/03Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the type of extracted parameters
    • G10L25/18Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the type of extracted parameters the extracted parameters being spectral information of each sub-band
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/45Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the type of analysis window
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/48Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 specially adapted for particular use
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/90Pitch determination of speech signals
    • G10L2025/906Pitch tracking

Abstract

本发明实施例提供了一种音高计算方法及装置,其中音高计算方法包括采集音频采样数据,根据采集得到的音频采样数据,更新缓冲队列中部分音频采样数据,并将缓冲队列中的全部音频采样数据叠加汉明窗,并进行傅里叶变换,获取频域音频数据,再利用频域音频数据消除相位偏移后,进行反向傅里叶变换,获取对应的时域音频数据,最后根据预设特征,确定缓冲队列中时域音频数据的音高,将音高与预设打分规则进行比较,获取打分结果。通过上述方案可以使得对人声音高的计算不仅快速,而且具有较高的精度,进而有效避免了打分失败问题。

Description

一种音高计算方法及装置
技术领域
本发明实施例涉及通信领域,尤其涉及一种音高计算方法及装置。
背景技术
随着移动互联网的发展,越来越多的用户使用移动终端上网娱乐,利用移动终端听音乐、唱歌也变得越来越方便。在唱歌的过程中一般都需要实时计算演唱者的音高信息,并通过打分的方式,给与歌唱正确与否的反馈。每个人的声音变换到频域中都会呈现出一个基频和若干等距离的共振峰组成。其基频的频率就对应音高的值。
目前基于时域分析语音基频的方法虽然速度快,但是精度不够。对于基于频域分析的方法中,简单的基于频率分析方法精度依旧达不到要求,而复杂的算法其计算复杂度太高,不利于在移动端设备中进行实时处理。而且,无论是精度不够还是计算速度慢都会导致打分失败。
因此,如何快速并准确地计算出音高,以避免打分失败,是目前亟待解决的技术问题。
发明内容
本发明实施例提供一种音高计算方法,以解决现有技术中对用户的音高无法快速且准确的计算所导致的打分失败的问题。
为了解决上述问题,本发明公开了一种音高计算方法,包括:
采集音频采样数据;
根据采集得到的音频采样数据,更新缓冲队列中部分音频采样数据;
将所述缓冲队列中的全部音频采样数据叠加汉明窗,并进行傅里叶变换,获取频域音频数据;
利用所述频域音频数据消除相位偏移后,进行反向傅里叶变换,获取对应的时域音频数据;
根据预设特征,确定所述缓冲队列中时域音频数据的音高,其中,所述预设特征用于表征人声音频变化特征;
将所述音高与预设打分规则进行比较,获取打分结果。
本发明还提供了一种音高计算装置,包括:
音频采集模块,用于采集音频采样数据;
缓冲队列更新模块,用于根据采集得到的音频采样数据,更新缓冲队列中部分音频采样数据;
数据变换模块,用于对将所述缓冲队列中的全部音频采样数据叠加汉明窗,并进行傅里叶变换,获取频域音频数据;
数据反向变换模块,用于利用所述频域音频数据消除相位偏移后,进行反向傅里叶变换,获取对应的时域音频数据;
音高确定模块,用于根据预设特征,确定所述缓冲队列中时域音频数据的音高,其中,所述预设特征用于表征人声音频变化特征;
打分模块,用于将所述音高与预设打分规则进行比较,获取打分结果。
综上,本发明实施例通过采用时域分析与频域分析相结合的方法,先实时采集音频采样数据,更新缓冲队列中部分音频采样数据,并将更新后的缓冲队列中的全部音频采样数据叠加汉明窗,进行傅里叶变换,获得频域音频数据,以进行频域分析,消除音频采样数据的相位偏移。利用该频域音频数据消除相位偏移后,再进行反向傅里叶变换,获取对应的时域音频数据,以进行时域分析,根据用于表征人声音频变化特征的预设特征,确定时域音频数据的音高。从而实现了时域分析与频域分析的有机结合,以及对人声音频特征的充分利用,使得对人声音高的计算不仅快速,而且具有较高的精度,进而有效避免了打分失败问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种音高计算方法的流程图;
图2为本发明实施例提供的另一种音高计算方法的流程图;
图3为本发明实施例提供的又一种音高计算方法的流程图;
图4为本发明实施例提供的一种音高计算装置的结构框图;
图5为本发明实施例提供的另一种音高计算装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
参照图1,给出了本发明实施例提供的一种音高计算方法的流程图。
步骤101,采集音频采样数据。
具体的,在对用户歌唱的音高进行分析之前,需要先采集用户歌唱的音频采样数据。其中,音频采样数据对应波形的基频频率即为音高。
在音频采样数据的采集过程中,音频采样率用于表征音频设备对音频采样数据的采集速度。该音频采样率由音频驱动芯片决定。
步骤102,根据采集得到的音频采样数据,更新缓冲队列中部分音频采样数据。
其中,缓冲队列是以队列形式对采集到的音频采样数据进行存储的区域,并遵守先入先出的存储规则。而且由于缓冲队列的长度是固定的,所以加载至缓冲队列中的音频采样数据的长度,等于退出队列的音频采样数据长度。每次音高分析的对象为缓冲队列中的全部音频采样数据。
为了实时计算出音高,需要对连续的音频采样数据进行分析,而且在分析的过程中还需要保证相邻两次音高分析的数据之间存在一定的重叠。因此在对缓冲队列进行更新时,每次只更新缓冲队列中的部分音频采样数据,以保证相邻两次音高分析的对象包括相同的音频采样数据。
同时,对于不同的音频采样率需要设置不同长度的缓冲队列。音频采样率越高则缓冲队列就越大。因为对于相同频率的声音,音频采样率越高,一个完整的频率周期所包含的音频采样数据也就越多,所以需要根据音频采样率的高低来确定缓冲队列的长度,才能保证每次分析音高时,实现完整的频率周期分析。
步骤103,将缓冲队列中的全部音频采样数据叠加汉明窗,并进行傅里叶变换,获取频域音频数据。
为了能够对一小段时间的音频采样数据进行傅里叶变换(Fourier Transform,FT),需要在缓冲队列中的全部音频采样数据上叠加一个汉明窗。然后再进行傅里叶变换,将采集得到的时域音频数据变换为频域音频数据。每次傅里叶变换的长度是整个缓冲队列的长度。具体的,可以使用快速傅里叶变换(Fast Fourier Transform,FFT),将采集得到的时域音频数据变换为频域音频数据。
步骤104,利用频域音频数据消除相位偏移后,进行反向傅里叶变换,获取对应的时域音频数据。
其中,由于音频设备采集得到的时域音频数据包括各种相位的音频波形,当相位不同时会存在波形叠加,影响计算的精度。将采集得到的时域音频数据变换为频域音频数据后,便可以对其相位进行调整,从而消除相位偏移,以提高计算的精度。
由于后续数据分析过程需要在时域音频数据上进行,所以在频域音频数据形式下,对波形进行调整并消除相位偏移后,便需要进行反向傅里叶变换(Inverse FourierTransform,IFT),将频域采样数据再变换为时域音频数据。具体的,可以使用快速反向傅里叶变换(Inverse Fast Fourier Transform,IFFT),将频域音频数据变换为时域音频数据。
步骤105,根据预设特征,确定时域音频数据的音高。
其中,预设特征用于表征人声音频变化特征。由于人声音频数据的频率短时间内难以产生突变,具有很强的稳定性。因此对于人声音频数据的基频波形,成倍数周期上对应位置的幅值近似相等。而且由于每个缓冲队列更新的速度非常快,已超过人对声音的识别和控制能力,所以更新前缓冲队列对应的基频频率,与更新后缓冲队列对应的基频频率近似相等。
根据人的发音方式可知,人声音频的音高在一定的取值范围内,即人声音频的基频频率存在极小值和极大值。根据人声音频基频频率的取值范围和音频采样率,可以确定人声音频波形数据点分布范围。
根据该人声音频波形数据点分布范围,便可以在经过反向傅里叶变换后的时域音频数据中,确定基频波形的起始数据点位置和结束数据点位置,即该时域音频数据的基频的采样点数波动范围。
根据预设特征设定判断条件。利用判断条件,在该基频范围内以遍历搜索的方式,逐一筛选该基频范围内的各音频采样数据点,以确定基频波形。并根据基频波形,确定该缓冲队列中时域音频数据的音高。
步骤106,将音高与预设打分规则进行比较,获取打分结果。
计算出音高后,便可以将该音高与预设打分规则进行比较,根据比较结果进行打分,以体现用户歌唱的准确程度。同时,可以根据打分结果展示不同的特效,以提升用户使用感受。
综上,本发明实施例通过采用时域分析与频域分析相结合的方法,先实时采集音频采样数据,更新缓冲队列中部分音频采样数据,并将更新后的缓冲队列中的全部音频采样数据叠加汉明窗,进行傅里叶变换,获得频域音频数据,以进行频域分析,消除音频采样数据的相位偏移。利用该频域音频数据消除相位偏移后,再进行反向傅里叶变换,获取对应的时域音频数据,以进行时域分析,根据用于表征人声音频变化特征的预设特征,确定时域音频数据的音高。从而实现了时域分析与频域分析的有机结合,以及对人声音频特征的充分利用,使得对人声音高的计算不仅快速,而且具有较高的精度,进而有效避免了打分失败问题。
实施例二
在上述实施例的基础上,本实施例进一步论述音高计算方法。
参照图2,给出了本发明实施例提供的另一种音高计算方法的流程图:
步骤201,采集音频采样数据。
为了判断用户歌唱是否正确,需要对用户歌唱的声音进行实时分析,以计算出音高,并根据音高进行打分。
在进行分析之前,需要先获取可用于分析的音频采样数据,即需要先对用户歌唱时的音频采样数据进行采集。其中,由音频采样数据形成的基频波形的基频频率即为音高。
在音频采样数据的采集过程中,音频采样率用于表征音频设备对音频采样数据的采集速度。该音频采样率由音频驱动芯片决定。
步骤202,更新缓冲队列。
采集音频采样数据后,需要将采集得到音频采样数据更新至缓冲队列,再从缓冲队列中读取全部音频采样数据进行分析。每更新一次缓冲队列,便对该缓冲队列中的音频采样数据计算一次音高。
缓冲队列是以队列形式对采集到的音频采样数据进行存储的区域,对于不同的音频采样率需要设置不同长度的缓冲队列。音频采样率越高则缓冲队列就越大。因为对于相同频率的声音,音频采样率越高,一个完整的频率周期所包含的音频采样数据也就越多,所以需要根据音频采样率的高低来确定缓冲队列的长度,才能保证每次分析音高时,实现完整的频率周期分析。
同时,为了控制每次计算音高的时间,缓冲队列的长度为能够实现完整的频率周期分析的最小长度。
例如,当音频采样率为44100Hz时,将缓冲队列的长度设置为可进行傅里叶变换的最小长度,即2048字节。当音频采样率小于44100Hz时,缓冲队列的长度为2048字节。当音频采样率大于44100Hz时,缓冲队列的长度成比例增大,音频采样率每增加一倍,缓冲队列的长度也增加一倍。
为了实时计算出音高,需要对连续的音频采样数据进行分析,而且在分析的过程中还需要保证相邻两次音高分析的数据之间存在一定的重叠。因此在对缓冲队列进行更新时,每次只更新缓冲队列中的部分音频采样数据,以保证相邻两次音高分析的对象包括相同的音频采样数据。
例如,每次更新512字节的音频采样数据。对于长度为2048字节的缓冲队列,需要更新4次才能将缓冲队列中的音频采样数据完全更新。若将512字节作为一个字段,则长度为2048字节的缓冲队列包括4个字段。假设4个字段分别为A、B、C、D字段,A字段为4个字段中最先加载的,D字段为4个字段中最后加载的,当长度为512字节的E字段更新至该缓冲队列时,遵循队列中先入先出的原则,E字段将A字段替换掉,更新后的缓冲队列包括BCDE这4个字段。
缓冲队列采用循环缓冲的方式进行更新。每次更新部分音频采样数据后,便开始计算音高,并在计算音高的同时,进行下一次缓冲。由于计算所需的时间小于缓冲所需的时间,因此计算延迟的时间便是缓冲的时间。例如,每次更新的长度为512字节,音频采样率为44100Hz。则音高计算延迟为512×1000/44100毫秒,即11.6毫秒。根据统计结果显示大多数人的人耳对于50毫秒以内的伴奏和人声对不齐的现象是不敏感的,因此11.6毫秒这个延迟时间完全在可接受的范围内。
步骤203,对缓冲队列中的全部音频采样数据进行傅里叶变换,获取频域音频数据。
将采集得到的音频采样数据更新至缓冲队列后,为了进行傅里叶变换,需要先在缓冲队列中的采集得到的音频采样数据Data1上叠加一个汉明窗。然后再进行傅里叶变换,以获得对应的频域音频数据Data2。每次傅里叶变换的长度是整个缓冲队列的长度。具体的,可以使用快速傅里叶变换,将Data1变换Data2,以进行后续频域分析。
步骤204,对缓冲队列中的音频采样数据进行频域分析。
频域分析的目的是为了消除Data1中各音频采样数据相位不同引发的相位偏移。由于音频设备采集得到的时域音频数据包括各种相位的音频波形,当相位不同时会存在波形叠加,影响计算的精度。将采集得到的时域音频数据变换为频域音频数据后,便可以对其相位进行调整,从而消除相位偏移,以提高计算的精度。
具体的,Data1经过傅里叶变换后,包括直流分量和余弦分量。其中直流分量对于后续音高分析师没有用处的,而且会造成相位偏移,干扰计算过程。所以需要将Data2中的直流分量部分去除。由于直流分量是一个复数,对相位偏移产生实质影响的是该复数的实部,所以仅需去除直流分量的实部即可。去除直流分量的实部后,需要计算预先分量中每个频率数据的幅值的平方,并将计算结果写入实部中,虚部留0。
与消除相位偏移的传统方法倒谱法相比,由于不需要直接对倒谱数据进行分析,而是在后续步骤进行分析,所以省去了倒谱法的大量计算过程,从而大幅缩减了计算时间,提高了频域分析的速度。
步骤205,对频域分析后的音频采样数据,进行反向傅里叶变换,获取对应的时域音频数据。
由于后续对音高的数据分析过程需要在时域音频数据上进行,所以在频域音频数据形式下,对波形进行调整并消除相位偏移后,便需要进行反向傅里叶变换,将频域采样数据Data2变换为时域音频数据Data3。之后的分析过程都是在Data3基础上进行的。具体的,可以使用快速反向傅里叶变换,将Data2变换为Data3。
同时,为了减少噪声影响,在通过反向傅里叶变换将Data2变换为Data3后,可以对Data3进行归一化处理,以便于分析。
步骤206,根据预设特征,确定时域音频数据的音高。
具体的,根据人声音频变化特征,分析Data3以确定音高的过程分为如下几个子步骤:
步骤2061,根据采样频率和人声基频范围,确定时域音频数据的采样点数范围。
其中,人声基频范围是指用户歌唱声音的基频范围,该范围在70Hz至700Hz之间。即对于人的身体结构以及发音方式,基频频率最低不会低于70Hz,最高也不会高于700Hz。对应的基频波形周期最大值RH_max为1/70秒,对应的基频波形周期最小值RH_min为1/700秒。
将单位时间的音频采样率SampleRate与周期时间相乘,便得到对应的基频波形数据点分布范围。即波形数据点数量最大值WSN_max=SampleRate×RH_max,波形数据点数量最小值WSN_min=SampleRate×RH_min。其中WSN(Wave Sample Number,波形数据点数量)用于表征一个完整基频波形对应包括的数据点数量。例如,当SampleRate为44100Hz时,可以计算出WSN_max为630字节,WSN_min为63字节,即对应的基频波形数据点分布范围是63字节至630字节。
利用该基频波形数据点分布范围,确定基频的采样点个数范围,即在Data3中找出基频波形的起始数据点位置和结束数据点位置。
具体的,根据第一预设条件,在基频波形数据点分布范围中,确定基频范围的起始数据点位置。从Data3的数据点WSN_min处开始向后比较相邻两个数据点幅值,直至数据点WSN_max处,由于Data3为余弦函数,当存在后一数据点index_min+1的幅值Data3[index_min+1]小于前一数据点index_min的幅值Data3[index_min]时,即满足第一预设条件,该数据点index_min即为基频范围的起始数据点位置。
再根据第二预设条件,在基频波形数据点分布范围中,确定基频范围的结束数据点位置。从Data3的数据点WSN_max处开始向前比较相邻两个数据点幅值,直至数据点WSN_min处,由于Data3为余弦函数,当存在前一数据点index_max-1的幅值Data3[index_max-1]小于后一数据点index_max的幅值Data3[index_max]时,即满足第一预设条件,该数据点index_max即为基频范围的结束数据点位置。
根据从Data3中确定的起始数据点位置和结束数据点位置,确定基频范围。若只确定出起始数据点位置或结束数据点位置,或者两者都未确定出来,则判定为搜索失败,即认为该缓冲队列中的音频采样数据中不包含人声音频,此时不再进行后续分析,而是继续计算对该缓冲队列更新后的音频采样数据。
此外,为增加鲁棒性,减少噪声的干扰,可以对Data3数据进行幅值筛选。具体的,先在Data3中从index_min到index_max的一段数据中找到幅值最大值。再将该最大值的一半作为幅值阈值AmplitudeThresh,对Data3 中各数据点的幅值进行筛选,若除该幅值最大值本身不存在幅值大于AmplitudeThresh的数据点,则认为该缓冲队列中不包含有效基频波形,不需要进行后续分析,而是继续计算对该缓冲队列更新后的音频采样数据。
步骤2062,根据预设特征,在基频范围内,确定基频波形。
由于人声音频具有音高稳定的特定,所以预设特征包括基频波形成倍数周期上的幅值近似相等,以及更新前缓冲队列中时域音频数据的音高,与更新后缓冲队列中时域音频数据的音高近似相等。
根据预设特征,在基频范围内,确定基频波形的步骤,具体包括:
步骤A,从基频范围的起始数据点位置开始,对Data3中的数据点ti进行分析,每完成一遍分析,数据点位置加1。ti的范围是[index_min—index_max]。
步骤B,若ti位置处的幅值满足条件:data[ti-1]<data[ti]并且data[ti]>data[ti+1],则判断此位置疑似基频波形的尖峰,继续执行步骤C,否则返回执行步骤A。
步骤C,历遍基频波形数据点分布范围中所有数据点,找到经过固定周期ti偏移后的数据差Diff_score最小的数据点k。Diff_score最小,说明其偏移距离ti正好是一个周期。
具体的,在从Data3中的位置k和k+ti处取值并按照以下流程计算diff_score的值:
1)计算偏移一个周期后的幅值差值平方;
diff_score=(Data3[k]-Data3[k+ti])2
2)利用上次计算得到的ti_last去更新diff_score:
diff_score=diff_score+a×(ti-ti_last)2
其中,式中a是指数更新的系数,根据预设特征可知,相邻两次音高计算的结果差值越小,说明ti越接近周期值。
3)用ti和ti_last处幅值比值的log值更新diff_score:
diff_score=diff_score+log(ti/ti_last)2
根据log函数的特征可知,ti和ti_last处幅值越接近,则log值越近于0。若log(ti/ti_last)2大于对数阈值,则认为不符合预设特征,将该数据点判定为无效数据点。
步骤D,将第一个有效的diff_score值作为最小数据差score_min,如果当前ti位置的diff_score值小于score_min,则认为找到了一个更准确的ti,此时,用该diff_score值更新score_min,同时将此时的ti作为基频频率对应的数据点freqNum。
步骤E,若ti小于index_max,则返回执行步骤A,继续分析;若ti等于index_max,则结束分析,并输出分析结果freqNum。
步骤2063,根据基频波形,精确定位缓冲队列中时域音频数据的音高。
为了使音高的计算结果更加精确,以排除采样误差以及噪声等不良影响。可以对输出结果freqNum进行进一步精确定位。具体的,可以利用分析结果附近位置的幅值作为权重来精确定位出更加精确的基频频率对应的数据点。更新公式如下:
freqNum={(Data3[freqNum-1]×(freqNum-1)
+Data3[freqNum]×(freqNum)
+Data3[freqNum+1]×(freqNum+1)}
/{(Data3[freqNum-1]
+(Data3[freqNum]
+(Data3[freqNum+1]}
对基频频率对应的数据点freqNum更新后,可以用音频采样率除以更新后的freqNum与index_min之差,便得到基频频率,即缓冲队列中时域音频数据的音高。至此完成时域分析过程。
步骤207,将音高与预设打分规则进行比较,获取打分结果。
根据上述步骤,可以实时计算出用户的音高。在获得音高后,便可以根据用户歌声的音高和打分规则进行比较,并进行打分,该打分规则可以由打分文件记录。计算出的音高与打分规则中的音高越接近,则说明用户歌唱的准确程度越高。同时,可以根据打分结果展示不同的特效,以提升用户使用感受。例如,当打分高于第一预设打分阈值时,可以展示喝彩特效。当打分低于第二打分阈值时,可以展示鼓励特效。
综上,本发明实施例通过采用时域分析与频域分析相结合的方法,充分利用了人声音频的特征。先实时采集音频采样数据,更新缓冲队列中部分音频采样数据,并将更新后的缓冲队列中的全部音频采样数据叠加汉明窗,进行傅里叶变换,获得频域音频数据,以进行频域分析,消除音频采样数据的相位偏移,而且通过对频域音频数据进行归一化,有效降低了噪声的影响。利用该频域音频数据消除相位偏移后,再进行反向傅里叶变换,获取对应的时域音频数据,以进行时域分析,根据用于表征人声音频变化特征的预设特征,确定时域音频数据的音高。从而实现了时域分析与频域分析的有机结合,以及对人声音频特征的充分利用,使得对人声音高的计算不仅快速,而且具有较高的精度,进而有效避免了打分失败问题。而且由于在根据预设特征确定时域音频数据的音高的过程中,加入了幅值筛选操作,从而进一步加强了对噪声的过滤,增加了鲁棒性。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
实施例三
在上述实施例的基础上,本实施例还提供了一种音高计算装置,应用于移动终端。
参照图4给出了本发明实施例提供的一种音高计算装置的结构框图,具体可以包括如下模块:
音频采集模块401,用于采集音频采样数据。
缓冲队列更新模块402,用于根据采集得到的音频采样数据,更新缓冲队列中部分音频采样数据。
数据变换模块403,用于对将所述缓冲队列中的全部音频采样数据叠加汉明窗,并进行傅里叶变换,获取频域音频数据;
数据反向变换模块404,用于利用所述频域音频数据消除相位偏移后,进行反向傅里叶变换,获取对应的时域音频数据;
音高确定模块405,用于根据预设特征,确定所述缓冲队列中时域音频数据的音高,其中,所述预设特征用于表征人声音频变化特征;
打分模块406,用于将所述音高与预设打分规则进行比较,获取打分结果。
参照图5,在本发明的一个可选实现方式中,在图4的基础上,缓冲队列更新模块402包括加载子模块4021和退出子模块4022;数据反向变换模块404包括相位调整子模块4041和归一化子模块4042;音高确定模块405包括基频范围确定子模块4051、基频波形确定子模块4052和音高确定子模块4053;具体的,基频范围确定子模块4051还包括分布范围确定单元40511、起点确定单元40512、终点确定单元40513和基频范围确定单元40514。
其中,加载子模块4021,用于将所述采集得到的音频采样数据加载至所述缓冲队列中。
退出子模块4022,用于将所述缓冲队列中最早加载的部分音频采样数据退出队列。而且,加载至缓冲队列中的音频采样数据的长度,等于退出队列的音频采样数据长度。
相位调整子模块4041,用于去除所述频域音频数据的直流分量,计算所述频域音频数据中各余弦分量幅值的平方。
归一化子模块4042,用于对时域音频数据进行归一化处理。
基频范围确定子模块4051,用于根据采样频率和人声基频范围,确定所述时域音频数据的采样点数范围。
基频波形确定子模块4052,用于根据预设特征,在所述基频范围内,确定基频波形。
音高确定子模块4053,用于根据所述基频波形,确定所述缓冲队列中时域音频数据的音高。
具体的,分布范围确定单元40511,用于根据采样频率和人声基频频率极限值,确定基频波形数据点分布范围。
起点确定单元40512,用于根据第一预设条件,在所述基频波形数据点分布范围中,确定所述基频范围的起始数据点位置。
终点确定单元40513,用于根据第二预设条件,在所述基频波形数据点分布范围中,确定所述基频范围的结束数据点位置。
基频范围确定单元40514,用于根据所述起始数据点位置和所述结束数据点位置,确定所述基频范围。
综上,本发明实施例通过采用时域分析与频域分析相结合的方法,先由音频采集模块401实时采集音频采样数据,由缓冲队列更新模块402更新缓冲队列中部分音频采样数据,并利用数据变换模块403将更新后的缓冲队列中的全部音频采样数据叠加汉明窗,进行傅里叶变换,获得频域音频数据,以进行频域分析,消除音频采样数据的相位偏移。再利用数据反向变换模块404将该频域音频数据消除相位偏移后,进行反向傅里叶变换,获取对应的时域音频数据,以进行时域分析,最后,由音高确定模块405根据用于表征人声音频变化特征的预设特征,确定时域音频数据的音高。从而实现了时域分析与频域分析的有机结合,以及对人声音频特征的充分利用,使得对人声音高的计算不仅快速,而且具有较高的精度,进而有效避免了打分失败问题。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种音高计算方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (13)

1.一种音高计算方法,其特征在于,所述方法包括:
采集音频采样数据;
根据采集得到的音频采样数据,更新缓冲队列中部分音频采样数据;
将所述缓冲队列中的全部音频采样数据叠加汉明窗,并进行傅里叶变换,获取频域音频数据;
利用所述频域音频数据消除相位偏移后,进行反向傅里叶变换,获取对应的时域音频数据;
根据预设特征,确定所述缓冲队列中时域音频数据的音高,其中,所述预设特征用于表征人声音频变化特征;
将所述音高与预设打分规则进行比较,获取打分结果。
2.根据权利要求1所述的方法,其特征在于,所述根据预设特征,确定所述时域音频数据的音高,包括:
根据采样频率和人声基频范围,确定所述时域音频数据的采样点数波动范围,所述时域音频数据的采样点数波动范围为基频范围;
根据预设特征,在所述基频范围内,确定基频波形;
根据所述基频波形,确定所述缓冲队列中时域音频数据的音高。
3.根据权利要求2所述的方法,其特征在于,所述根据采样频率和人声基频范围,确定所述时域音频数据的采样点数波动范围,包括:
根据采样频率和人声基频频率极限值,确定基频波形数据点分布范围;
根据第一预设条件,在所述基频波形数据点分布范围中,确定所述基频范围的起始数据点位置;
根据第二预设条件,在所述基频波形数据点分布范围中,确定所述基频范围的结束数据点位置;
根据所述起始数据点位置和所述结束数据点位置,确定所述基频的采样点数波动范围。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述预设特征包括:
基频波形成倍数周期上对应位置的幅值近似相等;
更新前缓冲队列中时域音频数据的音高,与更新后缓冲队列中时域音频数据的音高近似相等。
5.根据权利要求1所述的方法,其特征在于,所述根据采集得到的音频采样数据,更新缓冲队列中部分音频采样数据,包括:
将所述采集得到的音频采样数据加载至所述缓冲队列中;
将所述缓冲队列中最早加载的部分音频采样数据退出队列;
其中,加载至缓冲队列中的音频采样数据的长度,等于退出队列的音频采样数据长度。
6.根据权利要求1所述的方法,其特征在于,所述利用频域音频数据消除相位偏移,包括:
去除所述频域音频数据的直流分量;
计算所述频域音频数据中各余弦分量幅值的平方。
7.根据权利要求1所述的方法,其特征在于,在所述获取时域音频数据之后,还包括:
对时域音频数据进行归一化处理。
8.一种音高计算装置,其特征在于,所述装置包括:
音频采集模块,用于采集音频采样数据;
缓冲队列更新模块,用于根据采集得到的音频采样数据,更新缓冲队列中部分音频采样数据;
数据变换模块,用于对将所述缓冲队列中的全部音频采样数据叠加汉明窗,并进行傅里叶变换,获取频域音频数据;
数据反向变换模块,用于利用所述频域音频数据消除相位偏移后,进行反向傅里叶变换,获取对应的时域音频数据;
音高确定模块,用于根据预设特征,确定所述缓冲队列中时域音频数据的音高,其中,所述预设特征用于表征人声音频变化特征;
打分模块,用于将所述音高与预设打分规则进行比较,获取打分结果。
9.根据权利要求8所述的装置,其特征在于,所述音高确定模块包括:
基频范围确定子模块,用于根据采样频率和人声基频范围,确定所述时域音频数据的采样点数范围,所述时域音频数据的采样点数波动范围为基频范围;
基频波形确定子模块,用于根据预设特征,在所述基频范围内,确定基频波形;
音高确定子模块,用于根据所述基频波形,确定所述缓冲队列中时域音频数据的音高。
10.根据权利要求9所述的装置,其特征在于,所述基频范围确定子模块包括:
分布范围确定单元,用于根据采样频率和人声基频频率极限值,确定基频波形数据点分布范围;
起点确定单元,用于根据第一预设条件,在所述基频波形数据点分布范围中,确定所述基频范围的起始数据点位置;
终点确定单元,用于根据第二预设条件,在所述基频波形数据点分布范围中,确定所述基频范围的结束数据点位置;
基频范围确定单元,用于根据所述起始数据点位置和所述结束数据点位置,确定所述基频的采样点数波动范围。
11.根据权利要求8至10任一项所述的装置,其特征在于,所述音高确定模块中用于表征人声音频变化特征的预设特征,包括:
音频基频波形成倍数周期上对应位置的幅值近似相等;
更新前缓冲队列中时域音频数据的音高,与更新后缓冲队列中时域音频数据的音高近似相等。
12.根据权利要求8所述的装置,其特征在于,所述缓冲队列更新模块包括:
加载子模块,用于将所述采集得到的音频采样数据加载至所述缓冲队列中;
退出子模块,用于将所述缓冲队列中最早加载的部分音频采样数据退出队列;
其中,加载至缓冲队列中的音频采样数据的长度,等于退出队列的音频采样数据长度。
13.根据权利要求8所述的装置,其特征在于,所述数据反向变换模块还包括:
相位调整子模块,用于去除所述频域音频数据的直流分量,计算所述频域音频数据中各余弦分量幅值的平方;
归一化子模块,用于对时域音频数据进行归一化处理。
CN201611019030.2A 2016-11-15 2016-11-15 一种音高计算方法及装置 Active CN108074588B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611019030.2A CN108074588B (zh) 2016-11-15 2016-11-15 一种音高计算方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611019030.2A CN108074588B (zh) 2016-11-15 2016-11-15 一种音高计算方法及装置

Publications (2)

Publication Number Publication Date
CN108074588A CN108074588A (zh) 2018-05-25
CN108074588B true CN108074588B (zh) 2020-12-01

Family

ID=62160376

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611019030.2A Active CN108074588B (zh) 2016-11-15 2016-11-15 一种音高计算方法及装置

Country Status (1)

Country Link
CN (1) CN108074588B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108922516B (zh) * 2018-06-29 2020-11-06 北京语言大学 检测调域值的方法和装置
CN109979488B (zh) * 2019-03-14 2021-05-14 浙江大学 基于重音分析的人声转乐谱系统

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0836398A (ja) * 1994-07-26 1996-02-06 Meidensha Corp 韻律制御方式
WO1999016050A1 (en) * 1997-09-23 1999-04-01 Voxware, Inc. Scalable and embedded codec for speech and audio signals
CN1826632A (zh) * 2003-03-31 2006-08-30 国际商业机器公司 用于语音信号的组合频域和时域音高提取的系统和方法
CN1892810A (zh) * 2005-06-28 2007-01-10 雅马哈株式会社 乐器的调音设备及其计算机程序
JP2008015211A (ja) * 2006-07-06 2008-01-24 Dds:Kk ピッチ抽出方法、歌唱力評価方法、歌唱訓練プログラム及びカラオケ装置
CN101297354A (zh) * 2005-10-28 2008-10-29 索尼英国有限公司 音频处理
CN101409073A (zh) * 2008-11-17 2009-04-15 浙江大学 一种基于基频包络的汉语普通话孤立词识别方法
CN102419981A (zh) * 2011-11-02 2012-04-18 展讯通信(上海)有限公司 音频信号时间尺度和频率尺度缩放处理方法及设备
CN102521281A (zh) * 2011-11-25 2012-06-27 北京师范大学 一种基于最长匹配子序列算法的哼唱计算机音乐检索方法
EP2720222A1 (en) * 2012-10-10 2014-04-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for efficient synthesis of sinusoids and sweeps by employing spectral patterns
CN104036785A (zh) * 2013-03-07 2014-09-10 索尼公司 语音信号的处理方法和装置、以及语音信号的分析系统
CN104205213A (zh) * 2012-03-23 2014-12-10 西门子公司 语音信号处理方法及装置以及使用其的助听器
CN204498284U (zh) * 2013-06-05 2015-07-22 英纳森有限公司 时域中实部和虚部分割及重整的双相位性应用装置
CN105825868A (zh) * 2016-05-30 2016-08-03 福州大学 一种演唱者有效音域的提取方法
CN105845149A (zh) * 2016-03-18 2016-08-10 上海语知义信息技术有限公司 声音信号中主音高的获取方法及系统
CN106057213A (zh) * 2016-06-30 2016-10-26 广州酷狗计算机科技有限公司 一种显示人声音高数据的方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG120121A1 (en) * 2003-09-26 2006-03-28 St Microelectronics Asia Pitch detection of speech signals

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0836398A (ja) * 1994-07-26 1996-02-06 Meidensha Corp 韻律制御方式
WO1999016050A1 (en) * 1997-09-23 1999-04-01 Voxware, Inc. Scalable and embedded codec for speech and audio signals
CN1826632A (zh) * 2003-03-31 2006-08-30 国际商业机器公司 用于语音信号的组合频域和时域音高提取的系统和方法
CN1892810A (zh) * 2005-06-28 2007-01-10 雅马哈株式会社 乐器的调音设备及其计算机程序
CN101297354A (zh) * 2005-10-28 2008-10-29 索尼英国有限公司 音频处理
JP2008015211A (ja) * 2006-07-06 2008-01-24 Dds:Kk ピッチ抽出方法、歌唱力評価方法、歌唱訓練プログラム及びカラオケ装置
CN101409073A (zh) * 2008-11-17 2009-04-15 浙江大学 一种基于基频包络的汉语普通话孤立词识别方法
CN102419981A (zh) * 2011-11-02 2012-04-18 展讯通信(上海)有限公司 音频信号时间尺度和频率尺度缩放处理方法及设备
CN102521281A (zh) * 2011-11-25 2012-06-27 北京师范大学 一种基于最长匹配子序列算法的哼唱计算机音乐检索方法
CN104205213A (zh) * 2012-03-23 2014-12-10 西门子公司 语音信号处理方法及装置以及使用其的助听器
EP2720222A1 (en) * 2012-10-10 2014-04-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for efficient synthesis of sinusoids and sweeps by employing spectral patterns
CN104036785A (zh) * 2013-03-07 2014-09-10 索尼公司 语音信号的处理方法和装置、以及语音信号的分析系统
CN204498284U (zh) * 2013-06-05 2015-07-22 英纳森有限公司 时域中实部和虚部分割及重整的双相位性应用装置
CN105845149A (zh) * 2016-03-18 2016-08-10 上海语知义信息技术有限公司 声音信号中主音高的获取方法及系统
CN105825868A (zh) * 2016-05-30 2016-08-03 福州大学 一种演唱者有效音域的提取方法
CN106057213A (zh) * 2016-06-30 2016-10-26 广州酷狗计算机科技有限公司 一种显示人声音高数据的方法和装置

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
"On the estimation of pitch of noisy speech based on time and frequency domain";C.Shazhnaz;《IEEE》;20081231;全文 *
"几种不同基频提取算法的比较研究";马海隆;《西北民族大学学报》;20101231;第31卷(第80期);全文 *
"基于归一化自相关的语音基频特征提取";曹梦霞;《信息技术与信息化》;20140228(第2期);全文 *
"多音音乐音高估计研究";段志尧;《中国优秀硕士学位论文全文数据库 信息科技辑》;20090315;全文 *
"改进的音高识别算法";翟景瞳;《计算机工程与应用》;20091231;第45卷(第2期);全文 *

Also Published As

Publication number Publication date
CN108074588A (zh) 2018-05-25

Similar Documents

Publication Publication Date Title
JP6017687B2 (ja) オーディオ信号分析
CN110880329B (zh) 一种音频识别方法及设备、存储介质
EP2828856B1 (en) Audio classification using harmonicity estimation
JP6784362B2 (ja) 歌曲メロディ情報処理方法、サーバ、および記憶媒体
US8543387B2 (en) Estimating pitch by modeling audio as a weighted mixture of tone models for harmonic structures
US20220051685A1 (en) Method for transforming audio signal, device, and storage medium
US9646592B2 (en) Audio signal analysis
JP2018521366A (ja) 音響信号をサウンドオブジェクトに分解する方法及びシステム、サウンドオブジェクト及びその利用
CN109817191B (zh) 颤音建模方法、装置、计算机设备及存储介质
CN110070884B (zh) 音频起始点检测方法和装置
CN102568456A (zh) 一种基于哼唱输入的记谱方法及装置
CN108074588B (zh) 一种音高计算方法及装置
CN103258537A (zh) 利用特征结合对语音情感进行识别的方法及其装置
CN106024017A (zh) 语音检测方法及装置
US20230267947A1 (en) Noise reduction using machine learning
CN110379438B (zh) 一种语音信号基频检测与提取方法及系统
CN106910494B (zh) 一种音频识别方法和装置
Amado et al. Pitch detection algorithms based on zero-cross rate and autocorrelation function for musical notes
CN111785302A (zh) 说话人分离方法、装置及电子设备
CN108538309B (zh) 一种歌声侦测的方法
JP2005503580A (ja) 二段階ピッチ判断方法および装置
CN105355206A (zh) 一种声纹特征提取方法和电子设备
CN103778914A (zh) 基于信噪比加权模板特征匹配的抗噪语音识别方法及装置
CN113593604A (zh) 检测音频质量方法、装置及存储介质
CN113205827B (zh) 一种婴儿语音基频高精度提取方法、装置及计算机设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant