專利名稱:基于音頻解碼器的音調(diào)和節(jié)奏快速調(diào)節(jié)方法
技術領域:
本發(fā)明涉及一種音調(diào)和節(jié)奏快速調(diào)節(jié)方法,尤其是涉及一種基于音頻解碼器的音調(diào)和節(jié)奏快速調(diào)節(jié)方法背景技術隨著技術的發(fā)展和成本的下降,多媒體設備逐漸得到普及,在多媒體設備上播放音樂和語音就越來越流行。隨著不同應用的普及,例如便攜式學習機,音調(diào)和節(jié)奏調(diào)節(jié)就越來越成為多媒體設備中不可缺少的一項功能。其中音調(diào)的調(diào)節(jié)是在不改變總的播放時間的情況下,改變基音及其諧音的頻率來實現(xiàn);節(jié)奏的調(diào)節(jié)是在不改變音調(diào)的情況下,延長或者縮短總的播放時間來實現(xiàn),音調(diào)和節(jié)奏的調(diào)節(jié)可以同時進行。
現(xiàn)有技術中,節(jié)奏調(diào)節(jié)采用時域相關的方法,該方法以幀為單位來改變時域的輸出樣點的數(shù)量。有選擇的重復或者丟棄一些樣點,在相鄰幀之間的過渡部分采取尋找相關最大的一段和上一幀結束的一段做混疊。例如輸入N個樣點為一幀,如果是節(jié)奏變快一倍,經(jīng)過這個算法的處理,則輸出N/2個樣點。節(jié)奏變慢的方法類似。該方法處理過程中需要占用大量的內(nèi)存做緩沖,同時由于尋找相關系數(shù)最大的樣點需要做大量的累乘加操作,運算量較大。
對音調(diào)的改變采用頻域調(diào)節(jié)的方法如圖1所示,該方法的核心是把時域信號轉換成頻域信號,對頻域信號進行音調(diào)搬移(Pitch Shifting)之后,再轉換成時域信號。這種通過頻域調(diào)節(jié)的方法,處理過程中需要做一次離散傅立葉變換和一次離散傅立葉反變換,需要的運算量很大。因此,如果用在用在多媒體的音頻解碼器中,目前常用的這些方法要對輸出的音頻信號進行音調(diào)和節(jié)奏的調(diào)節(jié)時,都要做為一個獨立的后處理模塊來進行處理,則沒有充分利用音頻解碼器中現(xiàn)有的模塊,多媒體中常有的音頻解碼器的信號處理流程如圖2所示,其中有時域到頻域的轉換處理過程。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種具有運算量小,占用內(nèi)存少的音調(diào)和節(jié)奏的快速調(diào)節(jié)方法。
上述發(fā)明目的可通過以下的技術措施來實現(xiàn)一種基于音頻解碼器的音調(diào)和節(jié)奏快速調(diào)節(jié)方法,音頻信號先依次經(jīng)音頻解碼器解碼、反量化、頻域處理,接著對頻域處理后的信號進行音調(diào)調(diào)節(jié),再接著依次經(jīng)音頻解碼器對音調(diào)調(diào)節(jié)后的信號進行頻域到時域的轉換、時域處理;最后時域處理后信號進行節(jié)奏調(diào)節(jié)輸出。
本發(fā)明所述的音調(diào)調(diào)節(jié)的具體過程為對頻域處理后的信號先進行頻譜分析,用于改善由于分幀造成的頻譜失真,使得到的頻譜更接近于實際的頻率,再進行音調(diào)搬移,用于補償由于改變輸出速率而造成的音調(diào)偏移,最后進行頻譜綜合,用于修復音調(diào)搬移造成的頻譜失真;頻譜綜合后利用音頻解碼器進行頻域到時域的轉換。
本發(fā)明所述音調(diào)搬移過程中音調(diào)搬移的大小和方向由事先設定的音調(diào)和節(jié)奏兩個參數(shù)決定,最終音調(diào)搬移的幅度按下式得出Pitch_New=Pitch_fs×(1-Tempo)+Pitch其中Pitch表示設定音調(diào)所需調(diào)節(jié)的幅度,大于0表示音調(diào)增高,小于0表示音調(diào)降低;Pitcn_fs表示輸入樣點中最高的音調(diào)值;Tempo表示設定節(jié)奏,大于1表示變快,小于1表示變慢;Pitcn_New表示最終音調(diào)搬移的幅度。
本發(fā)明所述的節(jié)奏調(diào)節(jié)的具體過程為根據(jù)設定的節(jié)奏來改變數(shù)模轉換(DA)的輸出速率。數(shù)模轉換的輸出速率同節(jié)奏快慢成正比,節(jié)奏變快,數(shù)模轉換輸出速率加大;節(jié)奏變慢,數(shù)模轉換輸出速率減小。調(diào)節(jié)后的輸出速率按下式得出SR_New=SR×Tempo;其中SR是原來的DA輸出速率,Tempo表示設定節(jié)奏,大于1表示變快,小于1表示變慢,SR_New表示調(diào)整后的輸出速率。
本發(fā)明利用音頻解碼器中已有的前處理模塊,在轉換前的頻域信號進行音調(diào)調(diào)節(jié),再利用了音頻解碼中的頻域到時域的轉換,通過改變輸出速率,達到節(jié)奏的調(diào)節(jié),這樣既繼承了采用頻域調(diào)節(jié)實現(xiàn)音調(diào)改變效果好的優(yōu)點,同時大大減少了原有音調(diào)和節(jié)奏調(diào)節(jié)方法中需要的大量運算,也避免了使用大量的內(nèi)存緩沖樣點數(shù)據(jù),同時對音頻解碼器增加的運算量也很小。
圖1為現(xiàn)有技術采用頻域調(diào)節(jié)實現(xiàn)音調(diào)改變的流程圖;圖2為現(xiàn)有的音頻解碼器的信號處理流程圖;圖3為本發(fā)明的信號處理流程圖。
具體實施例方式
如圖3所示,本發(fā)明具體實施步驟如下(1)音頻信號先依次經(jīng)音頻解碼器解碼、反量化、頻域處理,例如MP3解碼流程中,首先進行Huffman(霍夫曼)解碼,得到量化后的頻譜系數(shù),然后把量化后的頻譜系數(shù)進行反量化處理,最后做一些頻域處理,例如聯(lián)合立體聲的處理。
(2)對頻域處理后的信號先進行頻譜分析,根據(jù)編碼時采用的時頻轉換方法,得到加窗的類型等信息,然后把頻譜反加窗處理,使得到的頻譜系數(shù)更接近真實的頻譜。
(3)再進行音調(diào)搬移,音調(diào)搬移是指在原來的基礎上主音偏移的大小。音調(diào)搬移過程中音調(diào)搬移的大小和方向由用戶事先設置所需要的音調(diào)和節(jié)奏兩個參數(shù)來決定,節(jié)奏是指播放的快慢,最終音調(diào)搬移的幅度按下式得出Pitch_New=Pitch_fs×(1-Tempo)+Pitch其中Pitch表示設定音調(diào)需要調(diào)節(jié)的幅度,大于0表示音調(diào)增高,小于0表示音調(diào)降低;Pitch_fs表示輸入樣點中最高的音調(diào)值;Tempo表示設定的節(jié)奏,大于1表示變快,小于1表示變慢;Pitch_New表示最終音調(diào)搬移的幅度。
根據(jù)得出的Pitch_New,進行音調(diào)搬移,如果大于0,則表示提高頻譜,如果小于0則表示降低頻譜。
(4)進行頻譜綜合,根據(jù)頻域到時域轉換的方法,把搬移后的頻譜做調(diào)整,進行加窗處理。
(5)頻譜綜合后利用音頻解碼器對音調(diào)調(diào)節(jié)后的信號進行頻域到時域的轉換、時域處理;例如在MP3解碼器中,做MDCT(離散余弦變換)和濾波器組綜合。
(6)時域處理后信號進行節(jié)奏調(diào)節(jié)輸出。節(jié)奏調(diào)節(jié)的具體過程為根據(jù)用戶事先設置的節(jié)奏來改變數(shù)模轉換(DA)的輸出速率。DA的輸出速率同節(jié)奏快慢成正比,節(jié)奏變快,DA輸出速率加大;節(jié)奏變慢,DA輸出速率減小。調(diào)節(jié)后的輸出速率按下式得出SR_New=SR×Tempo;其中SR是原來的DA輸出速率,Tempo表示節(jié)奏,大于1表示變快,小于1表示變慢,SR_New表示調(diào)整后的輸出速率。
權利要求
1.一種基于音頻解碼器的音調(diào)和節(jié)奏快速調(diào)節(jié)方法,其特征在于音頻信號先依次經(jīng)音頻解碼器解碼、反量化、頻域處理,接著對頻域處理后的信號進行音調(diào)調(diào)節(jié),再接著依次經(jīng)音頻解碼器對音調(diào)調(diào)節(jié)后的信號進行頻域到時域的轉換、時域處理;最后時域處理后信號進行節(jié)奏調(diào)節(jié)輸出。
2.根據(jù)權利要求1所述的音調(diào)和節(jié)奏快速調(diào)節(jié)方法,其特征在于所述的音調(diào)調(diào)節(jié)的具體過程為對頻域處理后的信號先進行頻譜分析,用于改善由于分幀造成的頻譜失真,使得到的頻譜更接近于實際的頻率;再進行音調(diào)搬移,用于補償由于改變輸出速率而造成的音調(diào)偏移;最后進行頻譜綜合,用于修復音調(diào)搬移造成的頻譜失真;頻譜綜合后利用音頻解碼器進行頻域到時域的轉換。
3.根據(jù)權利要求2所述的音調(diào)和節(jié)奏快速調(diào)節(jié)方法,其特征在于所述音調(diào)搬移過程中音調(diào)搬移的大小和方向由事先設定的音調(diào)和節(jié)奏兩個參數(shù)決定,最終音調(diào)搬移的幅度按下式得出Pitch_New=Pitch_fs×(1-Tempo)+Pitch其中Pitch表示設定音調(diào)所需調(diào)節(jié)的幅度,大于0表示音調(diào)增高,小于0表示音調(diào)降低;Pitch_fs表示輸入樣點中最高的音調(diào)值;Tempo表示設定節(jié)奏,大于1表示變快,小于1表示變慢;Pitch_New表示最終音調(diào)搬移的幅度。
4.根據(jù)權利要求1所述的音調(diào)和節(jié)奏快速調(diào)節(jié)方法,其特征在于所述的節(jié)奏調(diào)節(jié)的具體過程為根據(jù)設定的節(jié)奏來改變數(shù)模轉換的輸出速率;數(shù)模轉換的輸出速率同節(jié)奏快慢成正比,節(jié)奏變快,數(shù)模轉換輸出速率加大;節(jié)奏變慢,數(shù)模轉換輸出速率減小;調(diào)節(jié)后的輸出速率按下式得出SR_New=SR×Tempo;其中SR是原來的數(shù)模轉換輸出速率,Tempo表示設定節(jié)奏,大于1表示變快,小于1表示變慢,SR_New表示調(diào)整后的輸出速率。
全文摘要
本發(fā)明公開了一種基于音頻解碼器的音調(diào)和節(jié)奏快速調(diào)節(jié)方法,音頻信號先依次經(jīng)音頻解碼器解碼、反量化、頻域處理,接著對頻域處理后的信號進行音調(diào)調(diào)節(jié),再接著依次經(jīng)音頻解碼器對音調(diào)調(diào)節(jié)后的信號進行頻域到時域的轉換、時域處理;最后時域處理后信號進行節(jié)奏調(diào)節(jié)輸出。本發(fā)明利用音頻解碼器中已有的前處理模塊,在轉換前的頻域信號進行音調(diào)調(diào)節(jié),再利用了音頻解碼中的頻域到時域的轉換,通過改變輸出速率,達到節(jié)奏的調(diào)節(jié),這樣既繼承了采用頻域調(diào)節(jié)實現(xiàn)音調(diào)改變效果好的優(yōu)點,同時大大減少了原有音調(diào)和節(jié)奏調(diào)節(jié)方法中需要的大量運算,也避免了使用大量的內(nèi)存緩沖樣點數(shù)據(jù),同時對音頻解碼器增加的運算量也很小。
文檔編號G10H1/00GK1831940SQ20061003488
公開日2006年9月13日 申請日期2006年4月7日 優(yōu)先權日2006年4月7日
發(fā)明者黃立新 申請人:安凱(廣州)軟件技術有限公司