本發明涉及數字音頻處理技術領域,尤其涉及一種可辨別方向的耳機及其實現方法。
背景技術:
當今社會發展越來越快,互聯網技術以及與電子技術的結合程度越來越高。智能化,人性化的要求也越來越高。移動消費電子產品所附帶的功能涵蓋生活生產的各個方面,多媒體功能也是消費電子設備用戶使用最多的一種應用,怎么提高用戶體驗,以及用戶感受成為了每個廠家都需要考慮的問題。
目前業內更多將音效設置的功能放置在多媒體終端設備上,很多廠家只限于在自己本產品的基礎上使用更加好的器件,花更高成本的配件進行提高聽賞感受,改善音質,提高音頻測試各種指標都是后端設計非常復雜的系統工程。但是耳機還是屬于傳統耳機的范疇。而當音源位于用戶不同位置時,如頭部的前方或者側方,聲音的大小和聲場均會有不同,從而降低用戶的聽覺體驗。
因此,現有技術還有待于改進和發展。
技術實現要素:
鑒于上述現有技術的不足之處,本發明的目的在于提供一種可辨別方向的耳機及其實現方法,解決現有技術中耳機在使用過程中,音源位于不同位置時,聲音不會隨著音源位置變化進行變化,降低環繞聲效果,令用戶體驗感較差。
為了達到上述目的,本發明采取了以下技術方案:
一種可辨別方向的耳機,包括耳機本體,所述耳機本體上設置有用于與移動終端相連接的音頻連接器;其中,所述耳機本體還包括:控制模塊、信號轉換模塊、方向傳感器、存儲模塊、數字信號處理模塊和耳機揚聲器;
所述音頻連接器將移動終端發送的模擬信號發送至信號轉換模塊中,由信號轉換模塊將模擬信號轉換成對應的數字信號后,再把數字信號發送至存儲模塊中;方向傳感器將捕捉到的位置信號保存在存儲單元中;
所述控制模塊將位置信號以及數字信號一并發送至數字信號處理模塊中進行解析,由數字信號處理模塊轉換成數字虛擬環繞立體聲數據,并將數字虛擬環繞立體聲數據發送至信號轉換模塊中;
所述信號轉換模塊將數字虛擬環繞立體聲數據轉換成相應的模擬虛擬環繞立體聲數據后,送至耳機揚聲器中。
所述的可辨別方向的耳機,其中,所述耳機本體上還設置有用于為耳機中各個模塊進行供電的電源管理模塊。
所述的可辨別方向的耳機,其中,所述耳機本體上還設置有麥克風和音量調節按鍵;所述麥克風和音量調節按鍵分別連接控制模塊。
所述的可辨別方向的耳機,其中,所述方向傳感器進一步包括加速度傳感器和地磁場傳感器;所述方向傳感器通過I2C總線與控制模塊連接。
一種上述的可辨別方向的耳機的實現方法,其中,包括以下步驟:
S1、音頻連接器將移動終端發送的模擬信號發送至信號轉換模塊中,由信號轉換模塊將模擬信號轉換成對應的數字信號后,再把數字信號發送至存儲模塊中;同時,方向傳感器將捕捉到的位置信號保存在存儲單元中;
S2、控制模塊將位置信號以及數字信號一并發送至數字信號處理模塊中進行解析,轉換成數字虛擬環繞立體聲數據,并將數字虛擬環繞立體聲數據發送至信號轉換模塊中;
S3、信號轉換模塊將數字虛擬環繞立體聲數據轉換成相應的模擬虛擬環繞立體聲數據后,送至耳機揚聲器中。
所述的可辨別方向的耳機的實現方法,其中,所述步驟S2具體包括:
S21、數字信號處理模塊對接收到的位置信號進行判斷,根據預先設置的規則,判斷是否為有效數據:若為有效數據則結合數字信號進行解析,轉換成數字虛擬環繞立體聲數據;否則提示用戶數據誤差,重新調整進行位置信號采集;
S22、數字信號處理模塊將數字虛擬環繞立體聲數據發送至控制模塊和存儲模塊中,由控制模塊根據數字虛擬環繞立體聲數據來控制麥克風的端口電壓;
S23、控制模塊將存儲模塊中的數字虛擬環繞立體聲數據的數據發送至信號轉換模塊中。
所述的可辨別方向的耳機的實現方法,其中,所述步驟S1之前還包括步驟S0、控制模塊、數字信號處理模塊和方向傳感器進行初始化操作。
所述的可辨別方向的耳機的實現方法,其中,所述步驟S0還包括檢測音頻連接器是否接收到移動終端發送的模擬信號,若是則進行步驟S1,否則控制模塊由工作狀態轉為待機狀態,并提示用戶。
有益效果:本發明提供的可辨別方向的耳機及其實現方法,通過位置傳感器來判斷頭部的擺動的方位如左右的方位信息,對音源信號進行處理,將聲音中各個發音源方位分離結合頭部轉動的角度來改變聲音的聲場以及聲音大小隨角度而逐漸變化,從而讓用戶在轉動自己頭部的角度的時候能夠很清楚聽到音源中發聲體的方位和感受到聲音的聲場偏差,從而獲取到真實感覺的耳機。
附圖說明
圖1為本發明的可辨別方向的耳機的結構框圖。
圖2為本發明可辨別方向的耳機的實現方法的流程圖。
具體實施方式
本發明提供一種可辨別方向的耳機及其實現方法。為使本發明的目的、技術方案及效果更加清楚、明確,以下參照附圖并舉實施例對本發明進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發明,并不用于限定本發明。
首先介紹一下人耳的聽音原理:
人耳只有兩個,但卻能在所有角度上大概分辨出聲音到底來自于哪個方向。這是因為人對聲音音源的定位方法非常復雜,其由以下效應組成:
1.簡單的“左-右”信息可以通過相對電平的不同和每只耳朵接收到的不同而獲得。
2.對于打擊樂器的聲音,皮膚可以感受到聲波的沖擊。
3.聲波在進入鼓膜時,受人體的反射、折射和衍射而扭曲變形,大腦能根據經驗判斷出聲源的方位和距離。此一研究領域為頭部相關傳輸函數(Head-related transfer function,HRTF)。
這些原理開發出了數種錄音方式,隨著技術的進步,其錄音效果也在逐漸改善中,方法主要有以下幾種:
(1)聽覺傳輸立體聲系統。它是根據聽覺傳輸技術的原理,通過人工假頭進行撿拾,或者用信號處理的方法模擬出聲源到雙耳的傳輸函數HRTF,從 而得到含有3D空間環繞聲信息的雙耳信號。所得到的兩聲道信號經放大、記錄、傳輸后,在經耳機重放,或由揚聲器重放。這種方法的優點是聲像逼真自然,且只 需兩個獨立的重放聲道就可以再現三維空間的聲像。
(2)3D“準”虛擬環繞聲系統。這類系統是在聽覺傳輸立體聲技術的基礎上,從雙聲道信號提取出空間信息并予以增強,或者通過模擬空寂不同方向 上的HRTF來模擬發射聲與混響聲,進而增加主觀聽覺上的空間感與包圍感,達到模擬3D環繞聲的目的,是普通雙聲道節目源的后期處理系統。這類系統所起到 的是模擬環繞聲信息的作用,也就是“準”環繞聲系統。本發明用的就是此算法來進行的。
多通道虛擬環繞聲系統。這類系統多采用聽覺傳輸技術的虛擬聲源的方法,通過HRTF的模擬。利用一對前方揚聲器虛擬出部分揚聲器,從而實現環繞聲的效果。值得一提的是,這類系統也存在聽音域窄和聲像前后倒置的缺陷。
請參閱圖1,其為本發明的可辨別方向的耳機的結構框圖。如圖所示,所述可辨別方向的耳機,包括耳機本體10,所述耳機本體10上設置有用于與移動終端20相連接的音頻連接器100;所述耳機本體還包括:控制模塊200、信號轉換模塊300、方向傳感器400、存儲模塊500、數字信號處理模塊600和耳機揚聲器700;所述控制模塊200分別連接信號轉換模塊300、方向傳感器400、存儲模塊500、數字信號處理模塊600和耳機揚聲器700;所述數字信號處理模塊600、方向傳感器400、信號轉換模塊300連接存儲模塊500,信號轉換模塊300連接耳機揚聲器700。
其中,所述音頻連接器將移動終端發送的模擬信號發送至信號轉換模塊中,由信號轉換模塊將模擬信號轉換成對應的數字信號后,再把數字信號發送至存儲模塊中;方向傳感器將捕捉到的位置信號保存在存儲單元中;所述控制模塊將位置信號以及數字信號一并發送至數字信號處理模塊中進行解析,由數字信號處理模塊轉換成數字虛擬環繞立體聲數據,并將數字虛擬環繞立體聲數據發送至信號轉換模塊中;所述信號轉換模塊將數字虛擬環繞立體聲數據轉換成相應的模擬虛擬環繞立體聲數據后,送至耳機揚聲器中。
具體來說,所述移動終端20包括手機:所述移動終端20有操作系統支持,基于操作系統上安裝音樂播放器軟件應用,在本實施例中,通過3.5MM 的耳機線與耳機本體進行連接。所述控制模塊200的主要作用包括:進行音樂信號和通話語音信號的音量大小調節;麥克通路切換從充電模式轉成輸入通路控制;控制其他幾個核心單元的硬件初始化;接收數字信號處理模塊中斷信號,主動對麥克風的端口電壓進行升壓(1.8V升到2.5V,1.8V為麥克風的額定工作電壓)等。信號轉換模塊300是將移動終端發送的模擬信號轉換成對應的數字信號后并暫時存儲在存儲模塊500中,并通過控制模塊中啟動的數據將轉換后的數字信號混音操作,結合方向傳感器傳輸過來的數據一并傳遞給數字信號處理模塊600進行音效處理。在本實施例中,方向傳感器400通過I2C總線與控制模塊200進行連接,整個耳機端通電之后方向傳感器400進行初始化,并開始捕捉為之數據并保存在存儲模塊中。
方向傳感器400是本發明的關鍵所在,在本實施例中,方向傳感器400通過2個傳感器用于判斷設備的位置:分別是地磁場傳感器和加速度傳感器。方向傳感器是基于軟件的,并且它的數據是通過加速度傳感器和磁場傳感器共同獲得的。傳感器框架通常是使用一個標準的三維坐標系去表示一個值的。以方向傳感器為例,確定一個方向當然也需要一個三維坐標,畢竟設備不可能永遠水平,準確的說設備返回的方向值就是一個長度為3的float數組,包含三個方向的值:x、y和z,其中,z是指向地心的方位角,x軸是仰俯角(由靜止狀態開始前后反轉),y軸是翻轉角(由靜止狀態開始左右反轉)。
傳感器的實現原理:方向感應器的實現靠的是加速計。所采用的加速計是三軸加速計,分為X軸、Y軸和Z軸。這三個軸所構成的立體空間足以 偵測到你設備上各種動作。在實際應用時通常是以這三個軸(或任意兩個軸)所構成的角度來計算iPhone傾斜的角度,從而計算出重力加速度的 值。通過感知特定方向的慣性力總量,加速計可以測量出加速度和重力。三軸加速計意味著它能夠檢測到 三維空間中的運動或重力引力。因此,加速計可以檢測設備處于正豎、倒豎、左橫、右橫,仰、俯狀態。感應水平面上的方位角、旋轉角和傾斜角,具有方向檢測功能的設備具有使用更方便、更具人性化的特點。加 速計可以測量重力引力(g),因此當加速計返回值為1.0時,表示在特定方向上感知到1g.如果是靜止握持iPhone而沒有任何動作,那么地球引力對其 施加的力大約為1g.如果是縱向豎直,那么設備會檢測并報告在其y軸上施加的力大約為1g。如果是以一定角度握持,設備那么這1g的力會分布到不同的軸上,這取決于設備的位置方式。當以45度角位置的設備時,1g的力會均勻的分解到兩個軸上。正常使用時,加速計在任一軸上都不會檢測到遠大于1g的值。如果檢測到的加速計值遠大于1g,那么即可判斷這是突然動作。如果突然轉動頭部向左右,那么加速計便會在一個或多個軸上檢測到很大的力。
本發明的關鍵就是運行虛擬環繞立體聲解析算法,結合方向傳感器所返回的轉動夾角度數,結合實時音源信號,獲取與夾角度數相吻合的解析后的聲音效果。
其中,獲取傳感器X,Y,Z軸數據在控制模塊啟動的方向傳感器進程中進行算法解析獲取到角度數據,算法解析如下:
getRotationMatrix(float[] R, float[] I,
float[] gravity, float[] geomagnetic) {
// TODO: move this to native code for efficiency
float Ax = gravity[0];
float Ay = gravity[1];
float Az = gravity[2];
final float Ex = geomagnetic[0];
final float Ey = geomagnetic[1];
final float Ez = geomagnetic[2];
float Hx = Ey*Az - Ez*Ay;
float Hy = Ez*Ax - Ex*Az;
float Hz = Ex*Ay - Ey*Ax;
final float normH = (float)Math.sqrt(Hx*Hx + Hy*Hy + Hz*Hz);
if (normH < 0.1f) {
// device is close to free fall (or in space), or close to
// magnetic north pole. Typical values are > 100.
return false;
}
final float invH = 1.0f / normH;
Hx *= invH;
Hy *= invH;
Hz *= invH;
final float invA = 1.0f / (float)Math.sqrt(Ax*Ax + Ay*Ay + Az*Az);
Ax *= invA;
Ay *= invA;
Az *= invA;
final float Mx = Ay*Hz - Az*Hy;
final float My = Az*Hx - Ax*Hz;
final float Mz = Ax*Hy - Ay*Hx;
if (R != null) {
if (R.length == 9) {
R[0] = Hx; R[1] = Hy; R[2] = Hz;
R[3] = Mx; R[4] = My; R[5] = Mz;
R[6] = Ax; R[7] = Ay; R[8] = Az;
} else if (R.length == 16) {
R[0] = Hx; R[1] = Hy; R[2] = Hz; R[3] = 0;
R[4] = Mx; R[5] = My; R[6] = Mz; R[7] = 0;
R[8] = Ax; R[9] = Ay; R[10] = Az; R[11] = 0;
R[12] = 0; R[13] = 0; R[14] = 0; R[15] = 1;
}
}
if (I != null) {
// compute the inclination matrix by projecting the geomagnetic
// vector onto the Z (gravity) and X (horizontal component
// of geomagnetic vector) axes.
final float invE = 1.0f / (float)Math.sqrt(Ex*Ex + Ey*Ey + Ez*Ez);
final float c = (Ex*Mx + Ey*My + Ez*Mz) * invE;
final float s = (Ex*Ax + Ey*Ay + Ez*Az) * invE;
if (I.length == 9) {
I[0] = 1; I[1] = 0; I[2] = 0;
I[3] = 0; I[4] = c; I[5] = s;
I[6] = 0; I[7] =-s; I[8] = c;
} else if (I.length == 16) {
I[0] = 1; I[1] = 0; I[2] = 0;
I[4] = 0; I[5] = c; I[6] = s;
I[8] = 0; I[9] =-s; I[10]= c;
I[3] = I[7] = I[11] = I[12] = I[13] = I[14] = 0;
I[15] = 1;
}
}
return true;
}
計算出角度數據的函數實現,并將角度數據保存在存儲模塊中,控制模塊發送命令將方向角度以及實時的數字音頻數據一并傳送至數字信號處理模塊進行虛擬環繞聲的算法解析操作。
calculateOrientation() {
float[] values = new float[3];
float[] R = new float[9];
SensorManager.getRotationMatrix(R, null, accelerometerValues,
magneticFieldValues);
SensorManager.getOrientation(R, values);
values[0] = (float) Math.toDegrees(values[0]);
Log.i(TAG, values[0] + "");
if (values[0] >= -5 && values[0] < 5) {
} else if (values[0] >= 5 && values[0] < 85) {
} else if (values[0] >= 85 && values[0] <= 95) {
} else if (values[0] >= 95 && values[0] < 175) {
} else if ((values[0] >= 175 && values[0] <= 180)
|| (values[0]) >= -180 && values[0] < -175) {
} else if (values[0] >= -175 && values[0] < -95) {
} else if (values[0] >= -95 && values[0] < -85) {
} else if (values[0] >= -85 && values[0] < -5) {
}
}
具體來說,本發明通過位置傳感器來判斷頭部的擺動的方位如左右的方位信息,對音源信號進行處理,將聲音中各個發音源方位分離結合頭部轉動的角度來改變聲音的聲場以及聲音大小隨角度而逐漸變化,從而讓用戶在轉動自己頭部的角度的時候能夠很清楚聽到音源中發聲體的方位和感受到聲音的聲場偏差,從而獲取到真實感覺的耳機。
下面介紹下普通立體聲輸出與虛擬環繞立體聲輸出的差別:
雙聲道是音頻領域的一項革命性的進步,它的出現讓用戶從耳機/揚聲器中聽到的聲音的“場”從一個單薄的“點”擴寬到了一個“面”,通過兩個聲道 發出的音量和音色細節與播放出來的時間的細微差距,已經可以分辨出一束聲音來自左邊還是右邊,用戶現在聽到的大多數音樂都是基于這種技術制作的。而在欣賞 音樂和大多數電影的時候,雙聲道音頻已經能給予用戶需要的足夠的空間感和立體感。在這個世界里聲音當然不可能是只來自于用戶的左邊和右邊的。想象一下,如果用戶處在一個看起來一切都很像真實世界的地方,但用戶聽到的聲音只會從左邊或右邊傳來,那會是一件多荒謬的事,視覺上營造的逼真觀感會 被聽覺上的異樣毀得蕩然無存。那么需要一項更加先進的技術來給聽眾提供更逼真的聽覺體驗了。最終聲音的模擬立體化是靠頭盔內的數組微型揚聲器來實現的,他們或許沒想到最終的技術竟然可以實現在任何一副 只有兩個音響的普通耳機上,都能實現真正的環繞聲效果。這就是虛擬環繞聲技術。
進一步的,所述的可辨別方向的耳機中,所述耳機本體10上還設置有用于為耳機中各個模塊進行供電的電源管理模塊。另外,所述耳機本體上還可以設置有麥克風和音量調節按鍵;所述麥克風和音量調節按鍵分別連接控制模塊。
本發明還提供了一種上述的可辨別方向的耳機的實現方法,如圖2所示,包括以下步驟:
S100、音頻連接器將移動終端發送的模擬信號發送至信號轉換模塊中,由信號轉換模塊將模擬信號轉換成對應的數字信號后,再把數字信號發送至存儲模塊中;同時,方向傳感器將捕捉到的位置信號保存在存儲單元中;
S200、控制模塊將位置信號以及數字信號一并發送至數字信號處理模塊中進行解析,轉換成數字虛擬環繞立體聲數據,并將數字虛擬環繞立體聲數據發送至信號轉換模塊中;
S300、信號轉換模塊將數字虛擬環繞立體聲數據轉換成相應的模擬虛擬環繞立體聲數據后,送至耳機揚聲器中。
進一步的,所述的可辨別方向的耳機的實現方法中,所述步驟S200具體包括:
S21、數字信號處理模塊對接收到的位置信號進行判斷,根據預先設置的規則,判斷是否為有效數據:若為有效數據則結合數字信號進行解析,轉換成數字虛擬環繞立體聲數據;否則提示用戶數據誤差,重新調整進行位置信號采集;例如:發送中斷信號給控制模塊,進行閃燈或者其他文字提醒告知用戶使用方法或者環境不夠可能造成數據誤差,幫忙用戶重新調整進行數據采集。
S22、數字信號處理模塊將數字虛擬環繞立體聲數據發送至控制模塊和存儲模塊中,由控制模塊根據數字虛擬環繞立體聲數據來控制麥克風的端口電壓:可以將麥克風的端口電壓升壓至2.5V,也可以保持在1.8V。
S23、控制模塊將存儲模塊中的數字虛擬環繞立體聲數據的數據發送至信號轉換模塊中。
進一步的,所述的可辨別方向的耳機的實現方法中,所述步驟S100之前還包括步驟S0、控制模塊、數字信號處理模塊和方向傳感器進行初始化操作。
進一步的,所述的可辨別方向的耳機的實現方法中,所述步驟S0還包括檢測音頻連接器是否接收到移動終端發送的模擬信號,若是則進行步驟S100,否則控制模塊由工作狀態轉為待機狀態,并提示用戶:設備故障,需要重新插拔或者啟動。
綜上所述,本發明提供的可辨別方向的耳機及其實現方法,其中,可辨別方向的耳機包括耳機本體、音頻連接器、控制模塊、信號轉換模塊、方向傳感器、存儲模塊、數字信號處理模塊和耳機揚聲器;所述控制模塊分別連接、信號轉換模塊、方向傳感器、存儲模塊、數字信號處理模塊和耳機揚聲器;所述方向傳感器、信號轉換模塊連接存儲模塊,信號轉換模塊連接耳機揚聲器。通過位置傳感器來判斷頭部的擺動的方位如左右的方位信息,對音源信號進行處理,將聲音中各個發音源方位分離結合頭部轉動的角度來改變聲音的聲場以及聲音大小隨角度而逐漸變化,從而讓用戶在轉動自己頭部的角度的時候能夠很清楚聽到音源中發聲體的方位和感受到聲音的聲場偏差,從而獲取到真實感覺的耳機。
可以理解的是,對本領域普通技術人員來說,可以根據本發明的技術方案及本發明構思加以等同替換或改變,而所有這些改變或替換都應屬于本發明所附的權利要求的保護范圍。