本發(fā)明涉及音頻信號處理領(lǐng)域,具體而言,涉及一種語音數(shù)據(jù)的調(diào)整方法及裝置。
背景技術(shù):
時間尺度變化算法,英文是Time-scale modification,是一種語音在時域進(jìn)行拉伸和壓縮的方法。比如一個信號用S(t)=sin(2t)來表示,那么改變t的系數(shù)把信號變成sin(4t)就是時間尺度變化。時間尺度變化主要用于變速播放和變聲領(lǐng)域,也適用于網(wǎng)絡(luò)抖動、延時和丟包而需要語音修補(bǔ)環(huán)境。
在遇到網(wǎng)絡(luò)抖動、延時和丟包等情況時,通過時間尺度變化算法對語音信號進(jìn)行拉伸或壓縮,可以有效減小惡劣網(wǎng)絡(luò)環(huán)境對語音質(zhì)量的影響,提高在此環(huán)境下的主觀聽音感受。
人在發(fā)濁音時,氣流通過聲門使聲帶產(chǎn)生張馳振蕩式振動,產(chǎn)生一股準(zhǔn)周期脈沖氣流,這一氣流激勵聲道就產(chǎn)生濁音,又稱有聲語音,它攜帶著語音中的大部分能量。這種聲帶振動的頻率稱為基頻,相應(yīng)的周期就稱為基音周期(Pitch),它由聲帶逐漸開啟到面積最大(約占基音周期的50%)、逐漸關(guān)閉到完全閉合(約占基音周期的35%)、完全閉合(約占基音周期的15%)三部分組成。
基音延時是在一定限制的基礎(chǔ)上,使殘差信號的自相關(guān)函數(shù)最大的延時。對每幀的基音延時的計算通過兩個估計窗分別進(jìn)行。第一個估計窗的范圍是整個當(dāng)前幀信號,第二個估計窗的范圍是當(dāng)前幀的后一半和lookahead(預(yù)取)部分。在經(jīng)過這兩個估計窗(預(yù)測窗)分別得到一個最佳延時參數(shù)后,再根據(jù)一定的邏輯判斷,在兩個最佳延時參數(shù)中選取一個作為當(dāng)前幀的延時參數(shù),即基音周期。
在相關(guān)技術(shù)的調(diào)整語音數(shù)據(jù)的方法中,研究比較多的是同步疊加算法(Synchronization overlap-and-add,簡稱為SOLA),該算法的原理是:將原始信號按幀間距Sa,幀長N進(jìn)行分幀,再以幀間距Ss進(jìn)行合成,Sa和Ss的比值隨之決定了語音的拉伸/壓縮比例。后來又提出了基音同步疊加算法(Pitch Synchronization overlap-and-add,簡稱為PSOLA),該算法的主要原理是:首先估計基音周期;接著對輸入波形進(jìn)行基音標(biāo)記,將原始語音信號與一系列基音同步的窗函數(shù)相乘,得到一系列重疊的分析短時信號;然后將分析短時信號按固定比例進(jìn)行如基頻、時長和幅度調(diào)整,得到相應(yīng)的與目標(biāo)基音曲線同步的一系列短時合成信號序列;最后將合成的短時信號序列與目標(biāo)基音周期同步排列,重疊累加得到合成的語音波形。
相關(guān)技術(shù)中,在語音數(shù)據(jù)的時間尺度調(diào)整算法中,存在以下缺點(diǎn):每幀拉伸/壓縮比例相同,不能實(shí)時改變等,針對相關(guān)技術(shù)中的上述缺陷,目前尚沒有有效的解決方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種語音數(shù)據(jù)的調(diào)整方法及裝置,以至少解決相關(guān)技術(shù)中每幀拉伸/壓縮比例相同,不能實(shí)時改變,且拉伸/壓縮比例受限,不能從整體上把控的技術(shù)問題。
根據(jù)本發(fā)明的一個方面,提供了一種語音數(shù)據(jù)的調(diào)整方法,包括:獲取待處理的語音數(shù)據(jù)中指定幀的參數(shù)信息,以及所述指定幀的第一目標(biāo)拉伸或壓縮長度,其中,所述指定幀的參數(shù)信息包括:基音周期、第一幀長度、第一修正值;計算所述第一目標(biāo)拉伸或壓縮長度和所述第一修正值的和得到第二目標(biāo)拉伸或壓縮長度;依據(jù)所述第二目標(biāo)拉伸或壓縮長度和所述基音周期計算得到所述調(diào)整參數(shù),其中,所述調(diào)整參數(shù)用于指示對所述指定幀進(jìn)行拉伸或壓縮的長度;依據(jù)所述調(diào)整參數(shù)對所述指定幀的長度進(jìn)行調(diào)整得到第二幀長度和第二修正值,并根據(jù)所述第二修正值更新執(zhí)行拉伸或壓縮操作的所述指定幀的下一幀的修正值。
進(jìn)一步地,當(dāng)所述調(diào)整參數(shù)指示對所述指定幀進(jìn)行拉伸處理時,依據(jù)所述調(diào)整參數(shù)對所述指定幀的長度進(jìn)行調(diào)整得到第二幀長度包括:根據(jù)所述第一幀長度和所述第二目標(biāo)拉伸長度對所述指定幀進(jìn)行調(diào)整得到第一子幀長度;計算所述第一子幀長度減去所述第一幀長度得到第一差值;判斷所述第一目標(biāo)拉伸長度減去所述第一差值得到的第二差值是否大于0;在判斷結(jié)果為否時,確定所述第一子幀長度為所述第二幀長度。
進(jìn)一步地,所述方法還包括:在判斷結(jié)果為是時,根據(jù)所述第一子幀長度和第三目標(biāo)拉伸長度對所述第一子幀長度對應(yīng)的幀進(jìn)行調(diào)整得到所述第二幀長度,其中,所述第三目標(biāo)拉伸長度為所述第二差值和所述基音周期的差值的絕對值。
進(jìn)一步地,所述依據(jù)所述第二目標(biāo)拉伸或壓縮長度和所述基音周期計算得到所述調(diào)整參數(shù)包括:將所述第二目標(biāo)拉伸或壓縮長度除以所述基音周期得到商值;比較所述商值和1的大小;若所述商值大于或等于1,將小于或等于所述商值的最大正整數(shù)作為所述調(diào)整基數(shù);若所述商值小于1,則將1作為所述調(diào)整基數(shù);將所述基音周期和所述調(diào)整基數(shù)的乘積設(shè)置為所述調(diào)整參數(shù)。
進(jìn)一步地,在所述將所述基音周期和所述調(diào)整基數(shù)的乘積設(shè)置為所述調(diào)整參數(shù)之后,所述方法還包括:比較所述調(diào)整參數(shù)和所述第一幀長度的大??;若所述調(diào)整參數(shù)大于所述第一幀長度,則用所述第一幀長度更新所述調(diào)整參數(shù)。
根據(jù)本發(fā)明的另一方面,提供了一種語音數(shù)據(jù)的調(diào)整裝置,包括:獲取模塊,用于獲取待處理的語音數(shù)據(jù)中指定幀的參數(shù)信息,以及所述指定幀的第一目標(biāo)拉伸或壓縮長度,其中,所述指定幀的參數(shù)信息包括:基音周期、第一幀長度、第一修正值;第一計算模塊,用于計算所述第一目標(biāo)拉伸或壓縮長度和所述第一修正值的和得到第二目標(biāo)拉伸或壓縮長度;第二計算模塊,用于依據(jù)所述第二目標(biāo)拉伸或壓縮長度和所述基音周期計算得到所述調(diào)整參數(shù),其中,所述調(diào)整參數(shù)用于指示對所述指定幀進(jìn)行拉伸或壓縮的長度;處理模塊,用于依據(jù)所述調(diào)整參數(shù)對所述指定幀的長度進(jìn)行調(diào)整得到第二幀長度和第二修正值,并根據(jù)所述第二修正值更新執(zhí)行拉伸或壓縮操作的所述指定幀的下一幀的修正值。
進(jìn)一步地,處理模塊包括:第一調(diào)整單元,用于當(dāng)所述調(diào)整參數(shù)指示對所述指定幀進(jìn)行拉伸處理時,根據(jù)所述第一幀長度和所述第二目標(biāo)拉伸長度對所述指定幀進(jìn)行調(diào)整得到第一子幀長度;第一計算單元,用于計算所述第一子幀長度減去所述第一幀長度得到第一差值;判斷單元,用于判斷所述第一目標(biāo)拉伸長度減去所述第一差值得到的第二差值是否大于0;確定單元,用于在判斷結(jié)果為否時,確定所述第一子幀長度為所述第二幀長度。
進(jìn)一步地,所述處理模塊還包括:第二調(diào)整單元,用于在判斷結(jié)果為是時,根據(jù)所述第一子幀長度和第三目標(biāo)拉伸長度對所述第一子幀長度對應(yīng)的幀進(jìn)行調(diào)整得到所述第二幀長度,其中,所述第三目標(biāo)拉伸長度為所述第二差值和所述基音周期的差值的絕對值。
進(jìn)一步地,所述第二計算模塊包括:第二計算單元,用于將所述第二目標(biāo)拉伸或壓縮長度除以所述基音周期得到商值;第一比較單元,用于比較所述商值和1的大小;第一設(shè)置單元,用于若所述商值大于或等于1,將小于或等于所述商值的最大正整數(shù)設(shè)置為所述調(diào)整基數(shù);或,用于若所述商值小于1,則將1設(shè)置為所述調(diào)整基數(shù);第二設(shè)置單元,用于將所述基音周期和所述調(diào)整基數(shù)的乘積設(shè)置為所述調(diào)整參數(shù)。
進(jìn)一步地,所述第二計算模塊還包括:第二比較單元,用于在所述將所述基音周期和所述調(diào)整基數(shù)的乘積設(shè)置為所述調(diào)整參數(shù)之后,比較所述調(diào)整參數(shù)和所述第一幀長度的大?。桓聠卧?,用于若所述調(diào)整參數(shù)大于所述第一幀長度,則用所述第一幀長度更新所述調(diào)整參數(shù)。
通過本發(fā)明,采用獲取待處理的語音數(shù)據(jù)中指定幀的參數(shù)信息,以及所述指定幀的第一目標(biāo)拉伸或壓縮長度,其中,所述指定幀的參數(shù)信息包括:基音周期、第一幀長度、第一修正值,然后計算所述第一目標(biāo)拉伸或壓縮長度和所述第一修正值的和得到第二目標(biāo)拉伸或壓縮長度,依據(jù)所述第二目標(biāo)拉伸或壓縮長度和所述基音周期計算得到所述調(diào)整參數(shù),其中,所述調(diào)整參數(shù)用于指示對所述指定幀進(jìn)行拉伸或壓縮的長度,依據(jù)所述調(diào)整參數(shù)對所述指定幀的長度進(jìn)行調(diào)整得到第二幀長度和第二修正值,并根據(jù)所述第二修正值更新執(zhí)行拉伸或壓縮操作的所述指定幀的下一幀的修正值,通過整個待處理的語音數(shù)據(jù)的每一幀進(jìn)行逐幀迭代的調(diào)整方式,上一幀的調(diào)整結(jié)果影響下一幀的調(diào)整比例,解決了相關(guān)技術(shù)中每幀拉伸/壓縮比例相同,不能實(shí)時改變,且拉伸/壓縮比例受限,不能從整體上把控的技術(shù)問題,進(jìn)而達(dá)到了通過實(shí)時改變每幀的拉伸/壓縮比例來補(bǔ)償語音數(shù)據(jù)在傳輸通信中的一些突發(fā)狀況(如,抖動、丟包、延遲)而提高整個語音質(zhì)量的技術(shù)效果,有效減小了惡劣網(wǎng)絡(luò)環(huán)境對語音質(zhì)量的影響。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本發(fā)明實(shí)施例的語音數(shù)據(jù)的調(diào)整方法的流程圖;
圖2是根據(jù)本發(fā)明實(shí)施例的語音數(shù)據(jù)的調(diào)整裝置的結(jié)構(gòu)框圖;
圖3是根據(jù)本發(fā)明實(shí)施例的語音數(shù)據(jù)的調(diào)整裝置的可選結(jié)構(gòu)框圖一;
圖4是根據(jù)本發(fā)明實(shí)施例的語音數(shù)據(jù)的調(diào)整裝置的可選結(jié)構(gòu)框圖二;
圖5是根據(jù)本發(fā)明實(shí)施例的語音數(shù)據(jù)的調(diào)整裝置的可選結(jié)構(gòu)框圖三;
圖6是根據(jù)本發(fā)明實(shí)施例的語音數(shù)據(jù)的調(diào)整裝置的可選結(jié)構(gòu)框圖四;
圖7是根據(jù)本發(fā)明可選實(shí)施例的調(diào)整語音數(shù)據(jù)的流程示意圖;
圖8是根據(jù)本發(fā)明可選實(shí)施例的拉伸操作流程圖;
圖9是根據(jù)本發(fā)明可選實(shí)施例的拉伸示意圖一;
圖10是根據(jù)本發(fā)明可選實(shí)施例的拉伸示意圖二;
圖11是根據(jù)本發(fā)明可選實(shí)施例的壓縮操作流程圖;
圖12是根據(jù)本發(fā)明可選實(shí)施例的在不同基音周期下進(jìn)行壓縮的三種示意圖。
具體實(shí)施方式
下文中將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。
在本實(shí)施例中提供了一種語音數(shù)據(jù)的調(diào)整方法,本實(shí)施例可以應(yīng)用于所有需要進(jìn)行時間尺度變化的領(lǐng)域和場景中,如在多媒體設(shè)備中,通過對多媒體數(shù)據(jù)的拉伸/壓縮來實(shí)現(xiàn)變速播放和變聲等功能,在數(shù)字通信或互聯(lián)網(wǎng)通信中,通過對語音數(shù)據(jù),特別是清音幀做合理的拉伸/壓縮,可以有效的應(yīng)付語音傳輸過程中突發(fā)的延時、抖動和丟包等狀況,從而保證語音在創(chuàng)術(shù)過程中的質(zhì)量。圖1是根據(jù)本發(fā)明實(shí)施例的語音數(shù)據(jù)的調(diào)整方法的流程圖,如圖1所示,該流程包括如下步驟:
步驟S102,獲取待處理的語音數(shù)據(jù)中指定幀的參數(shù)信息,以及指定幀的第一目標(biāo)拉伸或壓縮長度;
在本實(shí)施例中,指定幀可以為整個待處理語音數(shù)據(jù)中的任意幀,在剛開始處理語音數(shù)據(jù)時,指定幀為語音數(shù)據(jù)中按序排列的第一幀,指定幀的參數(shù)信息即表示該指定幀自身參數(shù)的信息,如,基音周期、第一幀長度、第一修正值,其中第一幀長度表示該指定幀的幀長,第一修正值表示該指定幀幀長的可計算誤差,每一幀的修正值在調(diào)整前可以默認(rèn)為0,每一幀的修正值在整個語音數(shù)據(jù)的幀間可以傳遞,第一目標(biāo)拉伸或壓縮長度表示該指定幀需要拉伸或壓縮的長度,可以預(yù)先設(shè)置或通過計算得出,在本實(shí)施例中,幀長,修正值和基音周期的單位以本領(lǐng)域使用廣泛的單位“點(diǎn)”來表示。
步驟S104,計算第一目標(biāo)拉伸或壓縮長度和第一修正值的和得到第二目標(biāo)拉伸或壓縮長度;
可選的,第二目標(biāo)拉伸或壓縮長度表示考慮到修正值后該指定幀的實(shí)際需要拉伸或壓縮的長度,如第一目標(biāo)拉伸長度為100點(diǎn),第一修正值為-20點(diǎn),則通過計算可以得出實(shí)際只需要拉伸80點(diǎn),由于每幀拉伸或壓縮的長度與指定幀的自身參數(shù)相關(guān),只能以基音周期的長度為單位進(jìn)行調(diào)整,在每一幀調(diào)整過程中,會產(chǎn)生誤差,通過將上一幀的誤差通過修正值的方式傳遞到下一幀,有效地將整個語音數(shù)據(jù)的調(diào)整誤差降到最小值。
步驟S106,依據(jù)第二目標(biāo)拉伸或壓縮長度和基音周期計算得到調(diào)整參數(shù),其中,調(diào)整參數(shù)用于指示對指定幀進(jìn)行拉伸或壓縮的長度;
指定幀的調(diào)整參數(shù)根據(jù)指定幀的調(diào)整類型,即,是進(jìn)行拉伸還是壓縮,拉伸或壓縮的長度,指定幀的第一幀長度相關(guān),在指定幀通過計算可以只用調(diào)整一次就能實(shí)現(xiàn)目標(biāo)調(diào)整時,調(diào)整參數(shù)表示本次拉伸或壓縮的長度,而當(dāng)指定幀需要拉伸多次才能實(shí)現(xiàn)目標(biāo)調(diào)整時,調(diào)整參數(shù)則表示拉伸的次數(shù),每一次需要拉伸的長度。
步驟S108,依據(jù)調(diào)整參數(shù)對指定幀的長度進(jìn)行調(diào)整得到第二幀長度和第二修正值,并根據(jù)第二修正值更新執(zhí)行拉伸或壓縮操作的指定幀的下一幀的修正值。
可選的,第二幀長度為該指定幀調(diào)整后的長度,第二修正值表示該指定幀的調(diào)整誤差,通過將上一幀的調(diào)整誤差以修正值的方式在幀間將其傳遞到下一幀,解決了相關(guān)技術(shù)中以整個語音數(shù)據(jù)為單位進(jìn)行調(diào)整時誤差較大的技術(shù)問題。
通過本發(fā)明,采用獲取待處理的語音數(shù)據(jù)中指定幀的參數(shù)信息,以及指定幀的第一目標(biāo)拉伸或壓縮長度,其中,指定幀的參數(shù)信息包括:基音周期、第一幀長度、第一修正值,然后計算第一目標(biāo)拉伸或壓縮長度和第一修正值的和得到第二目標(biāo)拉伸或壓縮長度,依據(jù)第二目標(biāo)拉伸或壓縮長度和基音周期計算得到調(diào)整參數(shù),其中,調(diào)整參數(shù)用于指示對指定幀進(jìn)行拉伸或壓縮的長度,依據(jù)調(diào)整參數(shù)對指定幀的長度進(jìn)行調(diào)整得到第二幀長度和第二修正值,并根據(jù)第二修正值更新執(zhí)行拉伸或壓縮操作的指定幀的下一幀的修正值,通過整個待處理的語音數(shù)據(jù)的每一幀進(jìn)行逐幀迭代的調(diào)整方式,上一幀的調(diào)整結(jié)果影響下一幀的調(diào)整比例,解決了相關(guān)技術(shù)中每幀拉伸/壓縮比例相同,不能實(shí)時改變,且拉伸/壓縮比例受限,不能從整體上把控的技術(shù)問題,進(jìn)而達(dá)到了通過實(shí)時改變每幀的拉伸/壓縮比例來補(bǔ)償語音數(shù)據(jù)在傳輸通信中的一些突發(fā)狀況(如,抖動、丟包、延遲)而提高整個語音質(zhì)量的技術(shù)效果,有效減小了惡劣網(wǎng)絡(luò)環(huán)境對語音質(zhì)量的影響。
在根據(jù)本實(shí)施例的可選實(shí)施方式中,當(dāng)調(diào)整參數(shù)指示對指定幀進(jìn)行拉伸處理時,依據(jù)調(diào)整參數(shù)對指定幀的長度進(jìn)行調(diào)整得到第二幀長度包括:
S11,根據(jù)第一幀長度和第二目標(biāo)拉伸長度對指定幀進(jìn)行調(diào)整得到第一子幀長度;
S12,計算第一子幀長度減去第一幀長度得到第一差值;
S13,判斷第一目標(biāo)拉伸長度減去第一差值得到的第二差值是否大于0;
S14,在判斷結(jié)果為否時,確定第一子幀長度為第二幀長度;
在本實(shí)施例中,當(dāng)通過第一幀長度和第二目標(biāo)長度對指定幀第一次調(diào)整得到第一子幀長度后,如果第一子幀的長度和目標(biāo)要拉伸到的長度的差值過大,則需要再進(jìn)行再次拉伸處理,具體通過先計算得到第一次拉伸長度,然后再判斷第一目標(biāo)拉伸長度減去第一次拉伸長度的差值,如果差值小于或等于0,如果第一次拉伸長度達(dá)到了或超過了第一目標(biāo)拉伸長度,則將第一次拉伸的結(jié)果作為該指定幀的拉伸結(jié)果,并繼續(xù)調(diào)整下一幀。
在根據(jù)本實(shí)施例的可選實(shí)施方式中,還存在另外一種情況,在判斷第一目標(biāo)拉伸長度減去第一差值得到的第二差值大于0時,根據(jù)第一子幀長度和第三目標(biāo)拉伸長度對第一子幀長度對應(yīng)的幀進(jìn)行調(diào)整得到第二幀長度,其中,第三目標(biāo)拉伸長度為第二差值和基音周期的差值的絕對值。在本實(shí)施例中,通過第一次拉伸沒有達(dá)到指定幀的拉伸要求,沒有得到第二幀長度的幀,需要繼續(xù)拉伸,但是,此次拉伸的目標(biāo)長度會在第一次拉伸的基礎(chǔ)上較少,具體為第二差值和基音周期的差值的絕對值,將該絕對值作為第三目標(biāo)拉伸長度,進(jìn)行第二次拉伸,得到該指定幀最終的第二幀長度。
在根據(jù)本實(shí)施例的可選實(shí)施方式中,依據(jù)第二目標(biāo)拉伸或壓縮長度和基音周期計算得到調(diào)整參數(shù)具體可通過以下算法實(shí)現(xiàn),包括:
S21,將第二目標(biāo)拉伸或壓縮長度除以基音周期得到商值;
S22,比較商值和1的大??;
S23,若商值大于或等于1,將小于或等于商值的最大正整數(shù)作為調(diào)整基數(shù);若商值小于1,則將1作為調(diào)整基數(shù);
S24,將基音周期和調(diào)整基數(shù)的乘積設(shè)置為調(diào)整參數(shù)。
在本實(shí)施例中,以第二目標(biāo)拉伸長度為160點(diǎn),進(jìn)行舉例說明,如果基音周期為50點(diǎn),則通過計算得到商值為3.2,大于或等于1,則采用第一套算法,先得到小于或等于3.2的最大正整數(shù)3,將該最大正整數(shù)和基音周期相乘得到調(diào)整參數(shù)150;如果基音周期為200點(diǎn),則通過計算得到商值為0.8,小于1,則采用另外一套算法,直接將1和基音周期相乘得到調(diào)整參數(shù)200。
在根據(jù)本實(shí)施例的可選實(shí)施方式中,在步驟S106將基音周期和調(diào)整基數(shù)的乘積設(shè)置為調(diào)整參數(shù)之后,還可以包括:
S31,比較調(diào)整參數(shù)和第一幀長度的大小;
S32,若調(diào)整參數(shù)大于第一幀長度,則用第一幀長度更新調(diào)整參數(shù)。
在本實(shí)施例中,可能會因?yàn)檎{(diào)整參數(shù)過大而導(dǎo)致無法對指定幀進(jìn)行調(diào)整,或者調(diào)整效果不好的問題,此時就需要調(diào)節(jié)調(diào)整參數(shù),具體可根據(jù)當(dāng)前指定幀的第一幀長度來調(diào)節(jié),如調(diào) 整參數(shù)為150點(diǎn),第一幀長度為120點(diǎn),通比較發(fā)現(xiàn)調(diào)整參數(shù)的長度大于第一幀的長度,則將120更新為調(diào)整參數(shù)。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實(shí)施例的方法可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)(如ROM或RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機(jī),計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例的方法。
在本實(shí)施例中還提供了一種語音數(shù)據(jù)的調(diào)整裝置,該裝置可設(shè)置在可以處理或傳輸語音數(shù)據(jù)的設(shè)備中,該裝置用于實(shí)現(xiàn)上述實(shí)施例及優(yōu)選實(shí)施方式,已經(jīng)進(jìn)行過說明的不再贅述。如以下所使用的,術(shù)語“模塊”可以實(shí)現(xiàn)預(yù)定功能的軟件和或或硬件的組合。盡管以下實(shí)施例所描述的裝置較佳地以軟件來實(shí)現(xiàn),但是硬件,或者軟件和硬件的組合的實(shí)現(xiàn)也是可能并被構(gòu)想的。
圖2是根據(jù)本發(fā)明實(shí)施例的語音數(shù)據(jù)的調(diào)整裝置的結(jié)構(gòu)框圖,如圖2所示,該裝置包括:獲取模塊20、第一計算模塊22、第二計算模塊24、處理模塊26,其中,
獲取模塊20,用于獲取待處理的語音數(shù)據(jù)中指定幀的參數(shù)信息,以及指定幀的第一目標(biāo)拉伸或壓縮長度,其中,指定幀的參數(shù)信息包括:基音周期、第一幀長度、第一修正值;
在本實(shí)施例中,指定幀可以為整個待處理語音數(shù)據(jù)中的任意幀,在剛開始處理語音數(shù)據(jù)時,指定幀為語音數(shù)據(jù)中按序排列的第一幀,指定幀的參數(shù)信息即表示該指定幀自身參數(shù)的信息,如,基音周期、第一幀長度、第一修正值,其中第一幀長度表示該指定幀的幀長,第一修正值表示該指定幀幀長的可計算誤差,每一幀的修正值在調(diào)整前可以默認(rèn)為0,每一幀的修正值在整個語音數(shù)據(jù)的幀間可以傳遞,第一目標(biāo)拉伸或壓縮長度表示該指定幀需要拉伸或壓縮的長度,可以預(yù)先設(shè)置或通過計算得出,在本實(shí)施例中,幀長,修正值和基音周期的單位以本領(lǐng)域使用廣泛的單位“點(diǎn)”來表示。
第一計算模塊22,與獲取模塊20耦合連接,用于計算第一目標(biāo)拉伸或壓縮長度和第一修正值的和得到第二目標(biāo)拉伸或壓縮長度;
可選的,第二目標(biāo)拉伸或壓縮長度表示考慮到修正值后該指定幀的實(shí)際需要拉伸或壓縮的長度,如第一目標(biāo)拉伸長度為100點(diǎn),第一修正值為-20點(diǎn),則通過計算可以得出實(shí)際只需要拉伸80點(diǎn),由于每幀拉伸或壓縮的長度與指定幀的自身參數(shù)相關(guān),只能以基音周期的長度為單位進(jìn)行調(diào)整,在每一幀調(diào)整過程中,會產(chǎn)生誤差,通過將上一幀的誤差通過修正值的方式傳遞到下一幀,有效地將整個語音數(shù)據(jù)的調(diào)整誤差降到最小值。
第二計算模塊24,與第一計算模塊22耦合連接,用于依據(jù)第二目標(biāo)拉伸或壓縮長度和基音周期計算得到調(diào)整參數(shù),其中,調(diào)整參數(shù)用于指示對指定幀進(jìn)行拉伸或壓縮的長度;
指定幀的調(diào)整參數(shù)根據(jù)指定幀的調(diào)整類型,即,是進(jìn)行拉伸還是壓縮,拉伸或壓縮的長 度,指定幀的第一幀長度相關(guān),在指定幀通過計算可以只用調(diào)整一次就能實(shí)現(xiàn)目標(biāo)調(diào)整時,調(diào)整參數(shù)表示本次拉伸或壓縮的長度,而當(dāng)指定幀需要拉伸多次才能實(shí)現(xiàn)目標(biāo)調(diào)整時,調(diào)整參數(shù)則表示拉伸的次數(shù),每一次需要拉伸的長度。
處理模塊26,與第二計算模塊24耦合連接,用于依據(jù)調(diào)整參數(shù)對指定幀的長度進(jìn)行調(diào)整得到第二幀長度和第二修正值,并根據(jù)第二修正值更新執(zhí)行拉伸或壓縮操作的指定幀的下一幀的修正值。
可選的,第二幀長度為該指定幀調(diào)整后的長度,第二修正值表示該指定幀的調(diào)整誤差,通過將上一幀的調(diào)整誤差以修正值的方式在幀間將其傳遞到下一幀,解決了相關(guān)技術(shù)中以整個語音數(shù)據(jù)為單位進(jìn)行調(diào)整時誤差較大的技術(shù)問題。
圖3是根據(jù)本發(fā)明實(shí)施例的語音數(shù)據(jù)的調(diào)整裝置的可選結(jié)構(gòu)框圖一,如圖3所示,該裝置除包括圖2所示的所有模塊外,處理模塊26還包括:第一調(diào)整單元30、第一計算單元32、判斷單元34、確定單元36,其中,
第一調(diào)整單元30,用于當(dāng)調(diào)整參數(shù)指示對指定幀進(jìn)行拉伸處理時,根據(jù)第一幀長度和第二目標(biāo)拉伸長度對指定幀進(jìn)行調(diào)整得到第一子幀長度;
第一計算單元32,與第一調(diào)整單元30耦合連接,用于計算第一子幀長度減去第一幀長度得到第一差值;
判斷單元34,與第一計算單元32耦合連接,用于判斷第一目標(biāo)拉伸長度減去第一差值得到的第二差值是否大于0;
確定單元36,與判斷單元34耦合連接,用于在判斷結(jié)果為否時,確定第一子幀長度為第二幀長度;
在本實(shí)施例中,當(dāng)通過第一幀長度和第二目標(biāo)長度對指定幀第一次調(diào)整得到第一子幀長度后,如果第一子幀的長度和目標(biāo)要拉伸到的長度的差值過大,則需要再進(jìn)行再次拉伸處理,具體通過先計算得到第一次拉伸長度,然后再判斷第一目標(biāo)拉伸長度減去第一次拉伸長度的差值,如果差值小于或等于0,如果第一次拉伸長度達(dá)到了或超過了第一目標(biāo)拉伸長度,則將第一次拉伸的結(jié)果作為該指定幀的拉伸結(jié)果,并繼續(xù)調(diào)整下一幀。
圖4是根據(jù)本發(fā)明實(shí)施例的語音數(shù)據(jù)的調(diào)整裝置的可選結(jié)構(gòu)框圖二,如圖4所示,該裝置除包括圖3所示的所有模塊外,處理模塊26還包括:第二調(diào)整單元40,與判斷單元34偶偶和連接,用于在判斷結(jié)果為是時,根據(jù)第一子幀長度和第三目標(biāo)拉伸長度對第一子幀長度對應(yīng)的幀進(jìn)行調(diào)整得到第二幀長度,其中,第三目標(biāo)拉伸長度為第二差值和基音周期的差值的絕對值。
在本實(shí)施例中,通過第一次拉伸沒有達(dá)到指定幀的拉伸要求,沒有得到第二幀長度的幀,需要繼續(xù)拉伸,但是,此次拉伸的目標(biāo)長度會在第一次拉伸的基礎(chǔ)上較少,具體為第二差值和基音周期的差值的絕對值,將該絕對值作為第三目標(biāo)拉伸長度,進(jìn)行第二次拉伸,得到該 指定幀最終的第二幀長度。
圖5是根據(jù)本發(fā)明實(shí)施例的語音數(shù)據(jù)的調(diào)整裝置的可選結(jié)構(gòu)框圖三,如圖5所示,該裝置除包括圖2所示的所有模塊外,第二計算模塊24包括:第二計算單元50,用于將第二目標(biāo)拉伸或壓縮長度除以基音周期得到商值;第一比較單元52,用于比較商值和1的大小;第一設(shè)置單元54,用于若商值大于或等于1,將小于或等于商值的最大正整數(shù)設(shè)置為調(diào)整基數(shù);或,用于若商值小于1,則將1設(shè)置為調(diào)整基數(shù);第二設(shè)置單元56,用于將基音周期和調(diào)整基數(shù)的乘積設(shè)置為調(diào)整參數(shù)。
在本實(shí)施例中,以第二目標(biāo)拉伸長度為160點(diǎn),進(jìn)行舉例說明,如果基音周期為50點(diǎn),則通過計算得到商值為3.2,大于或等于1,則采用第一套算法,先得到小于或等于3.2的最大正整數(shù)3,將該最大正整數(shù)和基音周期相乘得到調(diào)整參數(shù)150;如果基音周期為200點(diǎn),則通過計算得到商值為0.8,小于1,則采用另外一套算法,直接將1和基音周期相乘得到調(diào)整參數(shù)200。
圖6是根據(jù)本發(fā)明實(shí)施例的語音數(shù)據(jù)的調(diào)整裝置的可選結(jié)構(gòu)框圖四,如圖6所示,該裝置除包括圖5所示的所有模塊外,第二計算模塊還包括:第二比較單元60,用于在第二設(shè)置單元56將基音周期和調(diào)整基數(shù)的乘積設(shè)置為調(diào)整參數(shù)之后,比較調(diào)整參數(shù)和第一幀長度的大??;更新單元62,用于若調(diào)整參數(shù)大于第一幀長度,則用第一幀長度更新調(diào)整參數(shù)。
在本實(shí)施例中,可能會因?yàn)檎{(diào)整參數(shù)過大而導(dǎo)致無法對指定幀進(jìn)行調(diào)整,或者調(diào)整效果不好的問題,此時就需要調(diào)節(jié)調(diào)整參數(shù),具體可根據(jù)當(dāng)前指定幀的第一幀長度來調(diào)節(jié),如調(diào)整參數(shù)為150點(diǎn),第一幀長度為120點(diǎn),通比較發(fā)現(xiàn)調(diào)整參數(shù)的長度大于第一幀的長度,則將120更新為調(diào)整參數(shù)。
下面結(jié)合根據(jù)本發(fā)明的可選實(shí)施例,結(jié)合不同的調(diào)整情況,對本方案進(jìn)行詳細(xì)說明。
圖7是根據(jù)本發(fā)明可選實(shí)施例的調(diào)整語音數(shù)據(jù)的流程示意圖,如圖7所示,開始流程后,輸入待處理的語音數(shù)據(jù)到緩存中,判斷是否需要調(diào)整語音數(shù)據(jù),如果否,則結(jié)果,如果是,則計算獲得基音周期和拉伸/壓縮的參數(shù),并進(jìn)行拉伸/壓縮,最后輸出調(diào)整后的語音數(shù)據(jù)。
為了便于理解,下面可選的拉伸示例和壓縮示例中,使用業(yè)界廣泛使用的專有名詞,其中,
PitchTime:基音周期;
FrameTag:目標(biāo)點(diǎn)數(shù),即需要拉伸/壓縮的點(diǎn)數(shù);(相當(dāng)于第一目標(biāo)拉伸/壓縮長度)
TagRES:目標(biāo)點(diǎn)數(shù)修正值,在幀間傳遞信息;(相當(dāng)于修正值)
OptLength:本次拉伸/壓縮的點(diǎn)數(shù);(相當(dāng)于調(diào)整參數(shù))
DataLength:當(dāng)前數(shù)據(jù)長度;(相當(dāng)于第一幀長度)
OptRatio:拉伸/壓縮比例。(可通過比例計算得到FrameTag)
圖8是根據(jù)本發(fā)明可選實(shí)施例的拉伸操作流程圖,如圖8所示,包括以下步驟:
S71、計算得到信號的基音周期PitchTime;
S72、根據(jù)需要拉伸比例OptRatio及幀間信息(如拉伸點(diǎn)數(shù)修正值TagRES)計算本幀目標(biāo)拉伸點(diǎn)數(shù)FrameTag,此時當(dāng)前數(shù)據(jù)長度DataLength為本幀的數(shù)據(jù)長度FrameLength;
S73、根據(jù)PitchTime,和FrameTag計算得到本次拉伸點(diǎn)數(shù)OptLength;
S74、如果計算的到OptLength過大(大于等于原始數(shù)據(jù)長度)或過小(小于等于0),那么需要用基音周期PitchTime對OptLength修正;
S75、根據(jù)DataLength和OptLength對數(shù)據(jù)進(jìn)行幀擴(kuò)展;
S76、用DataLength加上OptLength更新DataLength。用FrameTag減去OptLength來得到新的FrameTag。如果FrameTag小于等于0,則拉伸結(jié)束,否則循環(huán)上述操作S73~S76直到拉伸結(jié)束;
S77、用本幀的拉伸結(jié)果與預(yù)期結(jié)果的偏差值來修正幀間信息如TagRES。
拉伸實(shí)例1:
圖9是根據(jù)本發(fā)明可選實(shí)施例的拉伸示意圖一,如圖9所示,說明了基音周期為100、幀長為160的信號拉伸出160個點(diǎn)信號的情況。
根據(jù)輸入語音獲得語音相關(guān)信息:TagRES=0,PitchTime=100,F(xiàn)rameTag=160,DataLength=160。
首先依據(jù)TagRES更新FrameTag=160,再根據(jù)PitchTime和FrameTag計算得到OptLength=100。
接著對數(shù)據(jù)進(jìn)行第一次幀擴(kuò)展。因?yàn)榇藭rOptLength大于整個序列長度DataLength的一半,所以取兩段分別位于源數(shù)據(jù)首部和尾部的數(shù)據(jù)長度為60個點(diǎn)的做平滑。即首先將原始數(shù)據(jù)s的第1個到第100個點(diǎn)復(fù)制到拉伸后語音s′的第1個到第100個點(diǎn)。然后將原始數(shù)據(jù)s的第1個到第60個點(diǎn)和第101個點(diǎn)到第160個點(diǎn)做平滑后得放到拉伸后語音s′的第101個到第160個點(diǎn)。然后將原始數(shù)據(jù)s的第61個到第160個點(diǎn)直接復(fù)制到拉伸后語音s′的第161個到第260個點(diǎn)。
第一次幀擴(kuò)展結(jié)束后,DataLength=260。FrameTag=60。
因?yàn)镕rameTag大于0,沒有達(dá)到拉伸要求,所以需要進(jìn)行第二次幀擴(kuò)展。
由FrameTag和PitchTime得到OptLength=100。
然后對數(shù)據(jù)進(jìn)行第二次幀擴(kuò)展。此時OptLength小于整個序列長度DataLength的一半,故將源數(shù)據(jù)首部開始的連續(xù)兩段長度為OptLength的數(shù)據(jù)做平滑。即首先先將原始數(shù)據(jù)s′的第1個到第100個點(diǎn)復(fù)制到拉伸后語音s″的第1個到第100個點(diǎn)。然后將語音數(shù)據(jù)s′的第1個到第100個點(diǎn)和第101個點(diǎn)到第200個點(diǎn)做平滑后得放到拉伸后語音s″的第101個到第200個點(diǎn)。最后將原始數(shù)據(jù)s′的第101個到第260個點(diǎn)直接拷貝到拉伸后語音s″的第200點(diǎn)之后。
第二次幀擴(kuò)展結(jié)束后,DataLength=360。FrameTag=-40。
因?yàn)镕rameTag小于等于0,所以不需要繼續(xù)進(jìn)行幀擴(kuò)展了。
最后更新TagRES=-40。
可以發(fā)現(xiàn)最終拉伸后序列的長度是360,不是我們的想要的320,多拉伸了40個樣點(diǎn),但是TagRES已經(jīng)記錄下來。
拉伸實(shí)例2:
圖10是根據(jù)本發(fā)明可選實(shí)施例的拉伸示意圖二,如圖10所示,該實(shí)例中,表示了基音周期為40、幀長為160的信號拉伸出150個點(diǎn)信號的情況。
根據(jù)輸入語音獲得語音相關(guān)信息:TagRES=-40,PitchTime=40,F(xiàn)rameTag=150,DataLength=160。
首先依據(jù)TagRES更新FrameTag=110,再根據(jù)PitchTime和FrameTag計算得到OptLength=80。
接著對數(shù)據(jù)進(jìn)行第一次幀擴(kuò)展,因?yàn)榇藭rOptLength等于整個序列長度DataLength的一半,故將源數(shù)據(jù)首部開始的連續(xù)兩段長度為OptLength的數(shù)據(jù)做平滑。即首先先將原始數(shù)據(jù)s′的第1個到第80個點(diǎn)復(fù)制到拉伸后語音s″的第1個到第80個點(diǎn)。然后將語音數(shù)據(jù)s′的第1個到第80個點(diǎn)和第81個點(diǎn)到第160個點(diǎn)做平滑后得放到拉伸后語音s″的第81個到第160個點(diǎn)。最后將原始數(shù)據(jù)s′的第81個到第160個點(diǎn)直接拷貝到拉伸后語音s″的第160點(diǎn)之后。
第一次幀擴(kuò)展結(jié)束后,DataLength=240。FrameTag=30。
因?yàn)镕rameTag大于0,沒有達(dá)到拉伸要求,所以需要進(jìn)行第二次幀擴(kuò)展。
由FrameTag和PitchTime得到OptLength=0,因?yàn)镺ptLength至少等于PitchTime,所以O(shè)ptLength=40。
然后對數(shù)據(jù)進(jìn)行第二次幀擴(kuò)展。此時OptLength小于整個序列長度DataLength的一半,故將源數(shù)據(jù)首部開始的連續(xù)兩段長度為OptLength的數(shù)據(jù)做平滑。即首先先將原始數(shù)據(jù)s′的第1個到第40個點(diǎn)復(fù)制到拉伸后語音s″的第1個到第40個點(diǎn)。然后將語音數(shù)據(jù)s′的第1個到第40個點(diǎn)和第41個點(diǎn)到第80個點(diǎn)做平滑后得放到拉伸后語音s″的第41個到第80個點(diǎn)。最后將原始數(shù)據(jù)s′的第41個到第240個點(diǎn)直接拷貝到拉伸后語音s″的第80點(diǎn)之后。
第二次幀擴(kuò)展結(jié)束后,DataLength=280。FrameTag=-10。
因?yàn)镕rameTag小于等于0,所以不需要繼續(xù)進(jìn)行幀擴(kuò)展了。
最后更新TagRES=-10。
本實(shí)例是緊跟拉伸實(shí)例1后一幀的信號拉伸情況。在拉伸實(shí)例1中,拉伸前序列的長度為160,需要拉伸160個點(diǎn),實(shí)際拉伸后序列長度為360,在本實(shí)例中拉伸前序列長度為160,
需要拉伸出150個點(diǎn),但實(shí)際拉伸后序列長度為280。
兩次合并計算后,累計需要拉伸310個點(diǎn),而實(shí)際拉伸后為360+280=640點(diǎn),實(shí)際拉伸了320點(diǎn),從整體上把控了拉伸/壓縮比例。
圖11是根據(jù)本發(fā)明可選實(shí)施例的壓縮操作流程圖。如圖11所示,方法包括以下步驟:
S81、計算得到信號的基音周期PitchTime;
S82、根據(jù)需要壓縮比例OptRatio及幀間信息(如壓縮點(diǎn)數(shù)修正值TagRES)計算本幀目標(biāo)壓縮點(diǎn)數(shù)FrameTag,此時當(dāng)前數(shù)據(jù)長度DataLength為本幀的的數(shù)據(jù)長度FrameLength;
S83、根據(jù)PitchTime,和FrameTag計算得到本次壓縮點(diǎn)數(shù)OptLength。
S84、如果計算的到OptLength過大(如大于等于原始數(shù)據(jù)長度)或過小(如小于0),那么需要用PitchTime對OptLength修正。
S85、根據(jù)DataLength和OptLength對數(shù)據(jù)進(jìn)行幀壓縮;
S86、用本幀壓縮結(jié)果與預(yù)期結(jié)果的偏差值來修正幀間信息如TagRES。
壓縮實(shí)例1:
圖12是根據(jù)本發(fā)明可選實(shí)施例的在不同基音周期下進(jìn)行壓縮的三種示意圖,如題12所示,分別表示基音周期為40、60、100時的三種壓縮示意圖,其中,in表示原始數(shù)據(jù),即處理前的數(shù)據(jù),out表示壓縮后的數(shù)據(jù)。
根據(jù)輸入語音獲得語音相關(guān)信息:TagRES=0,F(xiàn)rameTag=80,DataLength=160。
可選的,基音周期PitchTime為40時,可以計算得到OptLength=80。
接著對數(shù)據(jù)進(jìn)行幀壓縮。因?yàn)镺ptLength剛好等于整個序列長度DataLength的一半,所以將源數(shù)據(jù)前一半和后一半做平滑即可。即原始數(shù)據(jù)in1的第1個到第80個點(diǎn)和第81個點(diǎn)到第160個點(diǎn)做平滑后得到壓縮后的語音out1。
幀壓縮后,DataLength=80,TagRES=FrameTag-OptLength=0。
可選的,基音周期PitchTime為60時,可以計算得到OptLength=60。
接著對數(shù)據(jù)進(jìn)行幀壓縮。此時OptLength小于整個原始序列長度DataLength的一半,故將源數(shù)據(jù)首部開始的連續(xù)兩段長度為OptLength的數(shù)據(jù)做平滑,然后將剩余的數(shù)據(jù)直接拷貝到平滑后的數(shù)據(jù)后面即可。即原始數(shù)據(jù)in2的第1個到第60個點(diǎn)和第61個點(diǎn)到第120個點(diǎn)做平滑后得放到壓縮后的語音out2的第1個到第60個點(diǎn)。然后將原始數(shù)據(jù)in2的第121個到第160個點(diǎn)直接拷貝到語音out2的第60點(diǎn)之后。
幀壓縮后,DataLength=100,TagRES=FrameTag-OptLength=20。
可選的,基音周期PitchTime為100時,可以計算得到OptLength=100。
接著對數(shù)據(jù)進(jìn)行幀壓縮。因?yàn)榇藭rOptLength大于整個原始序列長度DataLength的一半,所以取兩段分別位于源數(shù)據(jù)首部和尾部的數(shù)據(jù)長度為60個點(diǎn)的做平滑即可。即原始數(shù)據(jù)in3的第1個到第60個點(diǎn)和第101個點(diǎn)到第160個點(diǎn)做平滑后得放到壓縮后的語音out3的第1個到第60個點(diǎn)。然后將原始數(shù)據(jù)in3的第61個到第100個點(diǎn)直接舍棄。
幀壓縮后,DataLength=60,TagRES=FrameTag-OptLength=-20。
需要說明的是,上述各個模塊是可以通過軟件或硬件來實(shí)現(xiàn)的,對于后者,可以通過以下方式實(shí)現(xiàn),但不限于此:上述模塊均位于同一處理器中;或者,上述模塊分別位于多個處理器中。
本發(fā)明的實(shí)施例還提供了一種存儲介質(zhì)??蛇x地,在本實(shí)施例中,上述存儲介質(zhì)可以被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:
S1,獲取待處理的語音數(shù)據(jù)中指定幀的參數(shù)信息,以及指定幀的第一目標(biāo)拉伸或壓縮長度;
S2,計算第一目標(biāo)拉伸或壓縮長度和第一修正值的和得到第二目標(biāo)拉伸或壓縮長度;
S3,依據(jù)第二目標(biāo)拉伸或壓縮長度和基音周期計算得到調(diào)整參數(shù),其中,調(diào)整參數(shù)用于指示對指定幀進(jìn)行拉伸或壓縮的長度;
S4,依據(jù)調(diào)整參數(shù)對指定幀的長度進(jìn)行調(diào)整得到第二幀長度和第二修正值,并根據(jù)第二修正值更新執(zhí)行拉伸或壓縮操作的指定幀的下一幀的修正值。
顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實(shí)現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
以上僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。