CN112836080B - 一种通过音频查找曲谱的方法及系统 - Google Patents

一种通过音频查找曲谱的方法及系统 Download PDF

Info

Publication number
CN112836080B
CN112836080B CN202110161081.3A CN202110161081A CN112836080B CN 112836080 B CN112836080 B CN 112836080B CN 202110161081 A CN202110161081 A CN 202110161081A CN 112836080 B CN112836080 B CN 112836080B
Authority
CN
China
Prior art keywords
sequence
matching
searched
music score
pitch
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
CN202110161081.3A
Other languages
English (en)
Other versions
CN112836080A (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.)
Xiaoyezi Beijing Technology Co ltd
Original Assignee
Xiaoyezi Beijing 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 Xiaoyezi Beijing Technology Co ltd filed Critical Xiaoyezi Beijing Technology Co ltd
Priority to CN202110161081.3A priority Critical patent/CN112836080B/zh
Publication of CN112836080A publication Critical patent/CN112836080A/zh
Application granted granted Critical
Publication of CN112836080B publication Critical patent/CN112836080B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/61Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/63Querying
    • G06F16/635Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/68Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/683Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种通过音频查找曲谱的方法,包括:将待查找音频转换成MIDI文件,并提取音高形成待查找音高序列;将待查找音高序列中的音高组成待查找节点,形成待查找节点序列;将待查找节点序列中的节点组成待查找索引节点,形成待查找索引节点序列;在曲谱库中分别查找待查找索引节点序列中每个待查找索引节点对应的曲谱ID,得到第一结果列表;将待查找音高序列和第一结果列表中每个曲谱ID对应的音高序列进行连续性匹配,得到第二结果列表;根据第二结果列表,确定待查找音高序列对应的曲谱ID,并获取曲谱的相关信息。本发明还公开了一种通过音频查找曲谱的系统。本发明通过音频能在曲谱库中查找到相应的曲谱及相关信息。

Description

一种通过音频查找曲谱的方法及系统
技术领域
本发明涉及音频处理技术领域,具体而言,涉及一种通过音频查找曲谱的方法及系统。
背景技术
在音乐教育领域,在拿到一段音乐(例如一段现成的音频或是一段现场演奏的音频)时,我们需要知道这段音乐对应的曲谱。而相关技术中,对于一段音乐,尤其是不完整的片段音乐,只能识别该音乐对应的曲目,但无法识别出该音乐对应的曲谱,也无法获取曲谱的相关信息。
发明内容
为解决上述问题,本发明的目的在于提供一种通过音频查找曲谱的方法及系统,通过音频能在曲谱库中查找到相应的曲谱及相关信息。
本发明提供了一种通过音频查找曲谱的方法,所述方法包括:
将待查找音频转换成MIDI文件,并从所述MIDI文件中提取音高,形成待查找音高序列;
将所述待查找音高序列中的两两音高组成一个待查找节点,得到多个待查找节点,形成待查找节点序列;
将所述待查找节点序列中的每两个节点组成一个待查找索引节点,得到多个待查找索引节点,形成待查找索引节点序列,其中,每个所述待查找索引节点包括一个当前节点和一个下一节点;
在曲谱库中分别查找所述待查找索引节点序列中每个待查找索引节点对应的曲谱ID,得到第一结果列表,其中,所述第一结果列表包括各个曲谱ID以及每个曲谱ID对应的匹配总数;
将所述待查找音高序列和所述第一结果列表中每个曲谱ID对应的音高序列进行连续性匹配,得到第二结果列表,其中,所述第二结果列表包括各个曲谱ID、每个曲谱ID对应的匹配度以及每个曲谱ID对应的匹配序列区间个数;
根据所述第二结果列表,确定所述待查找音高序列对应的曲谱ID,并根据确定的曲谱ID获取曲谱的相关信息。
作为本发明进一步的改进,所述曲谱库中包含多首曲谱、每首曲谱的曲谱ID、每首曲谱对应的MIDI文件,以及从每个MIDI文件中导出的曲谱对应的音高序列,
所述方法还包括:
对所述曲谱库中的每首曲谱,将曲谱对应的音高序列中的两两音高组成一个节点,得到多个节点,形成节点序列;
将所述节点序列中的每两个节点组成一个索引节点,并去除相同的索引节点,得到多个索引节点,形成索引节点序列,其中,每个所述索引节点包括一个当前节点和一个下一节点;
将曲谱ID以及各个所述索引节点分别对应的当前节点和下一节点分别插入到所述曲谱库中;
生成索引库,其中,所述索引库包括各个曲谱ID以及每个曲谱ID对应的各个索引节点。
作为本发明进一步的改进,所述曲谱库包括索引库,所述索引库包括各个曲谱ID以及每个曲谱ID对应的各个索引节点,
所述在曲谱库中分别查找所述待查找索引节点序列中每个待查找索引节点对应的曲谱ID,得到第一结果列表,包括:
在所述索引库中分别查找所述待查找索引节点序列中每个待查找索引节点对应的曲谱ID,将查找到的各个曲谱ID按照被匹配次数进行汇总,并删除匹配总数少于预设阈值的曲谱ID;
将匹配总数进行降序排序,得到所述第一结果列表,其中,所述第一结果列表包括各个曲谱ID以及每个曲谱ID对应的匹配总数。
作为本发明进一步的改进,所述将所述待查找音高序列和所述第一结果列表中每个曲谱ID对应的音高序列进行连续性匹配,得到第二结果列表,包括:
将所述待查找音高序列和所述第一结果列表中每个曲谱ID对应的音高序列分别组成一个二维表,其中,在所述二维表中,横向序列表示所述音高序列,竖向序列表示所述待查找音高序列;
根据所述横向序列和所述竖向序列中各个音高的匹配情况,对所述二维表中所有位置的值进行初始标记;
根据所述二维表中的最大值,从所述二维表中提取所述待查找音高序列对应的匹配序列区间,形成匹配序列区间组;
根据所述匹配序列区间组中所有匹配序列区间,计算每个曲谱ID对应的匹配度,并根据每个曲谱ID对应的匹配度以及匹配序列区间的数量,得到所述第二结果列表。
作为本发明进一步的改进,所述根据所述横向序列和所述竖向序列中各个音高的匹配情况,对所述二维表中所有位置的值进行初始标记,包括:
所述二维表的宽为所述音高序列的长度加1,所述二维表的高为所述待查找音高序列的长度加1,所述二维表用0填充;
当所述横向序列中的元素Ai与所述竖向序列中的元素Bj相同时,将所述二维表中位置(i,j)的值Table(i,j)标记为1;
在所述二维表中查找标记为1的连续序列,并将所述连续序列中位置(i+1,j+1)的值Table(i+1,j+1)标记为位置(i,j)的值Table(i,j)加1,得到连续增长序列,保留所述连续增长序列中最后一个位置的值并将其他位置的值赋值为0,其中,所述Ai表示所述音高序列中第i个音高,所述元素Bj表示所述待查找音高序列中第j个音高。
作为本发明进一步的改进,所述根据所述二维表中的最大值,从所述二维表中提取所述待查找音高序列对应的匹配序列区间,形成匹配序列区间组,包括:
在所述二维表中查找最大值m,并提取所述最大值m对应的位置(i,j),将所述二维表中的匹配序列区间[I-M,J]加入至匹配序列区间组中,其中,所述匹配序列区间[j-m,j]表示所述二维表中第j-m行至j行以及第0列至第i列之间的区间;
重复在所述二维表中查找最大值,直至查找到的最大值小于预设阈值,得到各个匹配序列区间组成的匹配序列区间组。
作为本发明进一步的改进,所述根据所述匹配序列区间组中所有匹配序列区间,计算每个曲谱ID对应的匹配度,并根据每个曲谱ID对应的匹配度以及匹配序列区间的数量,得到所述第二结果列表,包括:
对所述匹配序列区间组中所有的匹配序列区间,将查找到的最大值作为每个匹配序列区间中匹配节点的个数,得到所有匹配节点的个数,并将所有匹配节点的个数除以所述竖向序列中元素的个数,得到每个曲谱ID对应的匹配度;
将每个曲谱ID对应的匹配度进行降序排序、每个曲谱ID对应的匹配序列区间数进行升序排序,得到第二结果列表,其中,所述第二结果列表包括各个曲谱ID、每个曲谱ID对应的匹配度以及每个曲谱ID对应的匹配序列区间数。
本发明还提供了一种通过音频查找曲谱的系统,所述系统包括:
音高序列处理模块,用于将待查找音频转换成MIDI文件,并从所述MIDI文件中提取音高,形成待查找音高序列;
节点序列处理模块,用于将所述待查找音高序列中的两两音高组成一个待查找节点,得到多个待查找节点,形成待查找节点序列;
索引节点序列处理模块,用于将所述待查找节点序列中的每两个节点组成一个待查找索引节点,得到多个待查找索引节点,形成待查找索引节点序列,其中,每个所述待查找索引节点包括一个当前节点和一个下一节点;
第一匹配模块,用于在曲谱库中分别查找所述待查找索引节点序列中每个待查找索引节点对应的曲谱ID,得到第一结果列表,其中,所述第一结果列表包括各个曲谱ID以及每个曲谱ID对应的匹配总数;
第二匹配模块,用于将所述待查找音高序列和所述第一结果列表中每个曲谱ID对应的音高序列进行连续性匹配,得到第二结果列表,其中,所述第二结果列表包括各个曲谱ID、每个曲谱ID对应的匹配度以及每个曲谱ID对应的匹配序列区间个数;
曲谱信息获取模块,用于根据所述第二结果列表,确定所述待查找音高序列对应的曲谱ID,并根据确定的曲谱ID获取曲谱的相关信息。
作为本发明进一步的改进,所述曲谱库中包含多首曲谱、每首曲谱的曲谱ID、每首曲谱对应的MIDI文件,以及从每个MIDI文件中导出的曲谱对应的音高序列,所述系统还包括:
曲谱库处理模块,用于对所述曲谱库中的每首曲谱,将曲谱对应的音高序列中的两两音高组成一个节点,得到多个节点,形成节点序列;
将所述节点序列中的每两个节点组成一个索引节点,并去除相同的索引节点,得到多个索引节点,形成索引节点序列,其中,每个所述索引节点包括一个当前节点和一个下一节点;
将曲谱ID以及各个所述索引节点分别对应的当前节点和下一节点分别插入到所述曲谱库中;
生成索引库,其中,所述索引库包括各个曲谱ID以及每个曲谱ID对应的各个索引节点。
作为本发明进一步的改进,所述曲谱库包括索引库,所述索引库包括各个曲谱ID以及每个曲谱ID对应的各个索引节点,
所述第一匹配模块用于在所述索引库中分别查找所述待查找索引节点序列中每个待查找索引节点对应的曲谱ID,将查找到的各个曲谱ID按照被匹配次数进行汇总,并删除匹配总数少于预设阈值的曲谱ID;
将匹配总数进行降序排序,得到所述第一结果列表,其中,所述第一结果列表包括各个曲谱ID以及每个曲谱ID对应的匹配总数。
作为本发明进一步的改进,所述第二匹配模块用于将所述待查找音高序列和所述第一结果列表中每个曲谱ID对应的音高序列分别组成一个二维表,其中,在所述二维表中,横向序列表示所述音高序列,竖向序列表示所述待查找音高序列;
根据所述横向序列和所述竖向序列中各个音高的匹配情况,对所述二维表中所有位置的值进行初始标记;
根据所述二维表中的最大值,从所述二维表中提取所述待查找音高序列对应的匹配序列区间,形成匹配序列区间组;
根据所述匹配序列区间组中所有匹配序列区间,计算每个曲谱ID对应的匹配度,并根据每个曲谱ID对应的匹配度以及匹配序列区间的数量,得到所述第二结果列表。
作为本发明进一步的改进,所述根据所述横向序列和所述竖向序列中各个音高的匹配情况,对所述二维表中所有位置的值进行初始标记,包括:
所述二维表的宽为所述音高序列的长度加1,所述二维表的高为所述待查找音高序列的长度加1,所述二维表用0填充;
当所述横向序列中的元素Ai与所述竖向序列中的元素Bj相同时,将所述二维表中位置(i,j)的值Table(i,j)标记为1;
在所述二维表中查找标记为1的连续序列,并将所述连续序列中位置(i+1,j+1)的值Table(i+1,j+1)标记为位置(i,j)的值Table(i,j)加1,得到连续增长序列,保留所述连续增长序列中最后一个位置的值并将其他位置的值赋值为0,其中,所述Ai表示所述音高序列中第i个音高,所述元素Bj表示所述待查找音高序列中第j个音高。
作为本发明进一步的改进,所述根据所述二维表中的最大值,从所述二维表中提取所述待查找音高序列对应的匹配序列区间,形成匹配序列区间组,包括:
在所述二维表中查找最大值m,并提取所述最大值m对应的位置(i,j),将所述二维表中的匹配序列区间[j-m,j]加入至匹配序列区间组中,其中,所述匹配序列区间[j-m,j]表示所述二维表中第j-m行至j行以及第0列至第i列之间的区间;
重复在所述二维表中查找最大值,直至查找到的最大值小于预设阈值,得到各个匹配序列区间组成的匹配序列区间组。
作为本发明进一步的改进,所述根据所述匹配序列区间组中所有匹配序列区间,计算每个曲谱ID对应的匹配度,并根据每个曲谱ID对应的匹配度以及匹配序列区间的数量,得到所述第二结果列表,包括:
对所述匹配序列区间组中所有的匹配序列区间,将查找到的最大值作为每个匹配序列区间中匹配节点的个数,得到所有匹配节点的个数,并将所有匹配节点的个数除以所述竖向序列中元素的个数,得到每个曲谱ID对应的匹配度;
将每个曲谱ID对应的匹配度进行降序排序、每个曲谱ID对应的匹配序列区间数进行升序排序,得到第二结果列表,其中,所述第二结果列表包括各个曲谱ID、每个曲谱ID对应的匹配度以及每个曲谱ID对应的匹配序列区间数。
本发明还提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被处理器执行以实现所述的方法。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现所述的方法。
本发明的有益效果为:通过音频能在曲谱库中查找到相应的曲谱及相关信息,即使在音频中有错音、丢音、多音的情况下依然能够有效查找。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一示例性实施例所述的一种通过音频查找曲谱的方法的流程示意图;
图2为本发明一示例性实施例所述的根据横向序列A和纵向序列B进行二维表位置标记的示意图;
图3为图2中圈出的连续增长序列的示意图;
图4为图2中的二维表完成初始标记后的示意图;
图5为图4中圈出的匹配序列区间的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,若本发明实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,在本发明的描述中,所用术语仅用于说明目的,并非旨在限制本发明的范围。术语“包括”和/或“包含”用于指定所述元件、步骤、操作和/或组件的存在,但并不排除存在或添加一个或多个其他元件、步骤、操作和/或组件的情况。术语“第一”、“第二”等可能用于描述各种元件,不代表顺序,且不对这些元件起限定作用。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个及两个以上。这些术语仅用于区分一个元素和另一个元素。结合以下附图,这些和/或其他方面变得显而易见,并且,本领域普通技术人员更容易理解关于本发明所述实施例的说明。附图仅出于说明的目的用来描绘本发明所述实施例。本领域技术人员将很容易地从以下说明中认识到,在不背离本发明所述原理的情况下,可以采用本发明所示结构和方法的替代实施例。
本发明实施例所述的一种通过音频查找曲谱的方法,如图1所示,所述方法包括:
将待查找音频转换成MIDI文件,并从所述MIDI文件中提取音高,形成待查找音高序列;
将所述待查找音高序列中的两两音高组成一个待查找节点,得到多个待查找节点,形成待查找节点序列;
将所述待查找节点序列中的每两个节点组成一个待查找索引节点,得到多个待查找索引节点,形成待查找索引节点序列,其中,每个所述待查找索引节点包括一个当前节点和一个下一节点;
在曲谱库中分别查找所述待查找索引节点序列中每个待查找索引节点对应的曲谱ID,得到第一结果列表,其中,所述第一结果列表包括各个曲谱ID以及每个曲谱ID对应的匹配总数;
将所述待查找音高序列和所述第一结果列表中每个曲谱ID对应的音高序列进行连续性匹配,得到第二结果列表,其中,所述第二结果列表包括各个曲谱ID、每个曲谱ID对应的匹配度以及每个曲谱ID对应的匹配序列区间个数;
根据所述第二结果列表,确定所述待查找音高序列对应的曲谱ID,并根据确定的曲谱ID获取曲谱的相关信息。
在音乐教育领域,在拿到一段音乐(例如一段现成的音频或是一段现场演奏的音频)时,我们需要知道这段音乐对应的曲谱。而相关技术中,对于一段音乐,只能识别该音乐对应的曲目,但无法识别出该音乐对应的曲谱,也无法获取曲谱的相关信息。对于不完整的音乐,尤其是现场演奏的存在明显错误(例如丢音、多音、错音等情况),通过现有技术更是无法通过现有技术来识别该音乐对应的曲谱。本发明所述方法通过音频查找曲谱库中的曲谱及相关信息,即使音频中有明显错误,也能查找到对应的曲谱及相关信息。
一种可选的实施方式中,所述曲谱库中包含多首曲谱、每首曲谱的曲谱ID、每首曲谱对应的MIDI文件,以及从每个MIDI文件中导出的曲谱对应的音高序列,
所述方法还包括:
对所述曲谱库中的每首曲谱,将曲谱对应的音高序列中的两两音高组成一个节点,得到多个节点,形成节点序列;
将所述节点序列中的每两个节点组成一个索引节点,并去除相同的索引节点,得到多个索引节点,形成索引节点序列,其中,每个所述索引节点包括一个当前节点和一个下一节点;
将曲谱ID以及各个所述索引节点分别对应的当前节点和下一节点分别插入到所述曲谱库中;
生成索引库,其中,所述索引库包括各个曲谱ID以及每个曲谱ID对应的各个索引节点。
可以理解的是,本发明所述方法可以预先建立曲谱库,曲谱库中包括含曲谱和MIDI文件,并通过MIDI文件导出曲谱对应的音高序列(音高序列处理),得到的音高序列用于表征曲谱中的音高音符,例如[79,72,74,76,67,72,76,74,71,67,72,74,76,72,76,79,71,67,71,77,76,74,60,64,67,72,64,67,76,60,64,67,72],并为每首曲谱设置一个曲谱ID(例如songId),其他信息例如曲谱的名称、作者、发表信息等可作为附加信息存储在曲谱库中。
本发明所述方法在预先建立好的曲谱库上,为曲谱库建立对应的索引库。在形成节点序列时,例如可将音高序列中两两音高组成一个节点。可以理解的是,在组成节点时,是对音高序列中排列的音高依次进行组合。这里两两音高可以理解为将音高序列中相邻两个音高作为一组,合成一个节点,例如,音高序列中有音高1、音高2、音高3、音高4……音高n,可将音高1和音高2作为一组合成一个节点,音高3和音高4合成一个节点,……,这里仅为示意列举,本发明对音高序列中的音高数量不做具体限制。对上述音高序列[79,72,74,76,67,72,76,74,71,67,72,74,76,72,76,79,71,67,71,77,76,74,60,64,67,72,64,67,76,60,64,67,72]形成的节点序列例如为[7972,7476,6772,7674,7167,7274,7672,7679,7167,7177,7674,6064,6772,6467,7660,6467,72]。
在节点序列完成后,例如可将节点序列中每两个节点组成一个索引节点,形成索引节点序列。可以理解的是,在组成索引节点时,是对节点序列中的节点依次进行组合,这里每两个节点可以理解为一个当前节点和一个下一节点,即一个索引节点的格式为:(当前节点,下一节点)。还可以理解的是,这里每两个节点并非是仅将节点序列中的两两节点作为一组进行组合,而是对节点序列中每相邻两个节点都要组成形成索引节点,例如,节点序列中有节点1、节点2、节点3、节点4……节点m,可将节点1和节点2作为一组合成一个索引节点,节点2和节点3作为一组合成一个索引节点,节点3和节点4作为一组合成一个索引节点,……,这里仅为示意列举,本发明对节点序列中的节点数量不做具体限制。对上述节点序列[7972,7476,6772,7674,7167,7274,7672,7679,7167,7177,7674,6064,6772,6467,7660,6467,72]中各个节点组合得到的索引节点序列例如为[(7972,7476),(7476,6772)(6772,7674),(7674,7167),(7167,7274),(7274,7672),(7672,7679),(7679,7167),(7167,7177),(7177,7674),(7674,6064),(6064,6772),(6772,6467),(6467,7660),(7660,6467),(6467,72),(72,"")]。其中,不足的部分用""表示。
在索引节点组成完成后,可将曲谱ID(songId)、每个索引节点(包括:当前节点curr_seq、下一节点next_seq)分别插入到数据库中,即可生成每首曲谱索引节点对应的索引库。可以理解的是,索引库的形成是完成了各个索引节点和曲谱ID之间的对应。这样在后续对音频文件进行查找时,能快速的在曲谱库中查找相应的索引节点,以实现曲谱的查找。
上述过程可以理解为曲谱库的预处理过程(包括音高序列处理、节点序列处理和索引节点处理)。在对待查找音频进行识别查找时,对待查找音频同样需要进行音高序列处理、节点序列处理和索引节点处理,以得到待查找音频对应的待查找音高序列、待查找节点序列和多个待查找索引节点。这里对待查找音频的音高序列处理、节点序列处理和索引节点处理和上述曲谱库中的音高序列处理、节点序列处理和索引节点处理的方法相同,这里不再赘述。
举例说明,待查找音频提取出的待查找音高序列为[79,72,76,67,72,76,74,71,67,72,74,76,72,76,79,77,71,67,71,77,76,74,60,64,54,72,64,67,76,60,64,67,72],该音高序列中可能有错音、多音、丢音的情况。形成的待查找节点序列为[7972,7667,7276,7471,6779,7274,7672,7679,7771,6771,7776,7460,6454,7273,6467,7660,6467,72]。得到的待查找索引节点序列为[(7972,7667),(7667,7276),(7276,7471),(7471,6779),(6779,7274),(7274,7672)(7672,7679),(7679,7771),(7771,6771),(6771,7776),(7776,7460),(7460,6454),(6454,7273),(7273,6467),(6467,7660),(7660,6467),(6467,72)]。
一种可选的实施方式中,所述曲谱库包括索引库,所述索引库包括各个曲谱ID以及每个曲谱ID对应的各个索引节点,
所述在曲谱库中分别查找所述待查找索引节点序列中每个待查找索引节点对应的曲谱ID,得到第一结果列表,包括:
在所述索引库中分别查找所述待查找索引节点序列中每个待查找索引节点对应的曲谱ID,将查找到的各个曲谱ID按照被匹配次数进行汇总,并删除匹配总数少于预设阈值的曲谱ID;
将匹配总数进行降序排序,得到所述第一结果列表,其中,所述第一结果列表包括各个曲谱ID以及每个曲谱ID对应的匹配总数。
可以理解的是,对待查找音频处理得到的多个待查找索引节点,需将每个待查找索引节点在曲谱库中查找对应的曲谱ID,查找完所有的待查找索引节点后,将查找到的各个曲谱ID对应的匹配总数进行降序排序,得到第一结果列表。其中,在进行匹配总数汇总时,需要匹配总数少于预设阈值的曲谱ID做舍去处理,以删除明显不匹配的曲谱ID。其中,本发明对预阈值的取值不做具体限定。对上述待查找索引节点序列[(7972,7667),(7667,7276),(7276,7471),(7471,6779),(6779,7274),(7274,7672)(7672,7679),(7679,7771),(7771,6771),(6771,7776),(7776,7460),(7460,6454),(6454,7273),(7273,6467),(6467,7660),(7660,6467),(6467,72)]查找得到的第一结果列表例如为:[(123123,15),(223123,14),(13123,12),(12313,11),(3123,10),(323,8),(143123,4)]。其中,123123表示曲谱ID,15表示曲谱123123的匹配总数,223123表示曲谱ID,14表示曲谱223123的匹配总数,……,该第一结果列表中其他数据的含义不再赘述。
得到的第一结果列表,只能表明待查找索引节点序列有相同的索引序列,是一个初步的匹配结果,是过滤掉了完全不相关的曲谱。然而音频是连续性的,匹配总数有可能是离散存在的,因此还需要进行连续性匹配,以获取精确的匹配结果。所述连续性匹配可以理解为待查找音高序列和第一结果列表中每首曲谱(即通过每个曲谱ID找到的曲谱)对应的音高序列(存储预处理后的曲谱库中)进行公共序列匹配。
一种可选的实施方式中,所述将所述待查找音高序列和所述第一结果列表中每个曲谱ID对应的音高序列进行连续性匹配,得到第二结果列表,包括:
将所述待查找音高序列和所述第一结果列表中每个曲谱ID对应的音高序列分别组成一个二维表,其中,在所述二维表中,横向序列表示所述音高序列,竖向序列表示所述待查找音高序列;
根据所述横向序列和所述竖向序列中各个音高的匹配情况,对所述二维表中所有位置的值进行初始标记;
根据所述二维表中的最大值,从所述二维表中提取所述待查找音高序列对应的匹配序列区间,形成匹配序列区间组;
根据所述匹配序列区间组中所有匹配序列区间,计算每个曲谱ID对应的匹配度,并根据每个曲谱ID对应的匹配度以及匹配序列区间的数量,得到所述第二结果列表。
一种可选的实施方式中,所述根据所述横向序列和所述竖向序列中各个音高的匹配情况,对所述二维表中所有位置的值进行初始标记,包括:
所述二维表的宽为所述音高序列的长度加1,所述二维表的高为所述待查找音高序列的长度加1,所述二维表用0填充;
当所述横向序列中的元素Ai与所述竖向序列中的元素Bj相同时,将所述二维表中位置(i,j)的值Table(i,j)标记为1;
在所述二维表中查找标记为1的连续序列,并将所述连续序列中位置(i+1,j+1)的值Table(i+1,j+1)标记为位置(i,j)的值Table(i,j)加1,得到连续增长序列,保留所述连续增长序列中最后一个位置的值并将其他位置的值赋值为0,其中,所述Ai表示所述参考音高序列中第i个音高,所述元素Bj表示所述待查找音高序列中第j个音高。
其中,位置(i,j)可以理解为二维表中第i列第j行,位置(i+1,j+1)可以理解为二维表中第i+1列第j+1行,i,j均为整数。
一种可选的实施方式中,所述根据所述二维表中的最大值,从所述二维表中提取所述待查找音高序列对应的匹配序列区间,形成匹配序列区间组,包括:
在所述二维表中查找最大值m,并提取所述最大值m对应的位置(i,j),将所述二维表中的匹配序列区间[j-m,j]加入至匹配序列区间组中,其中,所述匹配序列区间[j-m,j]表示所述二维表中第j-m行至j行以及第0列至第i列之间的区间;
重复在所述二维表中查找最大值,直至查找到的最大值小于预设阈值,得到各个匹配序列区间组成的匹配序列区间组。
其中,位置(i,j)可以理解为第j行第i列,m,i,j均为整数。
一种可选的实施方式中,所述根据所述匹配序列区间组中所有匹配序列区间,计算每个曲谱ID对应的匹配度,并根据每个曲谱ID对应的匹配度以及匹配序列区间的数量,得到所述第二结果列表,包括:
对所述匹配序列区间组中所有的匹配序列区间,将查找到的最大值作为每个匹配序列区间中匹配节点的个数,得到所有匹配节点的个数,并将所有匹配节点的个数除以所述竖向序列中元素的个数,得到每个曲谱ID对应的匹配度;
将每个曲谱ID对应的匹配度进行降序排序、每个曲谱ID对应的匹配序列区间数进行升序排序,得到第二结果列表,其中,所述第二结果列表包括各个曲谱ID、每个曲谱ID对应的匹配度以及每个曲谱ID对应的匹配序列区间数。
本发明所述方法需要将待查找音高序列与第一结果列表中的每个曲谱ID对应的音高序列分别建立一个二维表Table,二维表Table如表1所示。其中,横向序列表示一个曲谱ID对应的音高序列A,竖向序列表示待查找音高序列B,该二维表Table的宽为音高序列A的长度加1,高为待查找音高序列B的长度加1,二维表中所有位置的值用0填充。接下来是根据音高序列A和待查找音高序列B中各个音高的匹配情况,来对二维表中的各个位置的值进行处理。如果Ai和Bj相同,则位置(i,j)的值Table(i,j)标记为1,所有元素比对完成后,得到一个标记为1的连续序列,将该连续序列中位置(i+1,j+1)的值Table(i+1,j+1)的标记为位置(i,j)的值Table(i,j)+1,得到一个连续增长序列,保留该连续增长序列中最后一个位置的值并将其他位置的值赋值为0,如果Ai和Bj不相同,则不做处理,以完成二维表的初始标记。
表1
接下来需要分析标记好的二维表,首先查找二维表中的最大值m(例如3),提取最大值对应的位置(i,j)(例如(7,6)),然后将区间G[4,6]作为匹配序列区间加入至匹配序列区间组Groups(公共序列区间组)中。可以理解的是,匹配序列区间[j-m,j]主要是指待查找音高序列B的区间,在加入该区间前,需要判断区间G与匹配序列区间组Groups中的区间是否有交集,如果没有交集就加入,如有交集就舍去。不断重复这个过程,直到查找到的最大值小于预设阈值,分别二维表的过程即可结束,这样可以得到一个匹配序列区间组Groups。其中,本发明对预阈值的取值不做具体限定。
再接下来是对匹配序列区间组Groups中的所有匹配序列区间(即各个区间G)进行计算,对每个匹配序列区间,查找到的最大值作为该匹配序列区间中匹配节点的个数,这样可以得到所有匹配节点的个数matchCount匹配节点可以理解为连续匹配的音符。再将matchCount除以待查找音高序列B的元素个数得到该待查找高音序列B的匹配度matchValue,该匹配度为一个百分比。
对第一结果列表中的所有曲谱ID对应的音高序列和待查找音高序列均做上述处理,可以得到每个曲谱ID对应的匹配度以及每个曲谱ID对应的匹配序列区间数,得到一个结果序列例如[(songId-1,matchValue-1,groupCount-1)、(songId-2,matchValue-2,groupCount-2)、(songId-3,matchValue-3,groupCount-3)、(songId-4,matchValue-4,groupCount-4)…(songId-n,matchValue-n,groupCount-n)]。其中,songId-1表示曲谱ID,matchValue-1表示曲谱songId-1对应的匹配度,groupCount-1表示曲谱songId-1包含的匹配序列区间数,songId-2表示曲谱ID,matchValue-2表示曲谱songId-2对应的匹配度,groupCount-2表示曲谱songId-2包含的匹配序列区间数,……,该结果序列中其他数据的含义不再赘述。
最后,对该结果序列中的matchValue降序、groupCount升序排序,这样得到了第二结果列表,该第二结果列表中排名第一的曲谱ID即为最终的匹配结果,即可根据该曲谱ID获取曲谱的相关信息,以完成待查找音频和曲谱的识别匹配过程。
关于匹配序列区间提取和匹配度的计算,再通过一个示例进行说明。
音高序列A:[23,34,46,45,56,57,63,57,35,68,35,86,34,68,35,45,46,45];待查找音高序列B:[34,46,45,56,57,63,57,35,68,23,86,34,68,35,45,46,45]。
根据两个序列,将二维表中的位置进行标记,得到图2。找到二维表中的连续增长序列,如图3中画圈示意的序列,保留画圈序列中的最大值并将其他值设置为0,完成初始标记得到如图4所示的二维表。
从图4所示的二维表中,可以看到最大值m为9、7和2,这三个最大值对应的坐标(i,j)分别为(10,9)、(18,17)和(11,14)。那么三个匹配序列区间分别是[0,9]、[10,17]和[12,14],如图5中圈出的区间。很容易看到[12,14]在[10,17]这个区间之内,所以[12,14]这个区间不是有效区间,所以舍去,这样有效的匹配序列区间为[0,9]和[10,17],构成匹配序列区间组。这两个匹配序列区间中的匹配节点的个数分别为9-0=9个、17-10=7个,因此,所有匹配节点的个数为9+7=16个。而序列B的元素的个数为17个,那么序列B的匹配度为16/17=0.94。
本发明实施例所述的一种通过音频查找曲谱的系统,所述系统包括:
音高序列处理模块,用于将待查找音频转换成MIDI文件,并从所述MIDI文件中提取音高,形成待查找音高序列;
节点序列处理模块,用于将所述待查找音高序列中的两两音高组成一个待查找节点,得到多个待查找节点,形成待查找节点序列;
索引节点序列处理模块,用于将所述待查找节点序列中的每两个节点组成一个待查找索引节点,得到多个待查找索引节点,形成待查找索引节点序列,其中,每个所述待查找索引节点包括一个当前节点和一个下一节点;
第一匹配模块,用于在曲谱库中分别查找所述待查找索引节点序列中每个待查找索引节点对应的曲谱ID,得到第一结果列表,其中,所述第一结果列表包括各个曲谱ID以及每个曲谱ID对应的匹配总数;
第二匹配模块,用于将所述待查找音高序列和所述第一结果列表中每个曲谱ID对应的音高序列进行连续性匹配,得到第二结果列表,其中,所述第二结果列表包括各个曲谱ID、每个曲谱ID对应的匹配度以及每个曲谱ID对应的匹配序列区间个数;
曲谱信息获取模块,用于根据所述第二结果列表,确定所述待查找音高序列对应的曲谱ID,并根据确定的曲谱ID获取曲谱的相关信息。
一种可选的实施方式中,所述曲谱库中包含多首曲谱、每首曲谱的曲谱ID、每首曲谱对应的MIDI文件,以及从每个MIDI文件中导出的曲谱对应的音高序列,所述系统还包括:
曲谱库处理模块,用于对所述曲谱库中的每首曲谱,将曲谱对应的音高序列中的两两音高组成一个节点,得到多个节点,形成节点序列;
将所述节点序列中的每两个节点组成一个索引节点,并去除相同的索引节点,得到多个索引节点,形成索引节点序列,其中,每个所述索引节点包括一个当前节点和一个下一节点;
将曲谱ID以及各个所述索引节点分别对应的当前节点和下一节点分别插入到所述曲谱库中;
生成索引库,其中,所述索引库包括各个曲谱ID以及每个曲谱ID对应的各个索引节点。
一种可选的实施方式中,所述曲谱库包括索引库,所述索引库包括各个曲谱ID以及每个曲谱ID对应的各个索引节点,
所述第一匹配模块用于在所述索引库中分别查找所述待查找索引节点序列中每个待查找索引节点对应的曲谱ID,将查找到的各个曲谱ID按照被匹配次数进行汇总,并删除匹配总数少于预设阈值的曲谱ID;
将匹配总数进行降序排序,得到所述第一结果列表,其中,所述第一结果列表包括各个曲谱ID以及每个曲谱ID对应的匹配总数。
一种可选的实施方式中,所述第二匹配模块用于将所述待查找音高序列和所述第一结果列表中每个曲谱ID对应的音高序列分别组成一个二维表,其中,在所述二维表中,横向序列表示所述音高序列,竖向序列表示所述待查找音高序列;
根据所述横向序列和所述竖向序列中各个音高的匹配情况,对所述二维表中所有位置的值进行初始标记;
根据所述二维表中的最大值,从所述二维表中提取所述待查找音高序列对应的匹配序列区间,形成匹配序列区间组;
根据所述匹配序列区间组中所有匹配序列区间,计算每个曲谱ID对应的匹配度,并根据每个曲谱ID对应的匹配度以及匹配序列区间的数量,得到所述第二结果列表。
一种可选的实施方式中,所述根据所述横向序列和所述竖向序列中各个音高的匹配情况,对所述二维表中所有位置的值进行初始标记,包括:
所述二维表的宽为所述音高序列的长度加1,所述二维表的高为所述待查找音高序列的长度加1,所述二维表用0填充;
当所述横向序列中的元素Ai与所述竖向序列中的元素Bj相同时,将所述二维表中位置(i,j)的值Table(i,j)标记为1;
在所述二维表中查找标记为1的连续序列,并将所述连续序列中位置(i+1,j+1)的值Table(i+1,j+1)标记为位置(i,j)的值Table(i,j)加1,得到连续增长序列,保留所述连续增长序列中最后一个位置的值并将其他位置的值赋值为0,其中,所述Ai表示所述音高序列中第i个音高,所述元素Bj表示所述待查找音高序列中第j个音高。
一种可选的实施方式中,所述根据所述二维表中的最大值,从所述二维表中提取所述待查找音高序列对应的匹配序列区间,形成匹配序列区间组,包括:
在所述二维表中查找最大值m,并提取所述最大值m对应的位置(i,j),将所述二维表中的匹配序列区间[j-m,j]加入至匹配序列区间组中,其中,所述匹配序列区间[j-m,j]表示所述二维表中第j-m行至j行以及第0列至第i列之间的区间;
重复在所述二维表中查找最大值,直至查找到的最大值小于预设阈值,得到各个匹配序列区间组成的匹配序列区间组。
一种可选的实施方式中,所述根据所述匹配序列区间组中所有匹配序列区间,计算每个曲谱ID对应的匹配度,并根据每个曲谱ID对应的匹配度以及匹配序列区间的数量,得到所述第二结果列表,包括:
对所述匹配序列区间组中所有的匹配序列区间,将查找到的最大值作为每个匹配序列区间中匹配节点的个数,得到所有匹配节点的个数,并将所有匹配节点的个数除以所述竖向序列中元素的个数,得到每个曲谱ID对应的匹配度;
将每个曲谱ID对应的匹配度进行降序排序、每个曲谱ID对应的匹配序列区间数进行升序排序,得到第二结果列表,其中,所述第二结果列表包括各个曲谱ID、每个曲谱ID对应的匹配度以及每个曲谱ID对应的匹配序列区间数。
本公开还涉及一种电子设备,包括服务器、终端等。该电子设备包括:至少一个处理器;与至少一个处理器通信连接的存储器;以及与存储介质通信连接的通信组件,所述通信组件在处理器的控制下接收和发送数据;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行以实现上述实施例中的方法。
在一种可选的实施方式中,存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器中,当被一个或者多个处理器执行时,执行上述任意方法实施例中的方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本公开还涉及一种计算机可读存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
此外,本领域普通技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本领域技术人员应理解,尽管已经参考示例性实施例描述了本发明,但是在不脱离本发明的范围的情况下,可进行各种改变并可用等同物替换其元件。另外,在不脱离本发明的实质范围的情况下,可进行许多修改以使特定情况或材料适应本发明的教导。因此,本发明不限于所公开的特定实施例,而是本发明将包括落入所附权利要求范围内的所有实施例。

Claims (16)

1.一种通过音频查找曲谱的方法,其特征在于,所述方法包括:
将待查找音频转换成MIDI文件,并从所述MIDI文件中提取音高,形成待查找音高序列;
将所述待查找音高序列中的两两音高组成一个待查找节点,得到多个待查找节点,形成待查找节点序列;
将所述待查找节点序列中的每两个节点组成一个待查找索引节点,得到多个待查找索引节点,形成待查找索引节点序列,其中,每个所述待查找索引节点包括一个当前节点和一个下一节点;
在曲谱库中分别查找所述待查找索引节点序列中每个待查找索引节点对应的曲谱ID,得到第一结果列表,其中,所述第一结果列表包括各个曲谱ID以及每个曲谱ID对应的匹配总数;
将所述待查找音高序列和所述第一结果列表中每个曲谱ID对应的音高序列进行连续性匹配,得到第二结果列表,其中,所述第二结果列表包括各个曲谱ID、每个曲谱ID对应的匹配度以及每个曲谱ID对应的匹配序列区间个数;
根据所述第二结果列表,确定所述待查找音高序列对应的曲谱ID,并根据确定的曲谱ID获取曲谱的相关信息。
2.如权利要求1所述的方法,其中,所述曲谱库中包含多首曲谱、每首曲谱的曲谱ID、每首曲谱对应的MIDI文件,以及从每个MIDI文件中导出的曲谱对应的音高序列,
所述方法还包括:
对所述曲谱库中的每首曲谱,将曲谱对应的音高序列中的两两音高组成一个节点,得到多个节点,形成节点序列;
将所述节点序列中的每两个节点组成一个索引节点,并去除相同的索引节点,得到多个索引节点,形成索引节点序列,其中,每个所述索引节点包括一个当前节点和一个下一节点;
将曲谱ID以及各个所述索引节点分别对应的当前节点和下一节点分别插入到所述曲谱库中;
生成索引库,其中,所述索引库包括各个曲谱ID以及每个曲谱ID对应的各个索引节点。
3.如权利要求1所述的方法,其中,所述曲谱库包括索引库,所述索引库包括各个曲谱ID以及每个曲谱ID对应的各个索引节点,
所述在曲谱库中分别查找所述待查找索引节点序列中每个待查找索引节点对应的曲谱ID,得到第一结果列表,包括:
在所述索引库中分别查找所述待查找索引节点序列中每个待查找索引节点对应的曲谱ID,将查找到的各个曲谱ID按照被匹配次数进行汇总,并删除匹配总数少于预设阈值的曲谱ID;
将匹配总数进行降序排序,得到所述第一结果列表,其中,所述第一结果列表包括各个曲谱ID以及每个曲谱ID对应的匹配总数。
4.如权利要求1所述的方法,其中,所述将所述待查找音高序列和所述第一结果列表中每个曲谱ID对应的音高序列进行连续性匹配,得到第二结果列表,包括:
将所述待查找音高序列和所述第一结果列表中每个曲谱ID对应的音高序列分别组成一个二维表,其中,在所述二维表中,横向序列表示所述音高序列,竖向序列表示所述待查找音高序列;
根据所述横向序列和所述竖向序列中各个音高的匹配情况,对所述二维表中所有位置的值进行初始标记;
根据所述二维表中的最大值,从所述二维表中提取所述待查找音高序列对应的匹配序列区间,形成匹配序列区间组;
根据所述匹配序列区间组中所有匹配序列区间,计算每个曲谱ID对应的匹配度,并根据每个曲谱ID对应的匹配度以及匹配序列区间的数量,得到所述第二结果列表。
5.如权利要求4所述的方法,其中,所述根据所述横向序列和所述竖向序列中各个音高的匹配情况,对所述二维表中所有位置的值进行初始标记,包括:
所述二维表的宽为所述音高序列的长度加1,所述二维表的高为所述待查找音高序列的长度加1,所述二维表用0填充;
当所述横向序列中的元素Ai与所述竖向序列中的元素Bj相同时,将所述二维表中位置(i,j)的值Table(i,j)标记为1;
在所述二维表中查找标记为1的连续序列,并将所述连续序列中位置(i+1,j+1)的值Table(i+1,j+1)标记为位置(i,j)的值Table(i,j)加1,得到连续增长序列,保留所述连续增长序列中最后一个位置的值并将其他位置的值赋值为0,其中,所述Ai表示所述音高序列中第i个音高,所述元素Bj表示所述待查找音高序列中第j个音高。
6.如权利要求4所述的方法,其中,所述根据所述二维表中的最大值,从所述二维表中提取所述待查找音高序列对应的匹配序列区间,形成匹配序列区间组,包括:
在所述二维表中查找最大值m,并提取所述最大值m对应的位置(i,j),将所述二维表中的匹配序列区间[j-m,j]加入至匹配序列区间组中,其中,所述匹配序列区间[j-m,j]表示所述二维表中第j-m行至j行以及第0列至第i列之间的区间;
重复在所述二维表中查找最大值,直至查找到的最大值小于预设阈值,得到各个匹配序列区间组成的匹配序列区间组。
7.如权利要求6所述的方法,其中,所述根据所述匹配序列区间组中所有匹配序列区间,计算每个曲谱ID对应的匹配度,并根据每个曲谱ID对应的匹配度以及匹配序列区间的数量,得到所述第二结果列表,包括:
对所述匹配序列区间组中所有的匹配序列区间,将查找到的最大值作为每个匹配序列区间中匹配节点的个数,得到所有匹配节点的个数,并将所有匹配节点的个数除以所述竖向序列中元素的个数,得到每个曲谱ID对应的匹配度;
将每个曲谱ID对应的匹配度进行降序排序、每个曲谱ID对应的匹配序列区间数进行升序排序,得到第二结果列表,其中,所述第二结果列表包括各个曲谱ID、每个曲谱ID对应的匹配度以及每个曲谱ID对应的匹配序列区间数。
8.一种通过音频查找曲谱的系统,其特征在于,所述系统包括:
音高序列处理模块,用于将待查找音频转换成MIDI文件,并从所述MIDI文件中提取音高,形成待查找音高序列;
节点序列处理模块,用于将所述待查找音高序列中的两两音高组成一个待查找节点,得到多个待查找节点,形成待查找节点序列;
索引节点序列处理模块,用于将所述待查找节点序列中的每两个节点组成一个待查找索引节点,得到多个待查找索引节点,形成待查找索引节点序列,其中,每个所述待查找索引节点包括一个当前节点和一个下一节点;
第一匹配模块,用于在曲谱库中分别查找所述待查找索引节点序列中每个待查找索引节点对应的曲谱ID,得到第一结果列表,其中,所述第一结果列表包括各个曲谱ID以及每个曲谱ID对应的匹配总数;
第二匹配模块,用于将所述待查找音高序列和所述第一结果列表中每个曲谱ID对应的音高序列进行连续性匹配,得到第二结果列表,其中,所述第二结果列表包括各个曲谱ID、每个曲谱ID对应的匹配度以及每个曲谱ID对应的匹配序列区间个数;
曲谱信息获取模块,用于根据所述第二结果列表,确定所述待查找音高序列对应的曲谱ID,并根据确定的曲谱ID获取曲谱的相关信息。
9.如权利要求8所述的系统,其中,所述曲谱库中包含多首曲谱、每首曲谱的曲谱ID、每首曲谱对应的MIDI文件,以及从每个MIDI文件中导出的曲谱对应的音高序列,所述系统还包括:
曲谱库处理模块,用于对所述曲谱库中的每首曲谱,将曲谱对应的音高序列中的两两音高组成一个节点,得到多个节点,形成节点序列;
将所述节点序列中的每两个节点组成一个索引节点,并去除相同的索引节点,得到多个索引节点,形成索引节点序列,其中,每个所述索引节点包括一个当前节点和一个下一节点;
将曲谱ID以及各个所述索引节点分别对应的当前节点和下一节点分别插入到所述曲谱库中;
生成索引库,其中,所述索引库包括各个曲谱ID以及每个曲谱ID对应的各个索引节点。
10.如权利要求8所述的系统,其中,所述曲谱库包括索引库,所述索引库包括各个曲谱ID以及每个曲谱ID对应的各个索引节点,
所述第一匹配模块用于在所述索引库中分别查找所述待查找索引节点序列中每个待查找索引节点对应的曲谱ID,将查找到的各个曲谱ID按照被匹配次数进行汇总,并删除匹配总数少于预设阈值的曲谱ID;
将匹配总数进行降序排序,得到所述第一结果列表,其中,所述第一结果列表包括各个曲谱ID以及每个曲谱ID对应的匹配总数。
11.如权利要求8所述的系统,其中,所述第二匹配模块用于将所述待查找音高序列和所述第一结果列表中每个曲谱ID对应的音高序列分别组成一个二维表,其中,在所述二维表中,横向序列表示所述音高序列,竖向序列表示所述待查找音高序列;
根据所述横向序列和所述竖向序列中各个音高的匹配情况,对所述二维表中所有位置的值进行初始标记;
根据所述二维表中的最大值,从所述二维表中提取所述待查找音高序列对应的匹配序列区间,形成匹配序列区间组;
根据所述匹配序列区间组中所有匹配序列区间,计算每个曲谱ID对应的匹配度,并根据每个曲谱ID对应的匹配度以及匹配序列区间的数量,得到所述第二结果列表。
12.如权利要求11所述的系统,其中,所述根据所述横向序列和所述竖向序列中各个音高的匹配情况,对所述二维表中所有位置的值进行初始标记,包括:
所述二维表的宽为所述音高序列的长度加1,所述二维表的高为所述待查找音高序列的长度加1,所述二维表用0填充;
当所述横向序列中的元素Ai与所述竖向序列中的元素Bj相同时,将所述二维表中位置(i,j)的值Table(i,j)标记为1;
在所述二维表中查找标记为1的连续序列,并将所述连续序列中位置(i+1,j+1)的值Table(i+1,j+1)标记为位置(i,j)的值Table(i,j)加1,得到连续增长序列,保留所述连续增长序列中最后一个位置的值并将其他事位置的值赋值为0,其中,所述Ai表示所述音高序列中第i个音高,所述元素Bj表示所述待查找音高序列中第j个音高。
13.如权利要求11所述的系统,其中,所述根据所述二维表中的最大值,从所述二维表中提取所述待查找音高序列对应的匹配序列区间,形成匹配序列区间组,包括:
在所述二维表中查找最大值m,并提取所述最大值m对应的位置(i,j),将所述二维表中的匹配序列区间[j-m,j]加入至匹配序列区间组中,其中,所述匹配序列区间[j-m,j]表示所述二维表中第j-m行至j行以及第0列至第i列之间的区间;
重复在所述二维表中查找最大值,直至查找到的最大值小于预设阈值,得到各个匹配序列区间组成的匹配序列区间组。
14.如权利要求13所述的系统,其中,所述根据所述匹配序列区间组中所有匹配序列区间,计算每个曲谱ID对应的匹配度,并根据每个曲谱ID对应的匹配度以及匹配序列区间的数量,得到所述第二结果列表,包括:
对所述匹配序列区间组中所有的匹配序列区间,将查找到的最大值作为每个匹配序列区间中匹配节点的个数,得到所有匹配节点的个数,并将所有匹配节点的个数除以所述竖向序列中元素的个数,得到每个曲谱ID对应的匹配度;
将每个曲谱ID对应的匹配度进行降序排序、每个曲谱ID对应的匹配序列区间数进行升序排序,得到第二结果列表,其中,所述第二结果列表包括各个曲谱ID、每个曲谱ID对应的匹配度以及每个曲谱ID对应的匹配序列区间数。
15.一种电子设备,包括存储器和处理器,其特征在于,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被处理器执行以实现如权利要求1-7中任一项所述的方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行以实现如权利要求1-7中任一项所述的方法。
CN202110161081.3A 2021-02-05 2021-02-05 一种通过音频查找曲谱的方法及系统 Active CN112836080B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110161081.3A CN112836080B (zh) 2021-02-05 2021-02-05 一种通过音频查找曲谱的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110161081.3A CN112836080B (zh) 2021-02-05 2021-02-05 一种通过音频查找曲谱的方法及系统

Publications (2)

Publication Number Publication Date
CN112836080A CN112836080A (zh) 2021-05-25
CN112836080B true CN112836080B (zh) 2023-09-12

Family

ID=75932282

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110161081.3A Active CN112836080B (zh) 2021-02-05 2021-02-05 一种通过音频查找曲谱的方法及系统

Country Status (1)

Country Link
CN (1) CN112836080B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080070445A (ko) * 2007-01-26 2008-07-30 삼성전자주식회사 음성 인식 기반의 음악 검색 방법 및 장치
CN110600057A (zh) * 2019-09-02 2019-12-20 深圳市平均律科技有限公司 演奏声音信息和曲谱信息比对方法及比对系统
CN112258932A (zh) * 2020-11-04 2021-01-22 深圳市平均律科技有限公司 一种乐器演奏辅助练习装置、方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080070445A (ko) * 2007-01-26 2008-07-30 삼성전자주식회사 음성 인식 기반의 음악 검색 방법 및 장치
CN110600057A (zh) * 2019-09-02 2019-12-20 深圳市平均律科技有限公司 演奏声音信息和曲谱信息比对方法及比对系统
CN112258932A (zh) * 2020-11-04 2021-01-22 深圳市平均律科技有限公司 一种乐器演奏辅助练习装置、方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘怡 ; 郝云飞 ; .一种新的高效大型音乐数据库查询算法.湖南科技大学学报(自然科学版).2006,(01),全文. *

Also Published As

Publication number Publication date
CN112836080A (zh) 2021-05-25

Similar Documents

Publication Publication Date Title
Sprengel et al. Audio based bird species identification using deep learning techniques
DE60120417T2 (de) Verfahren zur suche in einer audiodatenbank
US10248885B2 (en) Method for encoding of anatomic curves
CN110390006B (zh) 问答语料生成方法、装置和计算机可读存储介质
CN106328147A (zh) 语音识别方法和装置
CN105336342B (zh) 语音识别结果评价方法及系统
EP1052576A3 (en) Method for searching in large databases of automatically recognized text
CN102262634A (zh) 一种自动问答方法及系统
CA2566540A1 (en) Device and method for analyzing an information signal
CN1567303A (zh) 结构文档信息块的自动分割方法和装置
CN112257433B (zh) 基于马尔可夫链和神经网络的口令字典生成方法和系统
KR100835290B1 (ko) 문서 분류 시스템 및 문서 분류 방법
CN1629837A (zh) 电子文档的处理、浏览及分类查询的方法、装置及其系统
CN106815265A (zh) 裁判文书的搜索方法及装置
CN111104398A (zh) 针对智能船舶近似重复记录的检测方法、消除方法
CN111125408A (zh) 基于特征提取的搜索方法、装置、计算机设备和存储介质
CN112836080B (zh) 一种通过音频查找曲谱的方法及系统
CN107194468A (zh) 面向情报大数据的决策树增量学习方法
Soni et al. Emotion based social media text classification using optimized improved ID3 classifier
CN114564306B (zh) 一种基于GPU并行计算的第三代测序RNA-seq比对方法
CN111340125A (zh) 基于随机森林算法训练子宫内膜异位囊肿破裂数据的方法
US7853597B2 (en) Product line extraction
CN114461813A (zh) 一种基于知识图谱的数据推送方法、系统和存储介质
CN112825268B (zh) 测序结果比对方法及其应用
CN111708967B (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