專利名稱:一種基于安卓的無線網(wǎng)絡(luò)下變聲通話的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動通信應(yīng)用技術(shù),更確切的說是涉及一種基于安卓的無線網(wǎng)絡(luò)下變聲通話的方法,可應(yīng)用于各種符合功能條件的安卓設(shè)備中。
背景技術(shù):
安卓是當(dāng)今最流行的手機(jī)系統(tǒng)之一,它是由谷歌開發(fā)的以Linux為基礎(chǔ)的開放源代碼操作系統(tǒng),主要使用于便攜設(shè)備。安卓支持使用Java作為編程語言來開發(fā)應(yīng)用程序,谷歌重新設(shè)計(jì)了安卓的Java,以便能提高效率和減少資源占用。
了解到安卓的四層架構(gòu),了解到我們能做的應(yīng)該是應(yīng)用層的事情,要調(diào)用起硬件就必須使用安卓給出的固定的API。在developer.安卓.com (安卓開發(fā)者網(wǎng)站)上,Google給出了所有的安卓的API,也就是對應(yīng)的各種類和方法。安卓系統(tǒng)架構(gòu)由5部分組成,分別是Linux Kernel、安卓 Runtime、Libraries、Application Framework、Applications。如果安卓系統(tǒng)沒有提供某些API,那么只能通過在安卓系統(tǒng)底層編寫C/C++代碼來開發(fā)這些API并向安卓應(yīng)用框架層提供接口。自從移動網(wǎng)絡(luò)的改革之后,手機(jī)GPRS的流量費(fèi)用下降,手機(jī)中開始增加GPRS的應(yīng)用,越來越多的人開始使用GPRS網(wǎng)絡(luò)。在進(jìn)入3G時(shí)代之初,就已經(jīng)出現(xiàn)了網(wǎng)絡(luò)電話的軟件,人們再也不需要像電信運(yùn)營商支付每分鐘幾毛錢的通話費(fèi)了,使用網(wǎng)絡(luò)電話只消耗流量費(fèi)用,尤其當(dāng)你手機(jī)連接上免費(fèi)的無線網(wǎng)絡(luò)時(shí),打網(wǎng)絡(luò)電話更可以不需要付一分錢。socket的英文原義是“孔”或“插座”。作為4BDS UNIX的進(jìn)程通信機(jī)制,取后一種意思。通常也稱作〃套接字〃,用于描述IP地址和端口,是一個(gè)通信鏈的句柄。在Internet上的主機(jī)一般運(yùn)行了多個(gè)服務(wù)軟件,同時(shí)提供幾種服務(wù)。每種服務(wù)都打開一個(gè)Socket,并綁定到一個(gè)端口上,不同的端口對應(yīng)于不同的服務(wù)。Socket正如其英文原意那樣,象一個(gè)多孔插座。一臺主機(jī)猶如布滿各種插座的房間,每個(gè)插座有一個(gè)編號,有的插座提供220伏交流電,有的提供110伏交流電,有的則提供有線電視節(jié)目??蛻糗浖⒉孱^插到不同編號的插座,就可以得到不同的服務(wù)。應(yīng)用程序通常通過〃套接字〃向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求。以J2SDK-1. 3為例,Socket和ServerSocket類庫位于java . net包中。ServerSocket用于服務(wù)器端,Socket是建立網(wǎng)絡(luò)連接時(shí)使用的。在連接成功時(shí),應(yīng)用程序兩端都會產(chǎn)生一個(gè)Socket實(shí)例,操作這個(gè)實(shí)例,完成所需的會話。對于一個(gè)網(wǎng)絡(luò)連接來說,套接字是平等的,并沒有差另IJ,不因?yàn)樵诜?wù)器端或在客戶端而產(chǎn)生不同級別。不管是Socket還是ServerSocket它們的工作都是通過SocketImpl類及其子類完成的。根據(jù)連接啟動的方式以及本地套接字要連接的目標(biāo),套接字之間的連接過程可以分為三個(gè)步驟服務(wù)器監(jiān)聽,客戶端請求,連接確認(rèn)。
發(fā)明內(nèi)容
本發(fā)明的目的是克服現(xiàn)有技術(shù)的不足,提供一種基于安卓的無線網(wǎng)絡(luò)下變聲通話的方法?;诎沧康臒o線網(wǎng)絡(luò)下變聲通話的方法包括如下步驟
1)基于安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備,均具備錄音、放音以及無線網(wǎng)絡(luò)連接的功能,使用無線網(wǎng)絡(luò)網(wǎng)絡(luò)模式連接到同一個(gè)無線網(wǎng)絡(luò)信號下,經(jīng)行通話;
2)在通話的過程中,通話雙方選擇變聲或原聲模式,而且在變聲模式中,實(shí)時(shí)調(diào)節(jié)聲音變粗或者變細(xì);
3)安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備在未建立任何通話連接的狀態(tài)下,進(jìn)行本地的變聲測試。所述的步驟I)包括
(1)安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備,已連接到統(tǒng)一無線網(wǎng)絡(luò)下后,其中一個(gè)作服務(wù)端,另一個(gè)作客戶端,使用Socket機(jī)制進(jìn)行配對連接,數(shù)據(jù)流量通過無線網(wǎng)絡(luò)傳輸;
(2)安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備在通話中均可選四個(gè)模式“雙向?qū)υ挕薄ⅰ爸唤勇牎?、“只發(fā)送”、“暫?!?
(3)安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備中作為服務(wù)端的一方能獲取自身設(shè)備所處網(wǎng)絡(luò)的IP地址;
(4)安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備中作為客戶端的一方發(fā)起通話連接請求。所述的步驟2)包括
(1)聲音變粗或變細(xì)分為若干個(gè)調(diào)節(jié)檔以供變聲程度上的選擇;
(2)變聲的處理發(fā)生在當(dāng)前說話方的設(shè)備上,然后再將聲音信息以byte字節(jié)流的形式傳輸?shù)搅硪慌_設(shè)備。所述的步驟3)包括
(1)聲音變粗或變細(xì)分為若干個(gè)調(diào)節(jié)檔以供變聲程度上的選擇;
(2)具備“錄音”“停止” “播放”三個(gè)功能;
(3)在“錄音”前選定變聲的效果和程度,并在“停止”后,即錄音停止后,進(jìn)行聲音算法處理,在“播放”中從設(shè)備喇叭口放出變聲處理后的聲音。
本發(fā)明利用Socket機(jī)制建立通話連接,利用安卓設(shè)備的麥克風(fēng)和喇叭硬件采集和播放聲音,將模擬的自然聲音信號經(jīng)采集后轉(zhuǎn)為字節(jié)流的數(shù)字信號,并以數(shù)據(jù)流的形式經(jīng)安卓設(shè)備的處理器經(jīng)行變聲算法處理,再通過Socket經(jīng)行傳輸?shù)搅硪慌_安卓設(shè)備,從而實(shí)現(xiàn)變聲通話。本發(fā)明結(jié)合通話和變音兩方面進(jìn)行詳細(xì)的分析和探究,隨著科技的發(fā)展,本方法將會發(fā)揮更具革命性的意義。
圖I是本發(fā)明所用的Socket通信機(jī)制的連接方式以及對應(yīng)的socket對象結(jié)構(gòu) 圖2是本發(fā)明所用變聲方法的流程 圖3是實(shí)施例的程序主界面;
圖4是實(shí)施例的服務(wù)端截 圖5是實(shí)施例的客戶端截圖;圖6是實(shí)施例的本地測試端截 圖7是變聲前后音頻圖。
具體實(shí)施例方式基于安卓的無線網(wǎng)絡(luò)下變聲通話的方法包括如下步驟
1)基于安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備,均具備錄音、放音以及無線網(wǎng)絡(luò)連接的功能,使用無線網(wǎng)絡(luò)網(wǎng)絡(luò)模式連接到同一個(gè)無線網(wǎng)絡(luò)信號下,經(jīng)行通話;
2)在通話的過程中,通話雙方選擇變聲或原聲模式,而且在變聲模式中,實(shí)時(shí)調(diào)節(jié)聲音變粗或者變細(xì); 3)安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備在未建立任何通話連接的狀態(tài)下,進(jìn)行本地的變聲測試。所述的步驟I)包括
(1)安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備,已連接到統(tǒng)一無線網(wǎng)絡(luò)下后,其中一個(gè)作服務(wù)端,另一個(gè)作客戶端,使用Socket機(jī)制進(jìn)行配對連接,數(shù)據(jù)流量通過無線網(wǎng)絡(luò)傳輸;
(2)安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備在通話中均可選四個(gè)模式“雙向?qū)υ挕?、“只接聽”、“只發(fā)送”、“暫?!?
(3)安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備中作為服務(wù)端的一方能獲取自身設(shè)備所處網(wǎng)絡(luò)的IP地址;
(4)安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備中作為客戶端的一方發(fā)起通話連接請求。所述的步驟2)包括
(1)聲音變粗或變細(xì)分為若干個(gè)調(diào)節(jié)檔以供變聲程度上的選擇;
(2)變聲的處理發(fā)生在當(dāng)前說話方的設(shè)備上,然后再將聲音信息以byte字節(jié)流的形式傳輸?shù)搅硪慌_設(shè)備。所述的步驟3)包括(見圖5)
(1)聲音變粗或變細(xì)分為若干個(gè)調(diào)節(jié)檔以供變聲程度上的選擇;
(2)具備“錄音”“停止” “播放”三個(gè)功能;
(3)在“錄音”前選定變聲的效果和程度,并在“停止”后,即錄音停止后,進(jìn)行聲音算法處理,在“播放”中從設(shè)備喇叭口放出變聲處理后的聲音。
實(shí)施例下面結(jié)合附圖及具體實(shí)施方向?qū)Ρ景l(fā)明做進(jìn)一步的詳細(xì)描述。I.主界面(如圖3):
兩個(gè)安卓設(shè)備連接到同一個(gè)無線網(wǎng)絡(luò)網(wǎng)絡(luò)下(一般指同一個(gè)路由器產(chǎn)生的無線網(wǎng)絡(luò)),啟動軟件,選擇作為服務(wù)端,或者客戶端啟動來進(jìn)行通話,也可以選擇只在本地測試。2.服務(wù)端中(見圖4):
點(diǎn)擊“獲取IP地址”按鈕,可以獲得本地IP并創(chuàng)建Socket等待客戶端的連接請求。得到客戶端的連接請求后,服務(wù)端會創(chuàng)建錄音和播放兩個(gè)線程,獨(dú)立工作,開始通話,線程工作原理下面會提到。3 客戶端中(見圖5):在客戶端中輸入服務(wù)端的IP地址,點(diǎn)擊“開始通話”??蛻舳藭?chuàng)建錄音和播放兩個(gè)線程,獨(dú)立工作,開始通話,線程工作原理下面會提到。4.本地測試中(見圖6):
為了在不連接的情況下用戶可以體驗(yàn)變聲的樂趣和效果。我們加入了本地測試的功能,本地測試可以實(shí)現(xiàn)錄音,變聲,播放的功能。重點(diǎn)在于體驗(yàn)變聲效果,而不是通話。5.錄音,播放線程中
線程是一個(gè)多任務(wù)概念,使得單線運(yùn)行的CPU可以支持多任務(wù)同時(shí)進(jìn)行。通話過程有錄制本地聲音和播放對方聲音兩個(gè)目的,所以必須寫成線程獨(dú)立工作。錄音線程用AudioRecord類獲得音頻數(shù)據(jù)流,并直接處理變聲,寫入socket.getOutputStream(),發(fā)送到另一臺機(jī)器。變聲過程下面會提到。 播放線程通過socket. getlnputStreamO得到另一臺設(shè)備發(fā)送過來的音頻數(shù)據(jù)流,調(diào)用AudioTrack播放音頻數(shù)據(jù)流。6.變音方法
變音算法流程圖(見圖2),主要可以分為4個(gè)步驟
1)獲取音頻數(shù)據(jù)流 這一步已經(jīng)由錄音線程完成
2)確定基音周期長度并定位
根據(jù)聲音自動確定長度的算法太復(fù)雜,不適合移動設(shè)備高速運(yùn)行,所以我們直接給定一個(gè)平均長度200,長度確定后位置自然確定。3)刪除或者增加基音周期
對于給定的伸縮比change_rat,確定每隔change_num =| [I/(l_change_rat) ] |個(gè)基音周期增加或者刪除基音周期,增加的基音周期的值,應(yīng)與前一個(gè)基音周期的值相等。得到的數(shù)據(jù)流長度記為length2,變化前的長度為Iengthl。其中change_rat可以由客戶端或者服務(wù)端的“變粗” “變細(xì)” “原聲” 3個(gè)按鈕進(jìn)行調(diào)節(jié),默認(rèn)change_rat=l,即不變聲。4)伸縮語音長度到原始長度
把處理后的數(shù)據(jù)流增長或者縮短到原來的長度 設(shè) An = n*length2/lengthl ; Bn = [An] ; Cn = Bn+1 ;
Xn為縮短或增長后的數(shù)據(jù)流。Y(An) = X(Bn) + (An - Bn) *( X(Cn) - X(Bn)
得到Y(jié)n就是變回原長的數(shù)據(jù)流
7.四種通話模式的實(shí)現(xiàn)
一開始我們對暫停功能的實(shí)現(xiàn)時(shí)通過結(jié)束錄音線程和播放線程,重新開始時(shí)再新建線程,但是這樣經(jīng)常失敗,照成程序意外停止。具體的原因有很多,比如客戶端的錄音線程已經(jīng)停止,但是服務(wù)端的播放線程還在繼續(xù),由于沒有收到客戶端發(fā)送過來的socket,服務(wù)端就出現(xiàn)了錯(cuò)誤。于是我們改變思路,設(shè)置了 ke印P和ke印R兩個(gè)標(biāo)志位,
當(dāng)ke印P為真時(shí)播放線程正常播放數(shù)據(jù);
當(dāng)ke印P為假時(shí)播放線程播放0數(shù)組;
當(dāng)keepR為真時(shí)錄音線程寫入正常麥克風(fēng)采集到的數(shù)據(jù);當(dāng)keepR為假時(shí)錄音線程往socket中寫入0數(shù)組;
通過keepP和keepR的組合,我們設(shè)置了 4中通話模式分別是雙向通話(keepP真keepR真),只接聽(keepP真keepR假),只發(fā)送(keepP假keepR真)和暫停(keepP假keepR假)??偨Y(jié)
本發(fā)明的一種基于安卓的無線網(wǎng)絡(luò)下變聲通話的方法,完成了再安卓設(shè)備上的變聲通話功能,增加了安卓平臺軟件的多樣性,更能豐富人們?nèi)粘I畹膴蕵坊顒印?br>
權(quán)利要求
1.一種基于安卓的無線網(wǎng)絡(luò)下變聲通話的方法,其特征在于包括如下步驟 1)基于安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備,均具備錄音、放音以及無線網(wǎng)絡(luò)連接的功能,使用無線網(wǎng)絡(luò)網(wǎng)絡(luò)模式連接到同一個(gè)無線網(wǎng)絡(luò)信號下,經(jīng)行通話; 2)在通話的過程中,通話雙方選擇變聲或原聲模式,而且在變聲模式中,實(shí)時(shí)調(diào)節(jié)聲音變粗或者變細(xì); 3)安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備在未建立任何通話連接的狀態(tài)下,進(jìn)行本地的變聲測試。
2.根據(jù)權(quán)利要求I所述的一種基于安卓的無線網(wǎng)絡(luò)下變聲通話的方法,其特征在于所述的步驟I)包括 (1)安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備,已連接到統(tǒng)一無線網(wǎng)絡(luò)下后,其中一個(gè)作服務(wù)端,另一個(gè)作客戶端,使用Socket機(jī)制進(jìn)行配對連接,數(shù)據(jù)流量通過無線網(wǎng)絡(luò)傳輸; (2)安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備在通話中均可選四個(gè)模式“雙向?qū)υ挕?、“只接聽”、“只發(fā)送”、“暫停”; (3)安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備中作為服務(wù)端的一方能獲取自身設(shè)備所處網(wǎng)絡(luò)的IP地址; (4)安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備中作為客戶端的一方發(fā)起通話連接請求。
3.根據(jù)權(quán)利要求I所述的一種基于安卓的無線網(wǎng)絡(luò)下變聲通話的方法,其特征在于所述的步驟2)包括 (1)聲音變粗或變細(xì)分為若干個(gè)調(diào)節(jié)檔以供變聲程度上的選擇; (2)變聲的處理發(fā)生在當(dāng)前說話方的設(shè)備上,然后再將聲音信息以byte字節(jié)流的形式傳輸?shù)搅硪慌_設(shè)備。
4.根據(jù)權(quán)利要求I所述的一種基于安卓的無線網(wǎng)絡(luò)下變聲通話的方法,其特征在于所述的步驟3)包括 (1)聲音變粗或變細(xì)分為若干個(gè)調(diào)節(jié)檔以供變聲程度上的選擇; (2)具備“錄音”“停止” “播放”三個(gè)功能; (3)在“錄音”前選定變聲的效果和程度,并在“停止”后,即錄音停止后,進(jìn)行聲音算法處理,在“播放”中從設(shè)備喇叭口放出變聲處理后的聲音。
全文摘要
本發(fā)明公開了一種在連接無線網(wǎng)絡(luò)下的變聲通話方法。它包括如下步驟1)基于安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備,均具備錄音、放音以及無線網(wǎng)絡(luò)連接的功能,使用無線網(wǎng)絡(luò)網(wǎng)絡(luò)模式連接到同一個(gè)無線網(wǎng)絡(luò)信號下,經(jīng)行通話;2)在通話的過程中,通話雙方選擇變聲或原聲模式,而且在變聲模式中,實(shí)時(shí)調(diào)節(jié)聲音變粗或者變細(xì);3)安卓系統(tǒng)的手機(jī)或平板電腦兩個(gè)設(shè)備在未建立任何通話連接的狀態(tài)下,進(jìn)行本地的變聲測試。本發(fā)明結(jié)合通話和變音兩方面進(jìn)行詳細(xì)的分析和探究,隨著科技的發(fā)展,本方法將會發(fā)揮更具革命性的意義。
文檔編號G06F9/44GK102984370SQ20121046920
公開日2013年3月20日 申請日期2012年11月20日 優(yōu)先權(quán)日2012年11月20日
發(fā)明者壽紹迪, 李郞尼, 董文略, 于慧敏 申請人:浙江大學(xué)