一種音頻修正方法及裝置的制造方法
【專利摘要】本發明實施例提供了一種音頻修正方法及裝置,其中方法包括:獲取第一音頻數據;獲取第一音高曲線,所述第一音高曲線為所述第一音頻數據的音高曲線;根據第二音高曲線,對所述第一音高曲線依次進行音階修正及調性修正,以得到修正后的第一音高曲線,其中所述第二音高曲線為與所述第一音頻數據相對應的第二音頻數據的音高曲線;將修正后的第一音高曲線轉換回音頻信號,以得到修正后的第一音頻數據。以歌曲為例,本發明實施例可以使修正后的用戶演唱歌曲音高曲線與原唱歌曲音高曲線的走勢保持一致,并且用戶演唱歌曲音高曲線的起伏相比修正前更接近原唱歌曲,從而大大提升了用戶演唱歌曲的節奏感和聽感,提升了對歌曲等音頻數據的修正效果。
【專利說明】
一種音頻修正方法及裝置
技術領域
[0001 ]本發明涉及音頻數據處理技術,尤其涉及一種音頻修正方法及裝置。
【背景技術】
[0002] 人們在工作及生活中,有時會遇到需要錄制音頻的場景,例如音頻可以是演奏的 音樂,或者是演唱的歌曲,等等。以歌曲為例,隨著移動互聯網的快速發展,各種唱歌類APP (應用軟件)逐漸興起,對于普通用戶來說,將自己錄制的歌曲分享到社交網站已成為一種 新的社交方式。不過普通用戶由于缺乏專業的歌唱訓練,往往無法很好的完成整首歌曲的 演唱,例如可能會出現曲調唱錯、節奏跟不上等問題,這些問題都會影響所錄歌曲的聽感。 因此在所錄歌曲發布之前,對所錄歌曲進行修正以提升歌曲聽感,已成為用戶的一種迫切 需求。
[0003] 歌曲自身往往帶有重復性的特點,例如同一句歌詞既在歌曲高潮中出現,也在歌 曲結尾中出現,也就是說一首歌曲內通常會出現歌詞相同或相近的兩個或多個部分,所以 在一種現有技術中,可以分析用戶所錄歌曲與原唱歌曲之間的差異,在相同歌詞或相近歌 詞的地方,使用用戶演唱較好(也即與原唱歌曲差異較小)的那部分去替換用戶演唱較差的 那部分,從而得到修正后的用戶演唱歌曲。
[0004] 然而發明人在實現本發明的過程中發現,如果歌詞相同或相近的部分都沒唱好, 則這種修正無法完成,而且,即使有唱的比較好的歌詞相同或相近的部分可以用來替換其 他部分,現有方法在修正用戶演唱歌曲時,也并未考慮用戶的聽感,這是因為即使在歌詞相 同或相近的地方,歌曲的音高或節奏也有可能不一樣,如果采取現有技術這種直接替換的 方式,則容易導致修正后的歌曲聽起來會比較奇怪,也即聽感及節奏感較差。可見現有技術 目前并不能對歌曲等音頻進行很好的修正。
【發明內容】
[0005] 本發明提供一種音頻修正方法及裝置,以提升對歌曲等音頻數據的修正效果。
[0006] 根據本發明實施例的第一方面,提供一種音頻修正方法,所述方法包括:
[0007] 獲取第一音頻數據;
[0008] 獲取第一音高曲線,所述第一音高曲線為所述第一音頻數據的音高曲線;
[0009] 根據第二音高曲線,對所述第一音高曲線依次進行音階修正及調性修正,以得到 修正后的第一音高曲線,其中所述第二音高曲線為與所述第一音頻數據相對應的第二音頻 數據的音高曲線;
[0010]將修正后的第一音高曲線轉換回音頻信號,以得到修正后的第一音頻數據。
[0011] 可選的,所述獲取第一音高曲線,包括:
[0012] 對所述第一音頻數據進行分幀;
[0013] 提取分幀后得到的每幀數據的基頻;
[0014] 將提取的每幀數據的基頻轉換為音高值;
[0015] 以各音高值作為曲線上的點得到所述第一音高曲線。
[0016] 可選的,所述對所述第一音頻數據進行分幀,包括:
[0017] 根據所述第一音頻數據的節奏進行分幀;
[0018] 或者,
[0019]以固定時長為單位進行分幀。
[0020] 可選的,所述根據第二音高曲線,對所述第一音高曲線進行音階修正,包括:
[0021] 按照預設方式將所述第一音高曲線劃分為多個片段,每個片段包含一個或多個音 高連續段;
[0022] 通過獲取每個片段與所述第二音高曲線相應部分在音高值上的差別、每個片段內 各音高連續段與所述第二音高曲線相應部分在音高值上的差別,確定每個片段內各音高連 續段偏離所述第二音高曲線的程度,以及,
[0023] 根據每個片段內各音高連續段偏離所述第二音高曲線的程度,對需要調整的音高 連續段進行音階調整,以使調整后的第一音高曲線與所述第二音高曲線在音階上滿足預設 關系。
[0024]可選的,所述預設關系為:
[0025] 調整后的第一音高曲線與所述第二音高曲線在相同的音階范圍內,
[0026] 或者,
[0027]調整后的第一音高曲線與所述第二音高曲線相差固定的音階。
[0028] 可選的,所述通過獲取每個片段與所述第二音高曲線相應部分在音高值上的差 另IJ、每個片段內各音高連續段與所述第二音高曲線相應部分在音高值上的差別,確定每個 片段內各音高連續段偏離所述第二音高曲線的程度,包括:
[0029] 對于每個片段,計算當前片段的第一均值以及當前片段內每個音高連續段的第二 均值,其中第一均值為當前片段上各幀與第二音高曲線相應幀的音高差的總均值,第二均 值為音高連續段上的各幀與第二音高曲線相應幀的音高差的均值;
[0030] 基于音高連續段的第二均值與第一均值的比值,確定音高連續段偏離所述第二音 高曲線的程度。
[0031] 可選的,所述根據每個片段內各音高連續段偏離所述第二音高曲線的程度,對需 要調整的音高連續段進行音階調整,包括:
[0032] 對于每個音高連續段,根據當前音高連續段偏離所述第二音高曲線的程度與預設 閾值的關系,確定是否需要對當前音高連續段進行音階調整;
[0033] 當需要對當前音高連續段進行音階調整時,向偏離的反方向調整當前音高連續段 的音階,直至當前音高連續段與所述第二音高曲線在音階上滿足所述預設關系。
[0034]可選的,所述根據第二音高曲線,對所述第一音高曲線進行調性修正,包括:
[0035]獲取第二音符折線,所述第二音符折線為對所述第二音頻數據進行調性規整后得 到的音符折線;
[0036]根據所述第二音符折線中每個折線段與所述第一音高曲線的高低位置關系,對所 述第一音高曲線進行調性規整以得到第一音符折線;
[0037]對所述第一音符折線進行平滑處理,將平滑處理后得到的曲線作為修正后的第一 首尚曲線。
[0038]可選的,所述獲取第二音符折線,包括:
[0039]獲取所述第二音頻數據的調性;
[0040] 通過計算所述第二音高曲線中每幀與臨近音符在音高上的距離,將每幀的音高規 整到距離最近的音符上以得到所述第二音符折線,其中所述第二音頻數據的調性中未出現 的音符不作為所述臨近音符。
[0041] 可選的,所述根據所述第二音符折線中每個折線段與所述第一音高曲線的高低位 置關系,對所述第一音高曲線進行調性規整以得到第一音符折線,包括:
[0042]當第一音高曲線在第二音符折線的折線段以下或以上時,將第一音高曲線相應部 分變換為折線段,此時第一音高曲線的折線段的音高值根據第二音符折線的折線段對應的 第一音高曲線相應部分的中間幀音高值、第二音符折線的折線段對應的音高值以及第一音 高曲線相應部分中的音高最大值而確定;
[0043]當第一音高曲線穿過第二音符折線的折線段時,將第一音高曲線相應部分變換為 折線段,此時第一音高曲線的折線段的音高值為第二音符折線的折線段對應的音高值。 [0044]可選的,得到修正后的第一音頻數據之后,所述方法還包括:
[0045] 將修正后的第一音頻數據反饋給用戶。
[0046] 可選的,所述第一音頻數據為用戶所唱歌曲,所述第二音頻數據為與所述第一音 頻數據對應的原唱歌曲;或者,所述第一音頻數據為用戶所演奏的純音樂,所述第二音頻數 據為與第一音頻數據對應的示范音樂。
[0047] 可選的,當所述第一音頻數據為用戶所唱歌曲時,所述第一音頻數據和所述第二 音頻數據均為清唱歌曲;當所述第一音頻數據為用戶所演奏的純音樂時,所述第一音頻數 據和所述第二音頻數據均為使用單一樂器所演奏的音樂。
[0048] 可選的,當所述第一音頻數據為用戶所唱歌曲時,對所述第一音高曲線依次進行 音階修正及調性修正之前,所述方法還包括:
[0049] 根據歌詞語義將所述第一音高曲線中音高連續段的起始點與所述第二音高曲線 中音高連續段的起始點對齊。
[0050] 根據本發明實施例的第二方面,提供一種音頻修正裝置,所述裝置包括:
[0051] 音頻數據獲取模塊,用于獲取第一音頻數據;
[0052] 音高曲線獲取模塊,用于獲取第一音高曲線,所述第一音高曲線為所述第一音頻 數據的音高曲線;
[0053]音階修正模塊,用于根據第二音高曲線,對所述第一音高曲線進行音階修正,其中 所述第二音高曲線為與所述第一音頻數據相對應的第二音頻數據的音高曲線;
[0054]調性修正模塊,用于根據第二音高曲線,對完成了音階修正的第一音高曲線進行 調性修正,以得到修正后的第一音高曲線;
[0055] 音頻數據還原模塊,用于將修正后的第一音高曲線轉換回音頻信號,以得到修正 后的第一音頻數據。
[0056] 可選的,所述音高曲線獲取模塊包括:
[0057]分幀子模塊,用于對所述第一音頻數據進行分幀;
[0058]基頻提取子模塊,用于提取分幀后得到的每幀數據的基頻;
[0059]音高值轉換子模塊,用于將提取的每幀數據的基頻轉換為音高值;
[0060]曲線生成子模塊,用于以各音高值作為曲線上的點得到所述第一音高曲線。
[0061 ]可選的,所述對所述第一音頻數據進行分幀,包括:
[0062]根據所述第一音頻數據的節奏進行分幀;或者,以固定時長為單位進行分幀。
[0063]可選的,所述音階修正模塊包括:
[0064] 片段劃分子模塊,用于按照預設方式將所述第一音高曲線劃分為多個片段,每個 片段包含一個或多個音高連續段;
[0065] 音階調整子模塊,用于通過獲取每個片段與所述第二音高曲線相應部分在音高值 上的差別、每個片段內各音高連續段與所述第二音高曲線相應部分在音高值上的差別,確 定每個片段內各音高連續段偏離所述第二音高曲線的程度,以及,根據每個片段內各音高 連續段偏離所述第二音高曲線的程度,對需要調整的音高連續段進行音階調整,以使調整 后的第一音高曲線與所述第二音高曲線在音階上滿足預設關系。
[0066]可選的,所述預設關系為:
[0067] 調整后的第一音高曲線與所述第二音高曲線在相同的音階范圍內,或者,調整后 的第一音高曲線與所述第二音高曲線相差固定的音階。
[0068] 可選的,所述通過獲取每個片段與所述第二音高曲線相應部分在音高值上的差 另IJ、每個片段內各音高連續段與所述第二音高曲線相應部分在音高值上的差別,確定每個 片段內各音高連續段偏離所述第二音高曲線的程度,包括:
[0069] 對于每個片段,計算當前片段的第一均值以及當前片段內每個音高連續段的第二 均值,其中第一均值為當前片段上各幀與第二音高曲線相應幀的音高差的總均值,第二均 值為音高連續段上的各幀與第二音高曲線相應幀的音高差的均值;
[0070] 基于音高連續段的第二均值與第一均值的比值,確定音高連續段偏離所述第二音 高曲線的程度。
[0071] 可選的,所述根據每個片段內各音高連續段偏離所述第二音高曲線的程度,對需 要調整的音高連續段進行音階調整,包括:
[0072] 對于每個音高連續段,根據當前音高連續段偏離所述第二音高曲線的程度與預設 閾值的關系,確定是否需要對當前音高連續段進行音階調整;
[0073] 當需要對當前音高連續段進行音階調整時,向偏離的反方向調整當前音高連續段 的音階,直至當前音高連續段與所述第二音高曲線在音階上滿足所述預設關系。
[0074]可選的,所述調性修正模塊包括:
[0075] 第二音符折線獲取子模塊,用于獲取第二音符折線,所述第二音符折線為對所述 第二音頻數據進行調性規整后得到的音符折線;
[0076] 第一音符折線生成子模塊,用于根據所述第二音符折線中每個折線段與所述第一 音高曲線的高低位置關系,對所述第一音高曲線進行調性規整以得到第一音符折線;
[0077]平滑子模塊,用于對所述第一音符折線進行平滑處理,將平滑處理后得到的曲線 作為修正后的第一音高曲線。
[0078]可選的,所述獲取第二音符折線,包括:
[0079]獲取所述第二音頻數據的調性;
[0080]通過計算所述第二音高曲線中每幀與臨近音符在音高上的距離,將每幀的音高規 整到距離最近的音符上以得到所述第二音符折線,其中所述第二音頻數據的調性中未出現 的音符不作為所述臨近音符。
[0081] 可選的,所述根據所述第二音符折線中每個折線段與所述第一音高曲線的高低位 置關系,對所述第一音高曲線進行調性規整以得到第一音符折線,包括:
[0082] 當第一音高曲線在第二音符折線的折線段以下或以上時,將第一音高曲線相應部 分變換為折線段,此時第一音高曲線的折線段的音高值根據第二音符折線的折線段對應的 第一音高曲線的中間幀音高值、第二音符折線的折線段對應的音高值以及第一音高曲線相 應部分中的音高最大值而確定;
[0083] 當第一音高曲線穿過第二音符折線的折線段時,將第一音高曲線相應部分變換為 折線段,此時第一音高曲線的折線段的音高值為第二音符折線的折線段對應的音高值。 [0084] 可選的,所述裝置還包括:
[0085]反饋模塊,用于將修正后的第一音頻數據反饋給用戶。
[0086] 可選的,所述第一音頻數據為用戶所唱歌曲,所述第二音頻數據為與所述第一音 頻數據對應的原唱歌曲;或者,所述第一音頻數據為用戶所演奏的純音樂,所述第二音頻數 據為與第一音頻數據對應的示范音樂。
[0087] 可選的,當所述第一音頻數據為用戶所唱歌曲時,所述第一音頻數據和所述第二 音頻數據均為清唱歌曲;當所述第一音頻數據為用戶所演奏的純音樂時,所述第一音頻數 據和所述第二音頻數據均為使用單一樂器所演奏的音樂。
[0088] 可選的,當所述第一音頻數據為用戶所唱歌曲時,所述裝置還包括:
[0089]對齊模塊,用于在對所述第一音高曲線進行音階修正及調性修正之前,根據歌詞 語義將所述第一音高曲線中音高連續段的起始點與所述第二音高曲線中音高連續段的起 始點對齊。
[0090] 本發明的實施例提供的技術方案可以包括以下有益效果:
[0091] 在本發明實施例中,并不是對音頻數據進行簡單的替換,而是從音頻數據的音高 曲線入手,分別從音階層面及調性層面對用戶演唱歌曲等音頻數據的音高曲線進行修正。 音階層面的修正可以將用戶演唱歌曲音高曲線規整到與原唱歌曲音高曲線相同音階范圍 內或相差一或多個音階,而調性層面的修正則可以針對用戶演唱歌曲音高曲線的起伏進行 修正。本發明實施例中的方案可以使修正后的用戶演唱歌曲音高曲線與原唱歌曲音高曲線 的走勢保持一致,并且用戶演唱歌曲音高曲線的起伏相比修正前更接近原唱歌曲,從而大 大提升了用戶演唱歌曲的節奏感和聽感,提升了對歌曲等音頻數據的修正效果。
[0092] 應當理解的是,以上的一般描述和后文的細節描述僅是示例性和解釋性的,并不 能限制本發明。
【附圖說明】
[0093]此處的附圖被并入說明書中并構成本說明書的一部分,示出了符合本發明的實施 例,并與說明書一起用于解釋本發明的原理。
[0094] 圖1是根據本發明一示例性實施例示出的一種音頻修正方法的流程圖;
[0095] 圖2是根據本發明一示例性實施例示出的應用場景示意圖;
[0096] 圖3是根據本發明一示例性實施例示出的應用場景示意圖;
[0097] 圖4是根據本發明一示例性實施例示出的一種音頻修正方法的流程圖;
[0098] 圖5是根據本發明一示例性實施例示出的一種音頻修正方法的流程圖;
[0099] 圖6是根據本發明一示例性實施例示出的一種音頻修正方法的流程圖;
[0100]圖7是根據本發明一示例性實施例示出的一種音頻修正方法的流程圖;
[0101] 圖8是根據本發明一示例性實施例示出的音高曲線示意圖;
[0102] 圖9是根據本發明一示例性實施例示出的一種音頻修正方法的流程圖;
[0103] 圖10是根據本發明一示例性實施例示出的一種音頻修正方法的流程圖;
[0104] 圖11是根據本發明一示例性實施例示出的音高曲線示意圖;
[0105] 圖12是根據本發明一示例性實施例示出的音高曲線示意圖;
[0106] 圖13是根據本發明一示例性實施例示出的音高曲線示意圖;
[0107] 圖14是根據本發明一示例性實施例示出的音高曲線示意圖;
[0108] 圖15是根據本發明一示例性實施例示出的一種音頻修正方法的流程圖;
[0109] 圖16是根據本發明一示例性實施例示出的應用場景示意圖;
[0110] 圖17是根據本發明一示例性實施例示出的一種音頻修正裝置的示意圖;
[0111] 圖18是根據本發明一示例性實施例示出的一種音頻修正裝置的示意圖;
[0112] 圖19是根據本發明一示例性實施例示出的一種音頻修正裝置的示意圖;
[0113]圖20是根據本發明一示例性實施例示出的一種音頻修正裝置的示意圖;
[0114] 圖21是根據本發明一示例性實施例示出的一種音頻修正裝置的示意圖;
[0115] 圖22是根據本發明一示例性實施例示出的一種音頻修正裝置的示意圖。
【具體實施方式】
[0116] 這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及 附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例 中所描述的實施方式并不代表與本發明相一致的所有實施方式。相反,它們僅是與如所附 權利要求書中所詳述的、本發明的一些方面相一致的裝置和方法的例子。
[0117] 圖1是根據本發明一示例性實施例示出的一種音頻修正方法的流程圖。作為示例, 該方法可用于手機、平板電腦、個人電腦等終端設備,也可用于服務器等。
[0118] 參見圖1所示,該方法可以包括如下步驟:
[0119]步驟SlOl,獲取第一音頻數據。
[0120] 本實施例中所述的音頻主要是指與音樂相關的音頻,如純音樂或者演唱的歌曲 等。作為示例,本實施例中所述的第一音頻數據可以為用戶所唱歌曲,本實施例中所述的第 二音頻數據可以為用戶所唱歌曲對應的原唱歌曲;或者,所述第一音頻數據可以為用戶所 演奏的純音樂,所述第二音頻數據可以為與第一音頻數據對應的示范音樂。
[0121] 音樂是由不同頻率的機械波復合而成,為了更符合人的聽感,采用音高來描述音 樂的頻率。音高與人耳感知成線性關系,在現代音樂中,音高使用十二平均律來表示,音高 對應的音符記為(:,0#,0,0#4"#,6,6#44#,8,其中"#"表示升半音。在演唱過程中,演 唱者演唱歌曲的音高曲線的走勢應該與樂譜中對應音符序列表示的音高曲線的走勢一致, 這樣演唱出的歌曲音準才準確。同時除了音準之外,節奏也會影響到演唱歌曲的聽感,如果 演唱者演唱時的氣息不平穩、有時唱的快、有時唱的慢,與樂譜節奏不對應,則會造成演唱 歌曲聽起來較奇怪,沒有節奏感。普通用戶由于未經過專業訓練,所唱歌曲很可能出現上面 這些問題,可以使用本實施例方法進行修正。
[0122] 舉例來講,本實施例方法可以以應用軟件(APP)的方式提供給用戶,用戶將該APP 安裝到手機上之后,在將所錄的用戶演唱歌曲發布之前,可以使用該APP對用戶演唱歌曲進 行修正,或者說是潤色,然后再對外發布(例如上傳到社交網站上)。作為示例可參見圖2所 示,在圖2中,用戶可以在該APP的界面中通過點擊"錄制歌曲"按鈕來錄制歌曲,通過"潤色 歌曲"按鈕來對所錄歌曲進行修正。
[0123] 另外對所錄歌曲的修正可以在用戶的手機上直接進行,也可以將所唱歌曲發送給 云端的服務器,參見圖3所述,由服務器進行修正,然后再將修正后的歌曲發回給用戶的手 機,對此本實施例并不進行限制。
[0124] 步驟S102,獲取第一音高曲線,所述第一音高曲線為所述第一音頻數據的音高曲 線。
[0125] 對于具體如何獲取第一音高曲線本實施例并不進行限制,本領域技術人員可以根 據不同需求\不同場景而自行設計,可以在此處使用的這些設計都沒有背離本發明的精神 和保護樞圍。
[0126] 步驟S103,根據第二音高曲線,對所述第一音高曲線依次進行音階修正及調性修 正,以得到修正后的第一音高曲線,其中所述第二音高曲線為與所述第一音頻數據相對應 的第二音頻數據的音高曲線。
[0127] 第二音頻數據是修正第一音頻數據的基準,例如當第一音頻數據為用戶所唱歌曲 時,則第二音頻數據可以是對應的原唱歌曲。
[0128] 作為示例,原唱歌曲通常可以是由專業歌手演唱的歌曲。而為了提升修正效果,優 選的,所述用戶所唱歌曲和所述原唱歌曲均為清唱歌曲。當然在其他情況下,如歌曲含有伴 奏的情況下,可以先對歌曲進行預處理,以去掉伴奏或減弱伴奏,對于預處理的方式本實施 例并不進行限制。原唱歌曲的音高曲線可以預先提取,也可以和用戶演唱歌曲音高曲線一 同提取,具體提取方法可以與用戶演唱歌曲音高曲線的提取方法相同。類似的,當所述第一 音頻數據為用戶所演奏的純音樂時,所述第一音頻數據和所述第二音頻數據優選均為使用 單一樂器所演奏的音樂。
[0129] 需要說明的是,在本實施例中,以歌曲為例,默認用戶所唱歌曲與原唱歌曲在時間 上相差不遠,即用戶所唱歌曲不搶唱太多,也不唱慢太多,即基本上在時間上是對齊的。而 對于與原唱歌曲在時間上相差過多的用戶演唱歌曲,可以通過語義的方法將用戶演唱歌曲 的音高連續段與原唱歌曲的音高連續段的起始點對齊。換句話說,在本實施例或本發明其 他某些實施例中,對所述第一音高曲線依次進行音階修正及調性修正之前,所述方法還可 以包括:
[0130] 根據歌詞語義將所述第一音高曲線中音高連續段的起始點與所述第二音高曲線 中音高連續段的起始點對齊。
[0131] 當然本領域技術人員也可以根據不同需求\不同場景而自行設計其他對齊方法, 對此本實施例并不進行限制。
[0132] 步驟S104,將修正后的第一音高曲線轉換回音頻信號,以得到修正后的第一音頻 數據。
[0133] 作為示例,具體轉換時,可以將修正后的第一音高曲線先轉換為基頻,然后通過逆 傅里葉變換得到相應的音頻信號,將音高修正前的音頻信號進行高通濾波處理得到共振峰 加強后的音頻信號,為了重新引入修正后的聲道特性,將共振峰加強后的音頻信號與逆傅 里葉變換后的音頻信號進行混疊,最終得到修正后的第一音頻數據。
[0134] 參見圖4所示,在本實施例或本發明其他某些實施例中,所述獲取第一音高曲線, 可以包括:
[0135] 步驟S401,對所述第一音頻數據進行分幀。
[0136] 作為示例,所述對所述第一音頻數據進行分幀,可以包括:
[0137] 根據所述第一音頻數據的節奏進行分幀,或者,以固定時長為單位進行分幀。
[0138] 具體來講,所述分幀可以使用基于beat tracking的分幀方法,將用戶歌曲數據分 為一系列小的beat幀,baet幀根據歌曲的節奏劃分,從而可以避免固定時長分幀時出現幀 長不足一段節奏或跨越多個節奏等情況。當然,也可以采用其它的分幀方法,如固定時長分 幀方法,如40ms作為一幀對歌曲數據進行分幀。
[0139] 步驟S402,提取分幀后得到的每幀數據的基頻。
[0140]為了能夠較好的從樂理角度對用戶歌曲進行修正,本實施例根據基頻與音高的轉 換關系,將每幀音頻數據的基頻值轉換為音高,從而得到用戶演唱歌曲音高曲線。
[0141] 具體來講,可以采用動態規劃方法提取每幀歌曲數據的基頻。為了避免計算自相 關函數時共振峰的干擾,可以首先對歌曲數據進行低通濾波,再計算分幀后每幀音頻數據 傅里葉變換的自相關函數;然后根據每幀音頻數據自相關函數計算結果,選擇局部極大值 作為每幀音頻數據的侯選基頻值;最后選擇多幀音頻數據的侯選基頻值進行動態規劃,根 據動態規劃得到的最優路徑,確定每幀音頻數據的基頻值。
[0142] 步驟S403,將提取的每幀數據的基頻轉換為音高值。
[0143] 根據樂理知識,將基頻轉換為音高可以通過如下公式進行計算:
[0144]
⑴
[0145] 其中,fo為中心音符C所對應的頻率,取值為440Hz,co、C1為固定常數,F為每幀音頻 數據的基頻值,s為轉換后的音高值。
[0146] 步驟S404,以各音高值作為曲線上的點得到所述第一音高曲線。
[0147] 將各音高值連接起來,便可以得到第一音高曲線。
[0148] 音階即以全音、半音按照固定音程組織順序排列的一串音,排列形式為梯形,如七 聲音階;所述調性即多個音按照一定的關系(高低關系、穩定與不穩定的關系)聯結在一起, 構成以某一音為中心的體系。音高反映了人耳對音高的線性感知程度,根據樂理知識,通過 音高值可以得到音高所在音階及相應的音符,如音高值S = I時,表示中心音階的音符D,記 為S = 1 = J4,其中苑的上標表示音階編號,下標表示具體音符,則當S = -11時, S = -11 = .1-1.2 = *? -12 = Sfl1,W表示比中心音階低一個八度的音符D;同理,當s = 13時, S = 13 =1 + 12 = ?+12 = # ,兄表示比中心音階高一個八度的音符D。
[0149] 音階反應了音高的整體趨勢,一首歌曲的音階會在不同時刻發生變化,一般歌曲 的主歌部分通常以敘事為主,音階較低,而歌曲的副歌部分通常感情較豐富,音階較高。經 過訓練的專業歌手通常能較好的控制整首歌曲的音階,而普通用戶經常無法做到這點,經 常會出現音階忽高忽低的情況,因此,需要對用戶演唱歌曲進行音階規整。音階層面的修 正,主要是根據原唱歌曲的音高曲線,修正用戶演唱歌曲音高曲線所在音階范圍,使修正后 的用戶演唱歌曲與原唱歌曲保持在相同的音階范圍內或相差一或多個音階,如用戶演唱歌 曲整體比原唱歌低一個音階或高一個音階。
[0150] 對音階進行修正的過程可參見圖5所示,在本實施例或本發明其他某些實施例中, 所述根據第二音高曲線,對所述第一音高曲線進行音階修正,可以包括:
[0151] 步驟S501,按照預設方式將所述第一音高曲線劃分為多個片段,每個片段包含一 個或多個音高連續段。
[0152] 對于預設方式的具體內容本實施例并不進行限制,以歌曲為例,可以根據歌詞以 句為單位選擇歌曲片段,每次可以選擇一句或多句作為一個片段。一般中間不停頓就認為 是一個音高連續段,一個片段可以包含一到多個音高連續段。
[0153] 步驟S502,通過獲取每個片段與所述第二音高曲線相應部分在音高值上的差別、 每個片段內各音高連續段與所述第二音高曲線相應部分在音高值上的差別,確定每個片段 內各音高連續段偏離所述第二音高曲線的程度,以及,
[0154] 根據每個片段內各音高連續段偏離所述第二音高曲線的程度,對需要調整的音高 連續段進行音階調整,以使調整后的第一音高曲線與所述第二音高曲線在音階上滿足預設 關系。
[0155] 作為示例,所述預設關系可以為:
[0156] 調整后的第一音高曲線與所述第二音高曲線在相同的音階范圍內,
[0157] 或者,
[0158] 調整后的第一音高曲線與所述第二音高曲線相差固定的音階。
[0159] 參見圖6所示,在具體實施時,所述通過獲取每個片段與所述第二音高曲線相應部 分在音高值上的差別、每個片段內各音高連續段與所述第二音高曲線相應部分在音高值上 的差別,確定每個片段內各音高連續段偏離所述第二音高曲線的程度,可以包括:
[0160] 步驟S601,對于每個片段,計算當前片段的第一均值以及當前片段內每個音高連 續段的第二均值,其中第一均值為當前片段上各幀與第二音高曲線相應幀的音高差的總均 值,第二均值為音高連續段上的各幀與第二音高曲線相應幀的音高差的均值。
[0161] 步驟S602,基于音高連續段的第二均值與第一均值的比值,確定音高連續段偏離 所述第二音高曲線的程度。
[0162] 參見圖7所示,在具體實施時,所述根據每個片段內各音高連續段偏離所述第二音 高曲線的程度,對需要調整的音高連續段進行音階調整,可以包括:
[0163] 步驟S701,對于每個音高連續段,根據當前音高連續段偏離所述第二音高曲線的 程度與預設閾值的關系,確定是否需要對當前音高連續段進行音階調整。
[0164] 步驟S702,當需要對當前音高連續段進行音階調整時,向偏離的反方向調整當前 音高連續段的音階,直至當前音高連續段與所述第二音高曲線在音階上滿足所述預設關 系。
[0165] 下面對圖5~圖7所涉及的具體計算過程進行進一步說明:
[0166] 1)首先計算第一均值和第二均值。
[0167] 第二均值,即第一音高曲線的音高連續段上的各幀與第二音高曲線相應幀的音高 差的均值,可以通過如下公式進行計算:
[0168]
(2)
[0169] 其中,/^:_%表示第一音高曲線當前片段與第二音高曲線相應片段中第i個音高 連續段的音高差的均值,S〃U表示當前片段內第i個音高連續段內第j幀的音高值,S〃U表示 第二音高曲線上與S〃U相對應的幀的音高值,&1與匕分別表示當前片段內第i個音高連續段 的幀起始及幀結束位置。
[0170] 第一均值,即當前片段上各幀與第二音高曲線相應幀的音高差的總均值,可以通 過如下公式進行計算:
[0171]
(3;)
[0172] 其中,μ?表示當前片段上各幀與第二音高曲線上相應幀的音高差的總均值,k表 示當前片段內音高連續段的總數,其他參數含義同上文。
[0173] 2)然后計算每個片段中每個音高連續段偏離第二音高曲線的程度。
[0174] 笛一構估乜笛一構估的比值可以通過如下公式計算:
[0175] (4)
[0176] 其中,Dev1表示第二均值與第一均值的比值,用于指示第一音高曲線當前片段內 第i個音高連續段相比于當前片段內所有音高連續段偏離第二音高曲線的程度。
[0177] 3)再根據音高連續段偏離第二音高曲線的程度判斷當前片段內每個音高連續段 是否需要進行音階規整,判斷結果使用I 1表示,具體判斷方法可以通過下式: 1234
CS) 2 其中,I1 = I表示第i個音高連續段需要進行音階規整,I1 = O表示第i個音高連續段 不需要進行音階規整。Ctcilerance為音階規整容忍度,也即預設閾值,C tcileranc^l,具體取值可 以根據應用需求或實驗結果而定。 3 4)最后,當需要對當前音高連續段進行音階調整時,向偏離的反方向調整當前音 高連續段的音階,直至當前音高連續段與所述第二音高曲線在音階上滿足所述預設關系。 4 音階調整方向包含正向音階調整和反向音階調整兩種,可以通過下式確定當前片 段內第i個音高連續段的音階調整方向Diri:
[0182]
(6)
[0183]如果Diri >0,說明第一音高曲線中的該音高連續段所在音階高于第二音高曲線 中相應的音高連續段所在音階,則該音高連續段所在音階需要降低,即對該音高連續段進 行反向音階規整,具體規整時,每次降低一個音階后,重新計算降低音階后的該音高連續段 偏離第二音高曲線的程度,判斷是否需要再次進行音階規整,具體判斷方法與式(5)相同, 持續該過程直到不需要進行音階規整為止;
[0184] 如果Diri<0,說明第一音高曲線中的該音高連續段所在音階低于第二音高曲線 中相應的音高連續段所在音階,則該音高連續段所在音階需要增加,即對該音高連續段進 行正向音階規整,具體規整時,每次增加一個音階后,重新計算增加音階后的該音高連續段 偏離第二音高曲線的程度,判斷是否需要再次進行音階規整,具體判斷方法與式(5)相同, 持續該過程直到不需要進行音階規整為止。
[0185] 最終規整后的第一音高曲線與作為標準的第二音高曲線保持在相同的音階范圍 內或相差固定的音階,一般第一音高曲線與第二音高曲線最多相差2個音階。
[0186] 作為示例,對音階的規整可參見圖8所示,在圖8中以歌曲為例,橫軸表示歌曲的幀 數,縱軸表示每幀的音高值,I表示原唱歌曲片段的音高曲線,II和III分別表示比原唱歌曲 片段高一個音階和低一個音階的音高曲線。圖8中原唱音高曲線I保持在了同一個音階范圍 內,而對于普通用戶,在歌曲的轉折部分,用戶對于音階走勢的表現經常出現明顯偏差,如 圖中,對音高曲線I,用戶演唱的音高曲線經常會是曲線IV和曲線VII的組合,或者曲線VI和 曲線VII的組合(VII表示用戶演唱歌曲片段副歌部分音高曲線),這兩種情況下,用戶演唱 音高連續段偏離原唱歌曲片段的程度較大,超過了音階規整的容忍度,因此,需要進行音階 規整,最終規整后的結果為用戶演唱音高曲線組合為曲線V和曲線VII的組合,與原唱歌曲 保持在相同的音階范圍內。
[0187] 對第一音高曲線進行音階規整之后,第一音高曲線相對符合第二音高曲線的趨 勢,但在音高曲線的起伏上可能還存在一些差異,為了減小這些差異,需要從調性層面對第 一音高曲線繼續進行修正。
[0188] 因此參見圖9所示,在本實施例或本發明其他某些實施例中,所述根據第二音高曲 線,對所述第一音高曲線進行調性修正,可以包括:
[0189] 步驟S901,獲取第二音符折線,所述第二音符折線為對所述第二音頻數據進行調 性規整后得到的音符折線。
[0190]步驟S902,根據所述第二音符折線中每個折線段與所述第一音高曲線的高低位置 關系,對所述第一音高曲線進行調性規整以得到第一音符折線。
[0191] 步驟S903,對所述第一音符折線進行平滑處理,將平滑處理后得到的曲線作為修 正后的第一首尚曲線。
[0192] 作為示例,參見圖10所示,在本實施例或本發明其他某些實施例中,所述獲取第二 音符折線,可以包括:
[0193] 步驟S1001,獲取所述第二音頻數據的調性。
[0194] 例如具體實現時,可以首先利用預先訓練構建的調性檢測模型對第二音頻數據進 行調性檢測,得到其調性,其中調性檢測模型可以通過預先收集大量音頻如歌曲等數據訓 練得到,如采用貝葉斯模型描述調性檢測模型。
[0195]步驟S1002,通過計算所述第二音高曲線中每幀與臨近音符在音高上的距離,將每 幀的音高規整到距離最近的音符上以得到所述第二音符折線,其中所述第二音頻數據的調 性中未出現的音符不作為所述臨近音符。
[0196]以歌曲為例,如采用調性檢測模型檢測原唱歌曲的調性為C大調,在C大調歌曲中 既無升調音符也無降調音符;然后根據調性檢測結果對原唱歌曲進行調性規整,具體規整 時,先計算音高曲線中每幀音高與臨近音符音高的距離,將每幀音高規整到距離較近的音 符上,需要說明的是,當前歌曲調性中不出現的音符不作為臨近音符。
[0197] 作為示例可參見圖11所示,圖11中實線為原唱音高曲線,橫軸為歌曲的幀數,縱軸 為每幀對應音符。在原唱音高曲線第100幀處的音高值距離音符Gb較近,如果原唱歌曲為C 大調,而Gb音符在C大調中不出現,故計算距離時Gb忽略。經計算I 卻|<| Siw-W I,其中 S100表示原唱歌曲音高曲線第100幀處的音高值,巧表示中心音階的G音符,g表示中心音 階的F音符,因此,S1qq被規整為;。這樣依次對原唱歌曲音高曲線的每幀音高值進行規整, 得到規整后的音符折線,如圖11中虛線所示。
[0198] 在本實施例或本發明其他某些實施例中,所述根據所述第二音符折線中每個折線 段與所述第一音高曲線的高低位置關系,對所述第一音高曲線進行調性規整以得到第一音 符折線,可以包括:
[0199] 當第一音高曲線在第二音符折線的折線段以下或以上時,將第一音高曲線相應部 分變換為折線段,此時第一音高曲線的折線段的音高值根據第二音符折線的折線段對應的 第一音高曲線相應部分的中間幀音高值、第二音符折線的折線段對應的音高值以及第一音 高曲線相應部分中的音高最大值而確定;
[0200] 當第一音高曲線穿過第二音符折線的折線段時,將第一音高曲線相應部分變換為 折線段,此時第一音高曲線的折線段的音高值為第二音符折線的折線段對應的音高值。
[0201] 將第二音高曲線規整為一段段折線段的目的是使第一音高曲線可以根據第二音 高曲線的各折線段也規整為一段段折線段。折線段的關鍵在于該折線段有多"高",也即對 應多少音高值。那么下面就對如何確定第一音高曲線的各折線段的音高值,也即如何根據 所述第二音符折線中每個折線段與所述第一音高曲線的高低位置關系,對所述第一音高曲 線進行調性規整以得到第一音符折線所涉及的具體計算過程進行進一步說明:
[0202]假設W '是第二音符折線中的一個折線段,W '對應的音符為音符X,第一音高曲線中 與W'相對應的曲線段為V,V的幀起始和幀結束的位置分別為Pl和ql,曲線段V最終將會被規 整為折線段W"。
[0203] 1)首先確定基礎值。所要得到的第一音高曲線的折線段的音高值,也即W"的音高 值,是通過在一個基礎值上提升或降低某音高值而得到的。在這里以曲線段為V的中間幀音 高值作為該基礎值,即基礎值為s (Pi+qi)/2。
[0204] 2)然后計算需要提升或降低的音高值。又分為三種情況:
[0205] 情況1:曲線段V在W'之下。此時需要提升的音高值可以通過下式計算:
[0206]
(7)
[0207]其中,Supl表示需要提升的音高值。S_unt為控制因子,具體取值可以實際應用需求 或實驗結果取值,如取值為〇. 5。if表示音階為y的音符X對應折線的音高值,也即第二音符 折線的折線段對應的音高值。81表示第一音高曲線第1幀的音高值。max 表示曲線段V中 的音高最大值,也即第一音高曲線相應部分中的音高最大值。
[0208]情況2:曲線段V在W'之上。此時需要提升的音高值(此時實際為降低音高值,故需 要提升的音高值為負)可以通過下式計算:
[0209]
.(8.)
[0210] 其中,Sup2表示需要提升的音高值(實際為負值)。
[0211 ]情況3:曲線段V穿過W'。此時不需要提升也不需要降低音高值。
[0212] 3)最后基于基礎值及需要提升或降低的音高值得到W"的音高值。
[0213] 對千曲錄勢下成少卜的情況,根據以下公式計算:
[0214]
[0215] 其中,Sf。搬t為W"的音高值,之下時Sup取Supl,之上時S up取Sup2。
[0216]而對于曲線段V穿過W'的情況,則W"的音高值直接取W'的音高值即可。
[0217] 需要說明的是,以歌曲為例,如果音階修正時將用戶演唱歌曲音高曲線規整到與 原唱歌曲音高曲線相差一或多個音階,則在對用戶演唱歌曲音高曲線進行調性規整前,需 要先將得到的原唱歌曲的音符折線上移或下移到與用戶演唱歌曲音高曲線相同的音階范 圍內。如音階修正后,用戶演唱歌曲音高曲線比原唱歌曲音高曲線低一個音階,則在對用戶 演唱歌曲音高曲線進行調性規整前,需要將原唱歌曲音高曲線相應音符折線下移一個音 階。
[0218] 下面再結合圖12對第一音高曲線進行調性規整的過程進行舉例說明。在圖12中, 以歌曲為例,橫軸為歌曲的幀數,縱軸為每幀對應音符,曲線為用戶演唱歌曲音高曲線,虛 折線為原唱歌曲音高曲線調性規整后得到的音符折線,實折線為用戶演唱歌曲音高曲線調 性規整后的得到折線。
[0219] 例如:用戶演唱歌曲音高曲線的第20幀至第65幀在原唱歌曲音符G對應折線以下, 需要對用戶演唱歌曲音高曲線對應音高值提升,根據提升后的音高值對用戶演唱歌曲音高 曲線進行調性規整,如第20幀到第65幀的實折線。
[0220]又例如:用戶演唱歌曲音高曲線的第66幀至第92幀在原唱歌曲音符F對應折線以 上,需要對用戶演唱歌曲音高曲線進行反向提升,根據反向提升后的音高值對用戶演唱歌 曲音高曲線進行調性規整,如第66幀至第92幀的實折線。
[0221] 再例如:用戶演唱歌曲音高曲線的第159幀至212幀,用戶演唱歌曲音高曲線穿過 原唱音符F對應折線,則直接將該段用戶演唱歌曲音高曲線規整為原唱音符F對應折線,如 圖中第159幀至212幀的實折線。
[0222] 得到了第一音符折線(即用戶演唱歌曲音高曲線調性規整后的折線)后,如何對第 一音符折線進行平滑處理本實施例并不進行限制。例如可以通過如下方式:
[0223] 可以采用插值的方法將第一音符折線平滑成曲線,插值方法可以為多項式插值、 樣條插值及其思想類似的插值方法。將插值后的音高值連接起來,即得到平滑后的第一音 尚曲線。
[0224] 作為示例可參見圖13。圖13中以歌曲為例,橫軸為歌曲的幀數,縱軸表示每幀的音 尚值,虛折線為原唱歌曲首尚曲線調性規整后的首符折線,實折線為用戶演唱歌曲首尚曲 線調性規整后的折線,曲線為根據實折線,使用插值方法得到平滑曲線,即用戶演唱歌曲調 性規整后的音高曲線。
[0225] 作為示例圖14展示出了原唱音高曲線與修正后的用戶演唱音高曲線的對比,橫軸 為歌曲的幀數,縱軸表不每幀的首尚值,虛線為原唱歌曲首尚曲線,實線為首階修正和調性 修正后的音高曲線,由圖中可以看出音階修正將用戶演唱歌曲音高曲線修正到與原唱歌曲 音高曲線相同的音階范圍內,再經過調性修正使用戶演唱歌曲音高曲線的起伏更明顯,同 時更接近原唱歌曲音高曲線,從而使修正后的用戶演唱歌曲具有更好的節奏感。
[0226] 此外,參見圖15所示,得到修正后的第一音頻數據之后,所述方法還可以包括:
[0227] 步驟S1501,將修正后的第一音頻數據反饋給用戶。
[0228] 參見圖16所示,用戶可以點擊"試聽歌曲"按鈕,從而聽到修正也即潤色后的所錄 歌曲。
[0229] 在本實施例中,并不是對音頻數據進行簡單的替換,而是從音頻數據的音高曲線 入手,分別從音階層面及調性層面對用戶演唱歌曲等音頻數據的音高曲線進行修正。音階 層面的修正可以將用戶演唱歌曲音高曲線規整到與原唱歌曲音高曲線相同的音階范圍內 或相差一或多個音階,而調性層面的修正則可以針對用戶演唱歌曲音高曲線的起伏進行修 正。本發明實施例中的方案可以使修正后的用戶演唱歌曲音高曲線與原唱歌曲音高曲線的 走勢保持一致,并且用戶演唱歌曲音高曲線的起伏相比修正前更接近原唱歌曲,從而大大 提升了用戶演唱歌曲的節奏感和聽感,提升了對歌曲等音頻數據的修正效果。
[0230] 下述為本發明裝置實施例,可以用于執行本發明方法實施例。對于本發明裝置實 施例中未披露的細節,請參照本發明方法實施例。
[0231] 圖17是根據本發明一示例性實施例示出的一種音頻修正裝置的示意圖。參見圖17 所示,該裝置可以包括:
[0232] 音頻數據獲取模塊1701,用于獲取第一音頻數據;
[0233] 音高曲線獲取模塊1702,用于獲取第一音高曲線,所述第一音高曲線為所述第一 首頻數據的首尚曲線;
[0234]音階修正模塊1703,用于根據第二音高曲線,對所述第一音高曲線進行音階修正, 其中所述第二音高曲線為與所述第一音頻數據相對應的第二音頻數據的音高曲線;
[0235]調性修正模塊1704,用于根據第二音高曲線,對完成了音階修正的第一音高曲線 進行調性修正,以得到修正后的第一音高曲線;
[0236]音頻數據還原模塊1705,用于將修正后的第一音高曲線轉換回音頻信號,以得到 修正后的第一音頻數據。
[0237] 參見圖18所示,在本實施例或本發明其他某些實施例中,所述音高曲線獲取模塊 可以包括:
[0238] 分幀子模塊1801,用于對所述第一音頻數據進行分幀;
[0239] 基頻提取子模塊1802,用于提取分幀后得到的每幀數據的基頻;
[0240] 音高值轉換子模塊1803,用于將提取的每幀數據的基頻轉換為音高值;
[0241] 曲線生成子模塊1804,用于以各音高值作為曲線上的點得到所述第一音高曲線。
[0242] 在本實施例或本發明其他某些實施例中,所述對所述第一音頻數據進行分幀,可 以包括:
[0243] 根據所述第一音頻數據的節奏進行分幀;或者,以固定時長為單位進行分幀。
[0244] 參見圖19所示,在本實施例或本發明其他某些實施例中,所述音階修正模塊可以 包括:
[0245] 片段劃分子模塊1901,用于按照預設方式將所述第一音高曲線劃分為多個片段, 每個片段包含一個或多個音高連續段;
[0246] 音階調整子模塊1902,用于通過獲取每個片段與所述第二音高曲線相應部分在音 高值上的差別、每個片段內各音高連續段與所述第二音高曲線相應部分在音高值上的差 另IJ,確定每個片段內各音高連續段偏離所述第二音高曲線的程度,以及,根據每個片段內各 音高連續段偏離所述第二音高曲線的程度,對需要調整的音高連續段進行音階調整,以使 調整后的第一音高曲線與所述第二音高曲線在音階上滿足預設關系。
[0247] 在本實施例或本發明其他某些實施例中,所述預設關系為:
[0248] 調整后的第一音高曲線與所述第二音高曲線在相同的音階范圍內,或者,調整后 的第一音高曲線與所述第二音高曲線相差固定的音階。
[0249] 在本實施例或本發明其他某些實施例中,所述通過獲取每個片段與所述第二音高 曲線相應部分在音高值上的差別、每個片段內各音高連續段與所述第二音高曲線相應部分 在音高值上的差別,確定每個片段內各音高連續段偏離所述第二音高曲線的程度,可以包 括:
[0250] 對于每個片段,計算當前片段的第一均值以及當前片段內每個音高連續段的第二 均值,其中第一均值為當前片段上各幀與第二音高曲線相應幀的音高差的總均值,第二均 值為音高連續段上的各幀與第二音高曲線相應幀的音高差的均值;
[0251] 基于音高連續段的第二均值與第一均值的比值,確定音高連續段偏離所述第二音 高曲線的程度。
[0252] 在本實施例或本發明其他某些實施例中,所述根據每個片段內各音高連續段偏離 所述第二音高曲線的程度,對需要調整的音高連續段進行音階調整,可以包括:
[0253] 對于每個音高連續段,根據當前音高連續段偏離所述第二音高曲線的程度與預設 閾值的關系,確定是否需要對當前音高連續段進行音階調整;
[0254] 當需要對當前音高連續段進行音階調整時,向偏離的反方向調整當前音高連續段 的音階,直至當前音高連續段與所述第二音高曲線在音階上滿足所述預設關系。
[0255] 參見圖20所示,在本實施例或本發明其他某些實施例中,所述調性修正模塊可以 包括:
[0256]第二音符折線獲取子模塊2001,用于獲取第二音符折線,所述第二音符折線為對 所述第二音頻數據進行調性規整后得到的音符折線;
[0257]第一音符折線生成子模塊2002,用于根據所述第二音符折線中每個折線段與所述 第一音高曲線的高低位置關系,對所述第一音高曲線進行調性規整以得到第一音符折線; [0258]平滑子模塊2003,用于對所述第一音符折線進行平滑處理,將平滑處理后得到的 曲線作為修正后的第一音高曲線。
[0259]在本實施例或本發明其他某些實施例中,所述獲取第二音符折線,可以包括:
[0260]獲取所述第二音頻數據的調性;
[0261] 通過計算所述第二音高曲線中每幀與臨近音符在音高上的距離,將每幀的音高規 整到距離最近的音符上以得到所述第二音符折線,其中所述第二音頻數據的調性中未出現 的音符不作為所述臨近音符。
[0262] 在本實施例或本發明其他某些實施例中,所述根據所述第二音符折線中每個折線 段與所述第一音高曲線的高低位置關系,對所述第一音高曲線進行調性規整以得到第一音 符折線,可以包括:
[0263] 當第一音高曲線在第二音符折線的折線段以下或以上時,將第一音高曲線相應部 分變換為折線段,此時第一音高曲線的折線段的音高值根據第二音符折線的折線段對應的 第一音高曲線的中間幀音高值、第二音符折線的折線段對應的音高值以及第一音高曲線相 應部分中的音高最大值而確定;
[0264] 當第一音高曲線穿過第二音符折線的折線段時,將第一音高曲線相應部分變換為 折線段,此時第一音高曲線的折線段的音高值為第二音符折線的折線段對應的音高值。
[0265] 參見圖21所示,在本實施例或本發明其他某些實施例中,所述裝置還可以包括: [0266]反饋模塊2101,用于將修正后的第一音頻數據反饋給用戶。
[0267] 在本實施例或本發明其他某些實施例中,所述第一音頻數據為用戶所唱歌曲,所 述第二音頻數據為與所述第一音頻數據對應的原唱歌曲;或者,所述第一音頻數據為用戶 所演奏的純音樂,所述第二音頻數據為與第一音頻數據對應的示范音樂。
[0268] 在本實施例或本發明其他某些實施例中,當所述第一音頻數據為用戶所唱歌曲 時,所述第一音頻數據和所述第二音頻數據均為清唱歌曲;當所述第一音頻數據為用戶所 演奏的純音樂時,所述第一音頻數據和所述第二音頻數據均為使用單一樂器所演奏的音 樂。
[0269] 參見圖22所示,在本實施例或本發明其他某些實施例中,當所述第一音頻數據為 用戶所唱歌曲時,所述裝置還可以包括:
[0270]對齊模塊2201,用于在對所述第一音高曲線進行音階修正及調性修正之前,根據 歌詞語義將所述第一音高曲線中音高連續段的起始點與所述第二音高曲線中音高連續段 的起始點對齊。
[0271] 在本實施例中,并不是對音頻數據進行簡單的替換,而是從音頻數據的音高曲線 入手,分別從音階層面及調性層面對用戶演唱歌曲等音頻數據的音高曲線進行修正。音階 層面的修正可以將用戶演唱歌曲音高曲線規整到與原唱歌曲音高曲線相同的音階范圍內 或相差一或多個音階,而調性層面的修正則可以針對用戶演唱歌曲音高曲線的起伏進行修 正。本發明實施例中的方案可以使修正后的用戶演唱歌曲音高曲線與原唱歌曲音高曲線的 走勢保持一致,并且用戶演唱歌曲音高曲線的起伏相比修正前更接近原唱歌曲,從而大大 提升了用戶演唱歌曲的節奏感和聽感,提升了對歌曲等音頻數據的修正效果。
[0272] 關于上述實施例中的裝置,其中各個模塊執行操作的具體方式已經在有關該方法 的實施例中進行了詳細描述,此處將不做詳細闡述說明。
[0273] 本領域技術人員在考慮說明書及實踐這里公開的發明后,將容易想到本發明的其 它實施方案。本申請旨在涵蓋本發明的任何變型、用途或者適應性變化,這些變型、用途或 者適應性變化遵循本發明的一般性原理并包括本發明未公開的本技術領域中的公知常識 或慣用技術手段。說明書和實施例僅被視為示例性的,本發明的真正范圍和精神由所附的 權利要求指出。
[0274]應當理解的是,本發明并不局限于上面已經描述并在附圖中示出的精確結構,并 且可以在不脫離其范圍進行各種修改和改變。本發明的范圍僅由所附的權利要求來限制。
【主權項】
1. 一種音頻修正方法,其特征在于,所述方法包括: 獲取第一音頻數據; 獲取第一音高曲線,所述第一音高曲線為所述第一音頻數據的音高曲線; 根據第二音高曲線,對所述第一音高曲線依次進行音階修正及調性修正,以得到修正 后的第一音高曲線,其中所述第二音高曲線為與所述第一音頻數據相對應的第二音頻數據 的首尚曲線; 將修正后的第一音高曲線轉換回音頻信號,以得到修正后的第一音頻數據。2. 根據權利要求1所述的方法,其特征在于,所述獲取第一音高曲線,包括: 對所述第一音頻數據進行分幀; 提取分幀后得到的每幀數據的基頻; 將提取的每幀數據的基頻轉換為音高值; 以各音高值作為曲線上的點得到所述第一音高曲線。3. 根據權利要求2所述的方法,其特征在于,所述對所述第一音頻數據進行分幀,包括: 根據所述第一音頻數據的節奏進行分幀; 或者, 以固定時長為單位進行分幀。4. 根據權利要求1所述的方法,其特征在于,所述根據第二音高曲線,對所述第一音高 曲線進行音階修正,包括: 按照預設方式將所述第一音高曲線劃分為多個片段,每個片段包含一個或多個音高連 續段; 通過獲取每個片段與所述第二音高曲線相應部分在音高值上的差別、每個片段內各音 高連續段與所述第二音高曲線相應部分在音高值上的差別,確定每個片段內各音高連續段 偏離所述第二音高曲線的程度,以及, 根據每個片段內各音高連續段偏離所述第二音高曲線的程度,對需要調整的音高連續 段進行音階調整,以使調整后的第一音高曲線與所述第二音高曲線在音階上滿足預設關 系。5. 根據權利要求4所述的方法,其特征在于,所述預設關系為: 調整后的第一音高曲線與所述第二音高曲線在相同的音階范圍內, 或者, 調整后的第一音高曲線與所述第二音高曲線相差固定的音階。6. 根據權利要求4所述的方法,其特征在于,所述通過獲取每個片段與所述第二音高曲 線相應部分在音高值上的差別、每個片段內各音高連續段與所述第二音高曲線相應部分在 音高值上的差別,確定每個片段內各音高連續段偏離所述第二音高曲線的程度,包括: 對于每個片段,計算當前片段的第一均值以及當前片段內每個音高連續段的第二均 值,其中第一均值為當前片段上各幀與第二音高曲線相應幀的音高差的總均值,第二均值 為音高連續段上的各幀與第二音高曲線相應幀的音高差的均值; 基于音高連續段的第二均值與第一均值的比值,確定音高連續段偏離所述第二音高曲 線的程度。7. 根據權利要求4所述的方法,其特征在于,所述根據每個片段內各音高連續段偏離所 述第二音高曲線的程度,對需要調整的音高連續段進行音階調整,包括: 對于每個音高連續段,根據當前音高連續段偏離所述第二音高曲線的程度與預設閾值 的關系,確定是否需要對當前音高連續段進行音階調整; 當需要對當前音高連續段進行音階調整時,向偏離的反方向調整當前音高連續段的音 階,直至當前音高連續段與所述第二音高曲線在音階上滿足所述預設關系。8. 根據權利要求1所述的方法,其特征在于,所述根據第二音高曲線,對所述第一音高 曲線進行調性修正,包括: 獲取第二音符折線,所述第二音符折線為對所述第二音頻數據進行調性規整后得到的 首符折線; 根據所述第二音符折線中每個折線段與所述第一音高曲線的高低位置關系,對所述第 一音高曲線進行調性規整以得到第一音符折線; 對所述第一音符折線進行平滑處理,將平滑處理后得到的曲線作為修正后的第一音高 曲線。9. 根據權利要求8所述的方法,其特征在于,所述獲取第二音符折線,包括: 獲取所述第二音頻數據的調性; 通過計算所述第二音高曲線中每幀與臨近音符在音高上的距離,將每幀的音高規整到 距離最近的音符上以得到所述第二音符折線,其中所述第二音頻數據的調性中未出現的音 符不作為所述臨近音符。10. 根據權利要求8所述的方法,其特征在于,所述根據所述第二音符折線中每個折線 段與所述第一音高曲線的高低位置關系,對所述第一音高曲線進行調性規整以得到第一音 符折線,包括: 當第一音高曲線在第二音符折線的折線段以下或以上時,將第一音高曲線相應部分變 換為折線段,此時第一音高曲線的折線段的音高值根據第二音符折線的折線段對應的第一 音高曲線相應部分的中間幀音高值、第二音符折線的折線段對應的音高值以及第一音高曲 線相應部分中的音高最大值而確定; 當第一音高曲線穿過第二音符折線的折線段時,將第一音高曲線相應部分變換為折線 段,此時第一音高曲線的折線段的音高值為第二音符折線的折線段對應的音高值。11. 根據權利要求1所述的方法,其特征在于,得到修正后的第一音頻數據之后,所述方 法還包括: 將修正后的第一音頻數據反饋給用戶。12. 根據權利要求1~11任一項所述的方法,其特征在于,所述第一音頻數據為用戶所 唱歌曲,所述第二音頻數據為與所述第一音頻數據對應的原唱歌曲;或者,所述第一音頻數 據為用戶所演奏的純音樂,所述第二音頻數據為與第一音頻數據對應的示范音樂。13. 根據權利要求12所述的方法,其特征在于,當所述第一音頻數據為用戶所唱歌曲 時,所述第一音頻數據和所述第二音頻數據均為清唱歌曲; 當所述第一音頻數據為用戶所演奏的純音樂時,所述第一音頻數據和所述第二音頻數 據均為使用單一樂器所演奏的音樂。14. 根據權利要求12所述的方法,其特征在于,當所述第一音頻數據為用戶所唱歌曲 時,對所述第一音高曲線依次進行音階修正及調性修正之前,所述方法還包括: 根據歌詞語義將所述第一音高曲線中音高連續段的起始點與所述第二音高曲線中音 高連續段的起始點對齊。15. -種音頻修正裝置,其特征在于,所述裝置包括: 音頻數據獲取模塊,用于獲取第一音頻數據; 音高曲線獲取模塊,用于獲取第一音高曲線,所述第一音高曲線為所述第一音頻數據 的首尚曲線; 音階修正模塊,用于根據第二音高曲線,對所述第一音高曲線進行音階修正,其中所述 第二音高曲線為與所述第一音頻數據相對應的第二音頻數據的音高曲線; 調性修正模塊,用于根據第二音高曲線,對完成了音階修正的第一音高曲線進行調性 修正,以得到修正后的第一音高曲線; 音頻數據還原模塊,用于將修正后的第一音高曲線轉換回音頻信號,以得到修正后的 第一音頻數據。16. 根據權利要求15所述的裝置,其特征在于,所述音高曲線獲取模塊包括: 分幀子模塊,用于對所述第一音頻數據進行分幀; 基頻提取子模塊,用于提取分幀后得到的每幀數據的基頻; 音高值轉換子模塊,用于將提取的每幀數據的基頻轉換為音高值; 曲線生成子模塊,用于以各音高值作為曲線上的點得到所述第一音高曲線。17. 根據權利要求16所述的裝置,其特征在于,所述對所述第一音頻數據進行分幀,包 括: 根據所述第一音頻數據的節奏進行分幀;或者,以固定時長為單位進行分幀。18. 根據權利要求15所述的裝置,其特征在于,所述音階修正模塊包括: 片段劃分子模塊,用于按照預設方式將所述第一音高曲線劃分為多個片段,每個片段 包含一個或多個音高連續段; 音階調整子模塊,用于通過獲取每個片段與所述第二音高曲線相應部分在音高值上的 差別、每個片段內各音高連續段與所述第二音高曲線相應部分在音高值上的差別,確定每 個片段內各音高連續段偏離所述第二音高曲線的程度,以及,根據每個片段內各音高連續 段偏離所述第二音高曲線的程度,對需要調整的音高連續段進行音階調整,以使調整后的 第一音高曲線與所述第二音高曲線在音階上滿足預設關系。19. 根據權利要求18所述的裝置,其特征在于,所述預設關系為: 調整后的第一音高曲線與所述第二音高曲線在相同的音階范圍內,或者,調整后的第 一音高曲線與所述第二音高曲線相差固定的音階。20. 根據權利要求18所述的裝置,其特征在于,所述通過獲取每個片段與所述第二音高 曲線相應部分在音高值上的差別、每個片段內各音高連續段與所述第二音高曲線相應部分 在音高值上的差別,確定每個片段內各音高連續段偏離所述第二音高曲線的程度,包括: 對于每個片段,計算當前片段的第一均值以及當前片段內每個音高連續段的第二均 值,其中第一均值為當前片段上各幀與第二音高曲線相應幀的音高差的總均值,第二均值 為音高連續段上的各幀與第二音高曲線相應幀的音高差的均值; 基于音高連續段的第二均值與第一均值的比值,確定音高連續段偏離所述第二音高曲 線的程度。21. 根據權利要求18所述的裝置,其特征在于,所述根據每個片段內各音高連續段偏離 所述第二音高曲線的程度,對需要調整的音高連續段進行音階調整,包括: 對于每個音高連續段,根據當前音高連續段偏離所述第二音高曲線的程度與預設閾值 的關系,確定是否需要對當前音高連續段進行音階調整; 當需要對當前音高連續段進行音階調整時,向偏離的反方向調整當前音高連續段的音 階,直至當前音高連續段與所述第二音高曲線在音階上滿足所述預設關系。22. 根據權利要求15所述的裝置,其特征在于,所述調性修正模塊包括: 第二音符折線獲取子模塊,用于獲取第二音符折線,所述第二音符折線為對所述第二 音頻數據進行調性規整后得到的音符折線; 第一音符折線生成子模塊,用于根據所述第二音符折線中每個折線段與所述第一音高 曲線的高低位置關系,對所述第一音高曲線進行調性規整以得到第一音符折線; 平滑子模塊,用于對所述第一音符折線進行平滑處理,將平滑處理后得到的曲線作為 修正后的第一音高曲線。23. 根據權利要求22所述的裝置,其特征在于,所述獲取第二音符折線,包括: 獲取所述第二音頻數據的調性; 通過計算所述第二音高曲線中每幀與臨近音符在音高上的距離,將每幀的音高規整到 距離最近的音符上以得到所述第二音符折線,其中所述第二音頻數據的調性中未出現的音 符不作為所述臨近音符。24. 根據權利要求22所述的裝置,其特征在于,所述根據所述第二音符折線中每個折線 段與所述第一音高曲線的高低位置關系,對所述第一音高曲線進行調性規整以得到第一音 符折線,包括: 當第一音高曲線在第二音符折線的折線段以下或以上時,將第一音高曲線相應部分變 換為折線段,此時第一音高曲線的折線段的音高值根據第二音符折線的折線段對應的第一 音高曲線的中間幀音高值、第二音符折線的折線段對應的音高值以及第一音高曲線相應部 分中的音高最大值而確定; 當第一音高曲線穿過第二音符折線的折線段時,將第一音高曲線相應部分變換為折線 段,此時第一音高曲線的折線段的音高值為第二音符折線的折線段對應的音高值。25. 根據權利要求15所述的裝置,其特征在于,所述裝置還包括: 反饋模塊,用于將修正后的第一音頻數據反饋給用戶。26. 根據權利要求15~25任一項所述的裝置,其特征在于,所述第一音頻數據為用戶所 唱歌曲,所述第二音頻數據為與所述第一音頻數據對應的原唱歌曲;或者,所述第一音頻數 據為用戶所演奏的純音樂,所述第二音頻數據為與第一音頻數據對應的示范音樂。27. 根據權利要求26所述的裝置,其特征在于,當所述第一音頻數據為用戶所唱歌曲 時,所述第一音頻數據和所述第二音頻數據均為清唱歌曲; 當所述第一音頻數據為用戶所演奏的純音樂時,所述第一音頻數據和所述第二音頻數 據均為使用單一樂器所演奏的音樂。28. 根據權利要求26所述的裝置,其特征在于,當所述第一音頻數據為用戶所唱歌曲 時,所述裝置還包括: 對齊模塊,用于在對所述第一音高曲線進行音階修正及調性修正之前,根據歌詞語義 將所述第一音高曲線中音高連續段的起始點與所述第二音高曲線中音高連續段的起始點 對齊。
【文檔編號】G10L21/013GK106057208SQ201610425682
【公開日】2016年10月26日
【申請日】2016年6月14日
【發明人】李飛吾, 楊溥, 潘青華
【申請人】科大訊飛股份有限公司