一种基于安卓的无线网络下变声通话的方法

文档序号:6381757阅读:289来源:国知局
专利名称:一种基于安卓的无线网络下变声通话的方法
技术领域
本发明涉及移动通信应用技术,更确切的说是涉及一种基于安卓的无线网络下变声通话的方法,可应用于各种符合功能条件的安卓设备中。
背景技术
安卓是当今最流行的手机系统之一,它是由谷歌开发的以Linux为基础的开放源代码操作系统,主要使用于便携设备。安卓支持使用Java作为编程语言来开发应用程序,谷歌重新设计了安卓的Java,以便能提高效率和减少资源占用。
了解到安卓的四层架构,了解到我们能做的应该是应用层的事情,要调用起硬件就必须使用安卓给出的固定的API。在developer.安卓.com (安卓开发者网站)上,Google给出了所有的安卓的API,也就是对应的各种类和方法。安卓系统架构由5部分组成,分别是Linux Kernel、安卓 Runtime、Libraries、Application Framework、Applications。如果安卓系统没有提供某些API,那么只能通过在安卓系统底层编写C/C++代码来开发这些API并向安卓应用框架层提供接口。自从移动网络的改革之后,手机GPRS的流量费用下降,手机中开始增加GPRS的应用,越来越多的人开始使用GPRS网络。在进入3G时代之初,就已经出现了网络电话的软件,人们再也不需要像电信运营商支付每分钟几毛钱的通话费了,使用网络电话只消耗流量费用,尤其当你手机连接上免费的无线网络时,打网络电话更可以不需要付一分钱。socket的英文原义是“孔”或“插座”。作为4BDS UNIX的进程通信机制,取后一种意思。通常也称作〃套接字〃,用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,象一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电,有的提供110伏交流电,有的则提供有线电视节目。客户软件将插头插到不同编号的插座,就可以得到不同的服务。应用程序通常通过〃套接字〃向网络发出请求或者应答网络请求。以J2SDK-1. 3为例,Socket和ServerSocket类库位于java . net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差另IJ,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤服务器监听,客户端请求,连接确认。

发明内容
本发明的目的是克服现有技术的不足,提供一种基于安卓的无线网络下变声通话的方法。基于安卓的无线网络下变声通话的方法包括如下步骤
1)基于安卓系统的手机或平板电脑两个设备,均具备录音、放音以及无线网络连接的功能,使用无线网络网络模式连接到同一个无线网络信号下,经行通话;
2)在通话的过程中,通话双方选择变声或原声模式,而且在变声模式中,实时调节声音变粗或者变细;
3)安卓系统的手机或平板电脑两个设备在未建立任何通话连接的状态下,进行本地的变声测试。所述的步骤I)包括
(1)安卓系统的手机或平板电脑两个设备,已连接到统一无线网络下后,其中一个作服务端,另一个作客户端,使用Socket机制进行配对连接,数据流量通过无线网络传输;
(2)安卓系统的手机或平板电脑两个设备在通话中均可选四个模式“双向对话”、“只接听”、“只发送”、“暂停”;
(3)安卓系统的手机或平板电脑两个设备中作为服务端的一方能获取自身设备所处网络的IP地址;
(4)安卓系统的手机或平板电脑两个设备中作为客户端的一方发起通话连接请求。所述的步骤2)包括
(1)声音变粗或变细分为若干个调节档以供变声程度上的选择;
(2)变声的处理发生在当前说话方的设备上,然后再将声音信息以byte字节流的形式传输到另一台设备。所述的步骤3)包括
(1)声音变粗或变细分为若干个调节档以供变声程度上的选择;
(2)具备“录音”“停止” “播放”三个功能;
(3)在“录音”前选定变声的效果和程度,并在“停止”后,即录音停止后,进行声音算法处理,在“播放”中从设备喇叭口放出变声处理后的声音。
本发明利用Socket机制建立通话连接,利用安卓设备的麦克风和喇叭硬件采集和播放声音,将模拟的自然声音信号经采集后转为字节流的数字信号,并以数据流的形式经安卓设备的处理器经行变声算法处理,再通过Socket经行传输到另一台安卓设备,从而实现变声通话。本发明结合通话和变音两方面进行详细的分析和探究,随着科技的发展,本方法将会发挥更具革命性的意义。


图I是本发明所用的Socket通信机制的连接方式以及对应的socket对象结构 图2是本发明所用变声方法的流程 图3是实施例的程序主界面;
图4是实施例的服务端截 图5是实施例的客户端截图;图6是实施例的本地测试端截 图7是变声前后音频图。
具体实施例方式基于安卓的无线网络下变声通话的方法包括如下步骤
1)基于安卓系统的手机或平板电脑两个设备,均具备录音、放音以及无线网络连接的功能,使用无线网络网络模式连接到同一个无线网络信号下,经行通话;
2)在通话的过程中,通话双方选择变声或原声模式,而且在变声模式中,实时调节声音变粗或者变细; 3)安卓系统的手机或平板电脑两个设备在未建立任何通话连接的状态下,进行本地的变声测试。所述的步骤I)包括
(1)安卓系统的手机或平板电脑两个设备,已连接到统一无线网络下后,其中一个作服务端,另一个作客户端,使用Socket机制进行配对连接,数据流量通过无线网络传输;
(2)安卓系统的手机或平板电脑两个设备在通话中均可选四个模式“双向对话”、“只接听”、“只发送”、“暂停”;
(3)安卓系统的手机或平板电脑两个设备中作为服务端的一方能获取自身设备所处网络的IP地址;
(4)安卓系统的手机或平板电脑两个设备中作为客户端的一方发起通话连接请求。所述的步骤2)包括
(1)声音变粗或变细分为若干个调节档以供变声程度上的选择;
(2)变声的处理发生在当前说话方的设备上,然后再将声音信息以byte字节流的形式传输到另一台设备。所述的步骤3)包括(见图5)
(1)声音变粗或变细分为若干个调节档以供变声程度上的选择;
(2)具备“录音”“停止” “播放”三个功能;
(3)在“录音”前选定变声的效果和程度,并在“停止”后,即录音停止后,进行声音算法处理,在“播放”中从设备喇叭口放出变声处理后的声音。
实施例下面结合附图及具体实施方向对本发明做进一步的详细描述。I.主界面(如图3):
两个安卓设备连接到同一个无线网络网络下(一般指同一个路由器产生的无线网络),启动软件,选择作为服务端,或者客户端启动来进行通话,也可以选择只在本地测试。2.服务端中(见图4):
点击“获取IP地址”按钮,可以获得本地IP并创建Socket等待客户端的连接请求。得到客户端的连接请求后,服务端会创建录音和播放两个线程,独立工作,开始通话,线程工作原理下面会提到。3 客户端中(见图5):在客户端中输入服务端的IP地址,点击“开始通话”。客户端会创建录音和播放两个线程,独立工作,开始通话,线程工作原理下面会提到。4.本地测试中(见图6):
为了在不连接的情况下用户可以体验变声的乐趣和效果。我们加入了本地测试的功能,本地测试可以实现录音,变声,播放的功能。重点在于体验变声效果,而不是通话。5.录音,播放线程中
线程是一个多任务概念,使得单线运行的CPU可以支持多任务同时进行。通话过程有录制本地声音和播放对方声音两个目的,所以必须写成线程独立工作。录音线程用AudioRecord类获得音频数据流,并直接处理变声,写入socket.getOutputStream(),发送到另一台机器。变声过程下面会提到。 播放线程通过socket. getlnputStreamO得到另一台设备发送过来的音频数据流,调用AudioTrack播放音频数据流。6.变音方法
变音算法流程图(见图2),主要可以分为4个步骤
1)获取音频数据流 这一步已经由录音线程完成
2)确定基音周期长度并定位
根据声音自动确定长度的算法太复杂,不适合移动设备高速运行,所以我们直接给定一个平均长度200,长度确定后位置自然确定。3)删除或者增加基音周期
对于给定的伸缩比change_rat,确定每隔change_num =| [I/(l_change_rat) ] |个基音周期增加或者删除基音周期,增加的基音周期的值,应与前一个基音周期的值相等。得到的数据流长度记为length2,变化前的长度为Iengthl。其中change_rat可以由客户端或者服务端的“变粗” “变细” “原声” 3个按钮进行调节,默认change_rat=l,即不变声。4)伸缩语音长度到原始长度
把处理后的数据流增长或者缩短到原来的长度 设 An = n*length2/lengthl ; Bn = [An] ; Cn = Bn+1 ;
Xn为缩短或增长后的数据流。Y(An) = X(Bn) + (An - Bn) *( X(Cn) - X(Bn)
得到Yn就是变回原长的数据流
7.四种通话模式的实现
一开始我们对暂停功能的实现时通过结束录音线程和播放线程,重新开始时再新建线程,但是这样经常失败,照成程序意外停止。具体的原因有很多,比如客户端的录音线程已经停止,但是服务端的播放线程还在继续,由于没有收到客户端发送过来的socket,服务端就出现了错误。于是我们改变思路,设置了 ke印P和ke印R两个标志位,
当ke印P为真时播放线程正常播放数据;
当ke印P为假时播放线程播放0数组;
当keepR为真时录音线程写入正常麦克风采集到的数据;当keepR为假时录音线程往socket中写入0数组;
通过keepP和keepR的组合,我们设置了 4中通话模式分别是双向通话(keepP真keepR真),只接听(keepP真keepR假),只发送(keepP假keepR真)和暂停(keepP假keepR假)。总结
本发明的一种基于安卓的无线网络下变声通话的方法,完成了再安卓设备上的变声通话功能,增加了安卓平台软件的多样性,更能丰富人们日常生活的娱乐活动。
权利要求
1.一种基于安卓的无线网络下变声通话的方法,其特征在于包括如下步骤 1)基于安卓系统的手机或平板电脑两个设备,均具备录音、放音以及无线网络连接的功能,使用无线网络网络模式连接到同一个无线网络信号下,经行通话; 2)在通话的过程中,通话双方选择变声或原声模式,而且在变声模式中,实时调节声音变粗或者变细; 3)安卓系统的手机或平板电脑两个设备在未建立任何通话连接的状态下,进行本地的变声测试。
2.根据权利要求I所述的一种基于安卓的无线网络下变声通话的方法,其特征在于所述的步骤I)包括 (1)安卓系统的手机或平板电脑两个设备,已连接到统一无线网络下后,其中一个作服务端,另一个作客户端,使用Socket机制进行配对连接,数据流量通过无线网络传输; (2)安卓系统的手机或平板电脑两个设备在通话中均可选四个模式“双向对话”、“只接听”、“只发送”、“暂停”; (3)安卓系统的手机或平板电脑两个设备中作为服务端的一方能获取自身设备所处网络的IP地址; (4)安卓系统的手机或平板电脑两个设备中作为客户端的一方发起通话连接请求。
3.根据权利要求I所述的一种基于安卓的无线网络下变声通话的方法,其特征在于所述的步骤2)包括 (1)声音变粗或变细分为若干个调节档以供变声程度上的选择; (2)变声的处理发生在当前说话方的设备上,然后再将声音信息以byte字节流的形式传输到另一台设备。
4.根据权利要求I所述的一种基于安卓的无线网络下变声通话的方法,其特征在于所述的步骤3)包括 (1)声音变粗或变细分为若干个调节档以供变声程度上的选择; (2)具备“录音”“停止” “播放”三个功能; (3)在“录音”前选定变声的效果和程度,并在“停止”后,即录音停止后,进行声音算法处理,在“播放”中从设备喇叭口放出变声处理后的声音。
全文摘要
本发明公开了一种在连接无线网络下的变声通话方法。它包括如下步骤1)基于安卓系统的手机或平板电脑两个设备,均具备录音、放音以及无线网络连接的功能,使用无线网络网络模式连接到同一个无线网络信号下,经行通话;2)在通话的过程中,通话双方选择变声或原声模式,而且在变声模式中,实时调节声音变粗或者变细;3)安卓系统的手机或平板电脑两个设备在未建立任何通话连接的状态下,进行本地的变声测试。本发明结合通话和变音两方面进行详细的分析和探究,随着科技的发展,本方法将会发挥更具革命性的意义。
文档编号G06F9/44GK102984370SQ20121046920
公开日2013年3月20日 申请日期2012年11月20日 优先权日2012年11月20日
发明者寿绍迪, 李郞尼, 董文略, 于慧敏 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1