本發(fā)明涉及語音通信領域,特別涉及一種側(cè)音消除方法及裝置。
背景技術:
在語音通信領域,尤其是電話通話中,側(cè)音是影響通話質(zhì)量的一個很重要的因素。
在電話機中,原始話音通過送話器把聲音信號轉(zhuǎn)化為電信號,經(jīng)通信線路一路傳送到對方,一路回傳到本方受話器,使講話人能聽到自己的聲音,這就是側(cè)音。側(cè)音的存在有不利因素,側(cè)音較大時能引起嘯叫振鳴,影響通話的進行。
在實際通話過程中,用戶實際聽到的聲音是本方側(cè)音與對方語音的混合聲音,消側(cè)音就是從接收到的聲音中消除本方的側(cè)音。
技術實現(xiàn)要素:
本發(fā)明解決的一個技術問題是,如何提供更加優(yōu)化的側(cè)音消除方法。
根據(jù)本發(fā)明實施例的一個方面,提供了一種側(cè)音消除方法,其特征在于,包括:確定原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置;調(diào)整原始發(fā)送語音的波形,使調(diào)整后的發(fā)送語音的波形與側(cè)音的波形具有相近的振幅;確定調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系;根據(jù)起始位置以及相位關系,利用接收語音波形及調(diào)整后的發(fā)送語音波形進行側(cè)音消除。
在一些實施例中,確定原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置包括:通過相同的采樣頻率,分別對原始發(fā)送語音波形及接收語音波形進行采樣,獲得原始發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組;移動原始發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組之間的相對元素位置,分別計算原始發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組在元素位置重疊部分的自相關系數(shù);根據(jù)自相關系數(shù)最大時所對應的元素位置移動情況,確定原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置。
在一些實施例中,確定原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置包括:對特定的發(fā)送消息進行調(diào)制生成原始發(fā)送語音波形;對接收語音波形進行解調(diào)獲得接收消息;通過特定的發(fā)送消息在接收消息中出現(xiàn)的位置,確定原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置。
在一些實施例中,調(diào)整原始發(fā)送語音的波形,使調(diào)整后的發(fā)送語音的波形與側(cè)音的波形具有相近的振幅包括:通過相同的采樣頻率,分別對原始發(fā)送語音波形及接收語音波形進行采樣,獲得原始發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組;計算接收語音波形的采樣數(shù)組的前n個極大值的平均值與原始發(fā)送語音波形的采樣數(shù)組的前n個極大值的平均值的比值,n為正整數(shù);將原始發(fā)送語音波形的采樣數(shù)組與比值相乘,以調(diào)整原始發(fā)送語音的波形。
在一些實施例中,確定調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系包括:通過相同的采樣頻率,分別對調(diào)整后的發(fā)送語音波形及接收語音波形進行采樣,獲得調(diào)整后的發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組;根據(jù)n個預設值,分別將調(diào)整后的發(fā)送語音波形的采樣數(shù)組后移n個預設值對應的元素位置,然后分別與接收語音波形的采樣數(shù)組相加、相減得到2n個數(shù)組,n為正整數(shù);在2n個數(shù)組的各個數(shù)組中確定各自的最大值,并在各個數(shù)組的最大值中確定最小值;如果最小值是和值數(shù)組中的元素,則認為調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系為反向。
在一些實施例中,確定調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系還包括:如果最小值是差值數(shù)組中的元素,則認為調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系為同向。
在一些實施例中,根據(jù)起始位置以及相位關系,利用接收語音波形及調(diào)整后的發(fā)送語音波形進行側(cè)音消除包括:將調(diào)整后的發(fā)送語音波形的采樣數(shù)組后移最小值對應的預設值所進一步對應的元素位置;若調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系為反向,則從發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置開始,將接收語音波形的采樣數(shù)組與后移的調(diào)整后的發(fā)送語音波形的采樣數(shù)組相加;對相加后得到的數(shù)組進行數(shù)模轉(zhuǎn)換,以獲得消除側(cè)音的語音波形。
在一些實施例中,根據(jù)起始位置以及相位關系,利用接收語音波形及調(diào)整后的發(fā)送語音波形進行側(cè)音消除包括:將調(diào)整后的發(fā)送語音波形的采樣數(shù)組后移最小值對應的預設值所進一步對應的元素位置;若調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系為同向,則從發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置開始,將接收語音波形的采樣數(shù)組與后移的調(diào)整后的發(fā)送語音波形的采樣數(shù)組相減;對相減后得到的數(shù)組進行數(shù)模轉(zhuǎn)換,以獲得消除側(cè)音的語音波形。
根據(jù)本發(fā)明實施例的另一個方面,提供了一種側(cè)音消除裝置,包括:起始位置確定模塊,用于確定原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置;振幅調(diào)整模塊,用于調(diào)整原始發(fā)送語音的波形,使調(diào)整后的發(fā)送語音的波形與側(cè)音的波形具有相近的振幅;相位關系確定模塊,用于確定調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系;側(cè)音消除模塊,用于根據(jù)起始位置以及相位關系,利用接收語音波形及調(diào)整后的發(fā)送語音波形進行側(cè)音消除。
在一些實施例中,起始位置確定模塊用于:通過相同的采樣頻率,分別對原始發(fā)送語音波形及接收語音波形進行采樣,獲得原始發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組;移動原始發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組之間的相對元素位置,分別計算原始發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組在元素位置重疊部分的自相關系數(shù);根據(jù)自相關系數(shù)最大時所對應的元素位置移動情況,確定原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置。
在一些實施例中,起始位置確定模塊用于:對特定的發(fā)送消息進行調(diào)制生成原始發(fā)送語音波形;對接收語音波形進行解調(diào)獲得接收消息;通過特定的發(fā)送消息在接收消息中出現(xiàn)的位置,確定原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置。
在一些實施例中,振幅調(diào)整模塊用于:通過相同的采樣頻率,分別對原始發(fā)送語音波形及接收語音波形進行采樣,獲得原始發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組;計算接收語音波形的采樣數(shù)組的前n個極大值的平均值與原始發(fā)送語音波形的采樣數(shù)組的前n個極大值的平均值的比值,n為正整數(shù);將原始發(fā)送語音波形的采樣數(shù)組與比值相乘,以調(diào)整原始發(fā)送語音的波形。
在一些實施例中,相位關系確定模塊用于:通過相同的采樣頻率,分別對調(diào)整后的發(fā)送語音波形及接收語音波形進行采樣,獲得調(diào)整后的發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組;根據(jù)n個預設值,分別將調(diào)整后的發(fā)送語音波形的采樣數(shù)組后移n個預設值對應的元素位置,然后分別與接收語音波形的采樣數(shù)組相加、相減得到2n個數(shù)組,n為正整數(shù);在2n個數(shù)組的各個數(shù)組中確定各自的最大值,并在各個數(shù)組的最大值中確定最小值;如果最小值是和值數(shù)組中的元素,則認為調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系為反向。
在一些實施例中,相位關系確定模塊還用于:如果最小值是差值數(shù)組中的元素,則認為調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系為同向。
在一些實施例中,側(cè)音消除模塊用于:將調(diào)整后的發(fā)送語音波形的采樣數(shù)組后移最小值對應的預設值所進一步對應的元素位置;若調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系為反向,則從發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置開始,將接收語音波形的采樣數(shù)組與后移的調(diào)整后的發(fā)送語音波形的采樣數(shù)組相加;對相加后得到的數(shù)組進行數(shù)模轉(zhuǎn)換,以獲得消除側(cè)音的語音波形。
在一些實施例中,側(cè)音消除模塊還用于:將調(diào)整后的發(fā)送語音波形的采樣數(shù)組后移最小值對應的預設值所進一步對應的元素位置;若調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系為同向,則從發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置開始,將接收語音波形的采樣數(shù)組與后移的調(diào)整后的發(fā)送語音波形的采樣數(shù)組相減;對相減后得到的數(shù)組進行數(shù)模轉(zhuǎn)換,以獲得消除側(cè)音的語音波形。
根據(jù)本發(fā)明實施例的再一個方面,提供了一種側(cè)音消除裝置,其特征在于,包括:存儲器;以及耦接至存儲器的處理器,處理器被配置為基于存儲在存儲器中的指令,執(zhí)行前述的側(cè)音消除方法。
根據(jù)本發(fā)明實施例的又一個方面,提供了一種計算機可讀存儲介質(zhì),其特征在于,計算機可讀存儲介質(zhì)存儲有計算機指令,指令被處理器執(zhí)行時實現(xiàn)前述的側(cè)音消除方法。
本發(fā)明中,首先通過波形對齊,在接收語音波形中找出與發(fā)送語音波形相對應的起始位置;然后,通過幅值調(diào)整,將發(fā)送語音波形與側(cè)音波形進行幅值一致化處理,目的是使得兩列波形更趨近,盡量減小接收語音波形與發(fā)送語音波形的數(shù)據(jù)殘差,方便后續(xù)的計算和處理;再然后,通過相位確認,確定側(cè)音波形與發(fā)送語音波形的相位關系是同相還是反相。最后,通過側(cè)音消除,將側(cè)音從接收語音中剔除。從而提供了一種更加優(yōu)化的側(cè)音消除方法及裝置。
通過以下參照附圖對本發(fā)明的示例性實施例的詳細描述,本發(fā)明的其它特征及其優(yōu)點將會變得清楚。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1示出發(fā)明一個實施例的側(cè)音消除方法的流程示意圖。
圖2示出原始發(fā)送語音波形與接收語音波形的示意圖。
圖3示出原始發(fā)送語音波形與接收語音波形的對齊示意圖。
圖4示出本發(fā)明一個實施例的幅值調(diào)整的示意圖。
圖5示出本發(fā)明一個實施例的相位確認過程中偏移值的示意圖。
圖6示出本發(fā)明側(cè)音消除裝置的一個實施例的結構示意圖。
圖7示出本發(fā)明側(cè)音消除裝置的另一個實施例的結構圖。
圖8示出本發(fā)明側(cè)音消除裝置的又一個實施例的結構圖。
具體實施方式
下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。以下對至少一個示例性實施例的描述實際上僅僅是說明性的,決不作為對本發(fā)明及其應用或使用的任何限制?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。
首先介紹在本發(fā)明實施例的描述中涉及到的幾個重要名詞的含義。
發(fā)送語音:在電話通話過程中,用戶a從話筒輸入的語音。
接收語音:在電話通話過程中,用戶a從聽筒接收到的語音;
側(cè)音:發(fā)送語音經(jīng)過通信線路傳送回用戶a的語音。
下面結合圖1介紹本發(fā)明一個實施例的側(cè)音消除方法。
圖1示出發(fā)明一個實施例的側(cè)音消除方法的流程示意圖。如圖1所示,該實施例的側(cè)音消除包括:
步驟s102,波形對齊。即,確定原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置。
由側(cè)音的產(chǎn)生原因可知,側(cè)音的產(chǎn)生在時間上必定遲于原始發(fā)送語音,為達到消除側(cè)音的目的,首先必須找到原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置,波形對齊就是在接收語音波形中找出原始發(fā)送語音波形的起始位置。
步驟s104,幅值調(diào)整。即,調(diào)整原始發(fā)送語音的波形,使調(diào)整后的發(fā)送語音的波形與側(cè)音的波形具有相近的振幅。
包含側(cè)音的接收語音的波形與原始發(fā)送語音的波形在幅值上很可能是不一致的,為保證側(cè)音消除時不引起接收語音波形發(fā)生幅值較大的變動,應盡量使調(diào)整后的發(fā)送語音的波形幅值與側(cè)音的波形幅值相一致,這即是幅值調(diào)整的主要功能。
步驟s106,相位確認。即,確定調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系。
波形對齊只是初步確定了側(cè)音在接收語音波形中的位置,由于調(diào)制算法和波形傳輸本身的特點,確定的側(cè)音位置對應的接收語音波形不一定是原始發(fā)送語音波形的起始位置,一般是原始發(fā)送語音波形偏移起始點的某個位置。我們可以根據(jù)實驗結果或?qū)嵺`經(jīng)驗,預設偏移范圍的經(jīng)驗值。在相位確認過程中,對預設的經(jīng)驗值進行驗證,獲得接收語音波形中側(cè)音起始位置在原始發(fā)送語音波形中對應的確切位置并確定側(cè)音與原始發(fā)送語音的波形的相位關系。
步驟s108,側(cè)音消除。即,根據(jù)起始位置以及相位關系,利用接收語音波形及調(diào)整后的發(fā)送語音波形進行側(cè)音消除。
確定起始位置和相位關系后,對接收語音波形從側(cè)音位置起,去除對應的原始波形,即可得到消除側(cè)音后的語音波形。
上述實施例中,首先通過波形對齊,在接收語音波形中找出與發(fā)送語音波形相對應的起始位置;然后,通過幅值調(diào)整,將發(fā)送語音波形與側(cè)音波形進行幅值一致化處理,目的是使得兩列波形更趨近,盡量減小接收語音波形與發(fā)送語音波形的數(shù)據(jù)殘差,方便后續(xù)的計算和處理;再然后,通過相位確認,確定側(cè)音波形與發(fā)送語音波形的相位關系是同相還是反相。最后,通過側(cè)音消除,將側(cè)音從接收語音中剔除。上述實施例提供了一種更加優(yōu)化的側(cè)音消除方法及裝置,能夠取得更優(yōu)良的側(cè)音消除效果,提高了語音通話的用戶體驗。
同時,上述實施例可以完全通過軟件方法來實現(xiàn)。相比于目前廣泛應用的硬件消側(cè)音技術,例如變量器消側(cè)音、電橋平衡消側(cè)音、相位抵消消側(cè)音等消側(cè)音電路,利用軟件實現(xiàn)側(cè)音消除方法具有諸多優(yōu)勢。其一,對于高頻音頻,利用軟件實現(xiàn)側(cè)音消除方法比硬件消側(cè)音電路具有更好的消側(cè)音效果。其二,無論通話電路是否存在側(cè)音,硬件消側(cè)音電路都會進行消側(cè)音處理,對于接收語音的線性損耗較高;而利用軟件實現(xiàn)側(cè)音消除方法,在線路無側(cè)音時,對接收語音損耗較小,對于接收語音的線性保持度較高。其三,利用軟件實現(xiàn)側(cè)音消除方法相對于硬件消側(cè)音電路來說,可降低功耗和成本,具有更高的靈活性。
下面介紹本發(fā)明一個實施例的波形對齊步驟。該實施例的波形對齊步驟s102包括:
首先,對特定的發(fā)送消息進行調(diào)制生成原始發(fā)送語音波形。
然后,對接收語音波形進行解調(diào)獲得接收消息。
最后,通過特定的發(fā)送消息在接收消息中出現(xiàn)的位置,確定原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置。
下面舉一個具體的應用例進行說明。
例如,在打通電話后某時刻,一方開始連續(xù)發(fā)送采用某種調(diào)制算法對一組固定數(shù)據(jù)(例如c)調(diào)制得到的波形,并同時將接收音頻進行錄音(即保存數(shù)據(jù)),錄音期間電話另一方靜音。這樣錄制的接收音頻主要包含側(cè)音,通過對接收音頻進行逐點解調(diào),可以獲得每個調(diào)制后的數(shù)據(jù)(例如c’),將每一個解調(diào)后的數(shù)據(jù)與原始編碼數(shù)據(jù)進行對比,第一個解調(diào)值為c的點的位置認為是側(cè)音出現(xiàn)的位置,即初步找到側(cè)音在接收語音波形中出現(xiàn)的位置,即“在接收語音波形中找到與發(fā)送語音波形相一致的波形的起始點”。上述提到的編解碼方式可以選用任何一種調(diào)制解調(diào)算法,如fsk等。
本領域技術人員應理解,上述實施例在進行波形對齊的過程中可能需要對語音波形進行模數(shù)轉(zhuǎn)換。例如,對波形的采樣率是8k,那么1ms是8個采樣點,數(shù)據(jù)點序列中的數(shù)據(jù)點就是采樣點,例如發(fā)送1秒接收1秒,那么獲取的數(shù)據(jù)點序列就是8000個點,如果接收序列中從第70個點開始出現(xiàn)波形與發(fā)送的特征波形一致,那么可以確定此處就是波形對齊的位置。圖2示出原始發(fā)送語音波形與接收語音波形的示意圖,圖中上方為原始發(fā)送語音波形,下方為接收語音波形。圖3示出原始發(fā)送語音波形與接收語音波形的對齊示意圖,圖中虛線為原始發(fā)送語音波形,實線為接收語音波形。這里的接收語音波形為單純的側(cè)音,不包含通話對方發(fā)來的語音波形。
原始發(fā)送語音波形的數(shù)據(jù)點序列記為數(shù)組a1,接收語音波形的數(shù)據(jù)點序列記為數(shù)組a2,數(shù)據(jù)點序列總數(shù),即數(shù)組長度為n,記為公式(1):
a1[n]={x0,x1,x2,x3,......,xn-1}
a2[n]={x0,x1,x2,x3,......,xn-1}(1)
原始發(fā)送語音波形與接收語音波形)需要同時記錄,且能保證錄音的各個數(shù)據(jù)在真實時間軸上一一對應。所以對接收語音波形解碼,與編碼數(shù)據(jù)對比,可以在接收語音波形中找到與發(fā)送語音波形相一致的波形的起始點。例如圖3中的對齊波形中的接收語音波形的t1點對應原始發(fā)送語音波形的t0點,接收語音波形的tm點對應原始發(fā)送語音波形的tn點,截取所有對應點,即原始發(fā)送語音波形取t0-tm之間所有數(shù)據(jù)點,接收語音波形取t1-tn之間所有數(shù)據(jù)點,而原始發(fā)送語音波形的t0對應原始發(fā)送語音波形數(shù)據(jù)點序列a1的x0點,接收語音波形的t1對應接收語音波形數(shù)據(jù)點序列a2的xg點,則數(shù)據(jù)點的對應關系為a1的x0對應a2的xg,a1的x1對應a2的xg+1,依次類推,得公式(2),其中,n為發(fā)送語音波形中t0-tn之間所有數(shù)據(jù)點總數(shù),k為接收語音波形中t1-tn之間所有數(shù)據(jù)點總數(shù),g為接收語音波形中t1與0點間的數(shù)據(jù)點個數(shù)(不包含t1點數(shù)據(jù))。
a1[k]={x0,x1,x2,x3,......,xn-1-g}
a2[k]={xg,x1,x2,x3,......,xn-1}k=n-g(2)
取a1的數(shù)據(jù)點序列x0-xn-g-1記為數(shù)組b1,取a2的數(shù)據(jù)點序列xg-xn-1記為數(shù)組b2,將數(shù)組b1、b2的數(shù)據(jù)點重新計數(shù),各有n-g個數(shù)據(jù)點,如公式(3)所示:
b1[k]={x0,x1,x2,x3,......,xk-1}
b2[k]={x0,x1,x2,x3,......,xk-1}k=n-g(3)
上述實施例中,通過對波形采樣以及對消息調(diào)制解調(diào)的方式實現(xiàn)波形對齊,可以較為準確的確定原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置,從而提升側(cè)音消除效果。
下面介紹本發(fā)明另一個實施例的波形對齊步驟。該實施例的波形對齊步驟s102包括:
首先,通過相同的采樣頻率,分別對原始發(fā)送語音波形及接收語音波形進行采樣,獲得原始發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組。
然后,移動原始發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組之間的相對元素位置,分別計算原始發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組在元素位置重疊部分的自相關系數(shù)。
最后,根據(jù)自相關系數(shù)最大時所對應的元素位置移動情況,確定原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置。
下面舉一個具體的應用例進行說明。
該實施例的核心思想是計算發(fā)送語音波形和接收語音波形的相關性,二者相關性越高,線路側(cè)音越大;二者相關性越低,線路側(cè)音越小。
理想情況下,接收語音波形僅僅是發(fā)送語音波形的側(cè)音,同時開始記錄發(fā)送語音波形與接收語音波形的數(shù)據(jù),且記錄時間要足夠長,使得接收語音波形包含發(fā)送語音波形的一部分側(cè)音。發(fā)送語音波形的各個數(shù)據(jù)點記錄為數(shù)組x,如公式(4)所示。接收語音波形的各個數(shù)據(jù)點記錄為數(shù)組y,如公式(5)所示。兩列波形等長,均包含n個數(shù)據(jù)元素。
x[n]={x0,x1,x2,...,xn-1}(4)
y[n]={y0,y1,y2,...,yn-1}(5)
由側(cè)音定義可知,側(cè)音在時間上必定晚于原始音頻,側(cè)音可看作是原始音頻后移一定時間后的音頻,二者時間可通過自相關計算,考量二者關系。側(cè)音數(shù)組y中必定從某一點開始的一段音頻數(shù)據(jù),與數(shù)組x的第一個元素開始的一段音頻數(shù)據(jù)相對應,為尋找此起始點,數(shù)組y從第一個元素開始,每次取點的起始點后移一個,與x中對應數(shù)量的元素做相關性計算。
1、第一次取兩個數(shù)組的全體元素,兩數(shù)組元素數(shù)量為n,如公式(6)、(7)所示:
x1[n]={x0,x1,x2,...,xn-1}(6)
y1[n]={y0,y1,y2,...,yn-1}(7)
計算數(shù)組x1與y1所有元素的平均值,
再計算兩數(shù)組的標準差,σx1為數(shù)組x1的所有元素的標準差,σy1為數(shù)組y1的所有元素的標準差,如公式(10)、(11)所示:
再計算數(shù)組x1和數(shù)組y1的協(xié)方差,如公式(12)所示:
最后計算數(shù)組x1和數(shù)組y1的自相關系數(shù),如公式(13)所示:
2、第二次取數(shù)時,數(shù)組x從第一個元素開始取數(shù),元素數(shù)量為n-1,得到數(shù)組x2,數(shù)組y從第二個元素開始取數(shù),元素數(shù)量為n-1,得到數(shù)組y2,如公式(14)、(15)所示:
x2[n-1]={x0,x1,x2,...,xn-2}(14)
y2[n-1]={y1,y2,y3,...,yn-1}(15)
依照以上計算順序,計算數(shù)組x2和數(shù)組y2的自相關系數(shù),如公式(16)所示:
3、第三次取數(shù)時,數(shù)組x從第一個元素開始取數(shù),元素數(shù)量為n-2,得到數(shù)組x3,數(shù)組y從第三個元素開始取數(shù),元素數(shù)量為n-2,得到數(shù)組y3,如公式(17)、(18)所示:
x3[n-2]={x0,x1,x2,...,xn-3}(17)
y3[n-2]={y2,y3,y4,...,yn-1}(18)
依照以上計算順序,計算數(shù)組x3和數(shù)組y3的自相關系數(shù),如公式(19)所示:
依次類推,最后可得若干個自相關系數(shù),其中,自相關系數(shù)最高的一個為原始發(fā)送語音波形與接收語音波形的對應波形起始點,且自相關系數(shù)的正負代表原始發(fā)送語音波形與接收語音波形的相位相同或相反。這樣就可得到側(cè)音相對于原始發(fā)送語音波形滯后的點數(shù),再對應采樣率可知側(cè)音相對于原始發(fā)送語音波形滯后的時間,以及二者的相位關系。
確定側(cè)音相對于原始發(fā)送語音波形滯后的時間,以及二者的相位關系后,即可進行消側(cè)音計算。消側(cè)音計算例如可以是反復計算側(cè)音數(shù)據(jù)與原始發(fā)送語音數(shù)據(jù)的殘差,以及該殘差與原始發(fā)送語音數(shù)據(jù)的相關性來確認的。例如:計算側(cè)音數(shù)據(jù)與原始發(fā)送語音數(shù)據(jù)的殘差,即用側(cè)音數(shù)據(jù)減去對應的原始發(fā)送語音數(shù)據(jù);將殘差與原始發(fā)送數(shù)據(jù)做相關性計算;如果相關性系數(shù)大于評估閾值,則將殘差數(shù)據(jù)作為新的側(cè)音數(shù)據(jù),重復上述步驟,直至相關性系數(shù)低于評估閾值,則認為側(cè)音消除成功。
上述實施例中,通過計算自相關系數(shù)的方式實現(xiàn)波形對齊,可以更加準確的確定原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置,從而顯著提升側(cè)音消除效果。
下面介紹本發(fā)明一個實施例的幅值調(diào)整步驟。該實施例的幅值調(diào)整步驟s104包括:
首先,通過相同的采樣頻率,分別對原始發(fā)送語音波形及接收語音波形進行采樣,獲得原始發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組。
然后,計算接收語音波形的采樣數(shù)組的前n個極大值的平均值與原始發(fā)送語音波形的采樣數(shù)組的前n個極大值的平均值的比值。
最后,將原始發(fā)送語音波形的采樣數(shù)組與比值相乘,以調(diào)整原始發(fā)送語音的波形。
下面舉一個具體的應用例進行說明。
圖4示出一個實施例的幅值調(diào)整的示意圖。其中,上方的長虛線表示幅值調(diào)整前的原始發(fā)送語音波形,上方的短虛線表示幅值調(diào)整后的發(fā)送語音波形,下方的實線表示接收語音波形。具體在計算兩列波的最大幅值時,可以使用的是極大值平均值。即取公式(3)中兩個數(shù)組的前10個極大值,數(shù)組b1的前十個極大值記為數(shù)組m1,數(shù)組b2的前十個極大值記為數(shù)組m2,如公式(20)所示:
m1[10]={max0,max1,max2,max3,max4,max5,max6,max7,max8,max9}
m2[10]={max0',max1',max2',max3',max4',max5',max6',max7',max8',max9'}(20)
可選的,為了避免將噪點計算進來減少誤差,在公式(20)的兩個數(shù)組10個極大值中去除掉1個極大值和1個極小值,求其它8個極大值的平均值,記為ave1和ave2,如公式(21)所示:
ave1=(max1+max2+max3+max4+max5+max6+max7+max8)/8
ave2=(max1'+max2'+max3'+max4'+max5'+max6'+max7'+max8')/8(21)
然后求ave1和ave2的比例關系,記為ret,如公式(22)所示:
ret=ave2/ave1(22)
將公式(3)中的數(shù)組b1的各元素乘以比例系數(shù)ret,記為數(shù)據(jù)點序列b1’,如公式(23)所示:
b1'[i]=b1[i]*reti∈[0,k](23)
將數(shù)組b1重寫,數(shù)組下標從0開始計數(shù),得數(shù)組b1’,如公式(24)所示:
b1'[k]={x0,x1,x2,x3,......,xk-1}
b2[k]={x0,x1,x2,x3,......,xk-1}k=n-g(24)
上述實施例中,求得原始發(fā)送語音波形與接收語音波形的幅值最大值,然后求得二者的比例值,再將原始發(fā)送語音波形的各個數(shù)據(jù)點乘以此比例值,即可得到與接收波形幅值大致一致的發(fā)送波形,從而保證側(cè)音消除時不引起接收語音波形發(fā)生較大的幅值變動。
下面介紹本發(fā)明一個實施例的相位確認步驟。該實施例的相位確認步驟s106包括:
首先,通過相同的采樣頻率,分別對調(diào)整后的發(fā)送語音波形及接收語音波形進行采樣,獲得調(diào)整后的發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組。
然后,根據(jù)n個預設值,分別將調(diào)整后的發(fā)送語音波形的采樣數(shù)組后移n個預設值對應的元素位置,然后分別與接收語音波形的采樣數(shù)組相加、相減得到2n個數(shù)組,n為正整數(shù)。
最后,在2n個數(shù)組的各個數(shù)組中確定各自的最大值,并在各個數(shù)組的最大值中確定最小值。
如果最小值是和值數(shù)組中的元素,則認為調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系為反向。如果最小值是差值數(shù)組中的元素,則認為調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系為同向。
下面舉一個具體的應用例進行說明。
圖5示出相位確認過程中偏移值示意圖。其中,上方的虛線表示發(fā)送語音波形,下方的實線表示接收語音波形,兩條豎線之間表示偏移量。首先預設15個經(jīng)驗值,分別為5~19。在原始發(fā)送語音波形中,從一個經(jīng)驗偏移位置開始取一定長度的數(shù)據(jù),與接收波形對應點相加、相減,這樣每個偏移位置可得到兩組對應的數(shù)組,根據(jù)不同偏移位置可得到15個對應點和值數(shù)組(記為p0、p1、p2、……p14)和對應點差值數(shù)組(記為m0、m1、m2、……m14),經(jīng)驗值偏移位置記為數(shù)組y,其中h為經(jīng)驗值序號,取值0-14,如公式(25)所示:
每個數(shù)組再求出各自的最大值,這樣每個經(jīng)驗偏移值都能獲得兩個最大值,求和數(shù)組最大值和求差數(shù)組最大值,記為ma和mb,如公式(26)所示:
然后在所有經(jīng)驗偏移值對應的兩種最大值ma和mb中取最小值記為min。相位參數(shù)記為phase,如果最小值是在求和數(shù)組中產(chǎn)生,則為反相位(phase=0);如果最小值是在求差數(shù)組中產(chǎn)生,則為同相位(phase=1),如公式(27)所示。
同時發(fā)送波形在接收波形上的對應點應相應的后移x(對應經(jīng)驗值)個點,接收波形與發(fā)送波形的數(shù)據(jù)點序列對應為公式(28):
b1”[k]={xh,xh+1,xh+2,......,xk-1}
b2[k]={x0,x1,x2,......,xk-1-h}(k=n-g)(28)
數(shù)據(jù)點序列重寫為公式(29):
b1”[l]={x0,x1,x2,......,xl-1}
b2[l]={x0,x1,x2,......,xl-1}(l=n-g-h+1)(29)
上述實施例中,對預設的經(jīng)驗值進行驗證,獲得接收語音波形中側(cè)音起始位置在原始發(fā)送語音波形中對應的確切位置并確定側(cè)音與原始發(fā)送語音的波形的相位關系,從而使得后續(xù)能夠更加準確的消除側(cè)音。
下面介紹本發(fā)明一個實施例的側(cè)音消除步驟。該實施例的側(cè)音消除步驟s108包括:
首先,將調(diào)整后的發(fā)送語音波形的采樣數(shù)組后移最小值對應的預設值所進一步對應的元素位置。
然后,若調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系為反向,則從發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置開始,將接收語音波形的采樣數(shù)組與后移的調(diào)整后的發(fā)送語音波形的采樣數(shù)組相加。
若調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系為同向,則從發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置開始,將接收語音波形的采樣數(shù)組與后移的調(diào)整后的發(fā)送語音波形的采樣數(shù)組相減。
最后,對相加或相減后得到的數(shù)組進行數(shù)模轉(zhuǎn)換,以獲得消除側(cè)音的語音波形d,例如公式(30)所示:
上述實施例中,根據(jù)側(cè)音與原始發(fā)送語音的波形的相位關系進行側(cè)音消除操作,能夠更加準確的消除側(cè)音,取得更優(yōu)良的側(cè)音消除效果,提高了語音通話的用戶體驗。
下面結合圖6介紹本發(fā)明一個實施例的側(cè)音消除裝置。
圖6示出本發(fā)明一個實施例的側(cè)音消除裝置的結構示意圖。如圖6所示,該實施例的側(cè)音消除裝置60包括:
起始位置確定模塊602,用于確定原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置。
振幅調(diào)整模塊604,用于調(diào)整原始發(fā)送語音的波形,使調(diào)整后的發(fā)送語音的波形與側(cè)音的波形具有相近的振幅。
相位關系確定模塊606,用于確定調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系。
側(cè)音消除模塊608,用于根據(jù)起始位置以及相位關系,利用接收語音波形及調(diào)整后的發(fā)送語音波形進行側(cè)音消除。
可選的,起始位置確定模塊602用于:
通過相同的采樣頻率,分別對原始發(fā)送語音波形及接收語音波形進行采樣,獲得原始發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組;
移動原始發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組之間的相對元素位置,分別計算原始發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組在元素位置重疊部分的自相關系數(shù);
根據(jù)自相關系數(shù)最大時所對應的元素位置移動情況,確定原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置。
可選的,起始位置確定模塊602用于:
對特定的發(fā)送消息進行調(diào)制生成原始發(fā)送語音波形;
對接收語音波形進行解調(diào)獲得接收消息;
通過特定的發(fā)送消息在接收消息中出現(xiàn)的位置,確定原始發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置。
可選的,振幅調(diào)整模塊604用于:
通過相同的采樣頻率,分別對原始發(fā)送語音波形及接收語音波形進行采樣,獲得原始發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組;
計算接收語音波形的采樣數(shù)組的前n個極大值的平均值與原始發(fā)送語音波形的采樣數(shù)組的前n個極大值的平均值的比值,n為正整數(shù);
將原始發(fā)送語音波形的采樣數(shù)組與比值相乘,以調(diào)整原始發(fā)送語音的波形。
可選的,相位關系確定模塊606用于:
通過相同的采樣頻率,分別對調(diào)整后的發(fā)送語音波形及接收語音波形進行采樣,獲得調(diào)整后的發(fā)送語音波形的采樣數(shù)組及接收語音波形的采樣數(shù)組;
根據(jù)n個預設值,分別將調(diào)整后的發(fā)送語音波形的采樣數(shù)組后移n個預設值對應的元素位置,然后分別與接收語音波形的采樣數(shù)組相加、相減得到2n個數(shù)組,n為正整數(shù);
在2n個數(shù)組的各個數(shù)組中確定各自的最大值,并在各個數(shù)組的最大值中確定最小值;
如果最小值是和值數(shù)組中的元素,則認為調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系為反向。
可選的,相位關系確定模塊606還用于:
如果最小值是差值數(shù)組中的元素,則認為調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系為同向。
可選的,側(cè)音消除模塊608用于:
將調(diào)整后的發(fā)送語音波形的采樣數(shù)組后移最小值對應的預設值所進一步對應的元素位置;
若調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系為反向,則從發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置開始,將接收語音波形的采樣數(shù)組與后移的調(diào)整后的發(fā)送語音波形的采樣數(shù)組相加;
對相加后得到的數(shù)組進行數(shù)模轉(zhuǎn)換,以獲得消除側(cè)音的語音波形。
可選的,側(cè)音消除模塊608還用于:
將調(diào)整后的發(fā)送語音波形的采樣數(shù)組后移最小值對應的預設值所進一步對應的元素位置;
若調(diào)整后的發(fā)送語音波形與側(cè)音波形之間的相位關系為同向,則從發(fā)送語音波形產(chǎn)生的側(cè)音在接收語音波形中的起始位置開始,將接收語音波形的采樣數(shù)組與后移的調(diào)整后的發(fā)送語音波形的采樣數(shù)組相減;
對相減后得到的數(shù)組進行數(shù)模轉(zhuǎn)換,以獲得消除側(cè)音的語音波形。
圖7示出了本發(fā)明側(cè)音消除裝置的一個實施例的結構圖。如圖7所示,該實施例的側(cè)音消除裝置70包括:存儲器710以及耦接至該存儲器710的處理器720,處理器720被配置為基于存儲在存儲器710中的指令,執(zhí)行前述任意一個實施例中的側(cè)音消除方法。
其中,存儲器810例如可以包括系統(tǒng)存儲器、固定非易失性存儲介質(zhì)等。系統(tǒng)存儲器例如存儲有操作系統(tǒng)、應用程序、引導裝載程序(bootloader)以及其他程序等。
圖8示出了本發(fā)明側(cè)音消除裝置的另一個實施例的結構圖。如圖8所示,該實施例的裝置80包括:存儲器710以及處理器720,還可以包括輸入輸出接口830、網(wǎng)絡接口840、存儲接口850等。這些接口830,840,850以及存儲器710和處理器720之間例如可以通過總線850連接。其中,輸入輸出接口830為顯示器、鼠標、鍵盤、觸摸屏等輸入輸出設備提供連接接口。網(wǎng)絡接口840為各種聯(lián)網(wǎng)設備提供連接接口。存儲接口850為sd卡、u盤等外置存儲設備提供連接接口。
本發(fā)明還包括一種計算機可讀存儲介質(zhì),其上存儲有計算機指令,該指令被處理器執(zhí)行時實現(xiàn)前述任意一個實施例中的側(cè)音消除方法。
本領域內(nèi)的技術人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用非瞬時性存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。