一种基于Android去除语音聊天中杂音的实现方法技术

技术编号:23606776 阅读:40 留言:0更新日期:2020-03-28 07:22
本发明专利技术涉及Android技术领域,特别涉及一种去除语音聊天中杂音的实现方法:一、接收对方发来语音;二、对音频数据进行采集;三、将获取到的音频数据流进行解码;四、进行回声消除处理;五、进行噪声消除处理;六、播放语音。本发明专利技术解决了语音聊天中接收到的声音含有杂音听不清的问题。

An implementation method of removing noise in voice chat based on Android

【技术实现步骤摘要】
一种基于Android去除语音聊天中杂音的实现方法
本专利技术涉及Android
,特别涉及一种基于Android去除语音聊天中杂音的实现方法。
技术介绍
随着智能手机的出现与普及,Android平台以其优越的性能、美观的界面,受到越来越多的消费者的青睐,从其平台上衍生出了大量有趣实用的APP,特别如微信这类的社交软件,人们在上面除了可以和朋友、家人进行短信交流甚至还可以语音对话以及语音聊天,其逐渐替代了以往的电话交流方式,成了人们生活中不可或缺的一部分。语音对话与语音聊天在不同的环境下会有不同的效果,在完全密封或半封闭的环境下就会产生回声,而在人多吵杂的地方又会出现噪声,导致接收方无法听清楚。本专利技术基于SpeechX技术的基础上,通过一定的算法,基本解决了此类问题。
技术实现思路
本专利技术解决的技术问题在于提供一种基于Android去除语音聊天中杂音的实现方法;本专利技术解决了语音聊天中接收到的声音含有杂音听不清的问题。本专利技术解决上述技术问题的技术方案是:一、接收对方发来语音;二、对音频数据进行采集;三、将获取到的音频数据流进行解码;四、进行回声消除处理;五、进行噪声消除处理;六、播放语音。所述的方法具体包括如下步骤:步骤一、接收对方发来语音;步骤二、对音频数据进行采集,所述的采集主要是采用MediaRecorder进行音频捕获,相较于调用系统内置的应用程序,灵活度更高,便于在UI界面上布局,而且系统封装的很好,便于使用;<br>步骤三、将获取到的音频数据流进行解码,所述的解码技术:首先初始化解码器,分离视频文件的音轨和视频轨道,获得媒体文件的位置;然后启动MediaCodec,解码成PCM,获取到PCM数组,并存入PCM数据块中;最后使用时从PCM数据块取出数据;步骤四、进行回声消除处理,所述的回声消除方法:1、初始化回音消除参数;2、计算采样时长,即是10毫秒,还是20毫秒,还是30毫秒;3、调用SpeechX的AudioAECProc函数执行回音消除;4、消除完毕后退出;步骤五、进行噪声消除处理,所述的噪声消除方法:1、初始化降噪参数;2、使用speechx_preprocess_ctl函数进行8K与16K降噪;3、释放降噪;步骤六、最后播放语音,播放时采用AudioTrack接口,与MediaCodec对应。本专利技术的有益效果:对接收到的语音进行回声与降噪处理,实现了语音聊天无关环境的目的。有效地解决了语音聊天中接收到的声音含有杂音听不清的问题。附图说明下面结合附图对本专利技术进一步说明:图1为本专利技术的流程图。具体实施方式如图1所示,本专利技术采用如下步骤:步骤一、接收对方发来语音;步骤二、对音频数据进行采集,所述的采集主要是采用MediaRecorder进行音频捕获,相较于调用系统内置的应用程序,灵活度更高,便于在UI界面上布局,而且系统封装的很好,便于使用;如:publicvoidinitSoundRecord(intaudioSource,intsampleRateInHz,intchannelConfig,intaudioFormat,intbufferSizeInBytes){staticfinalintfrequency=8000;staticfinalintchannelConfiguration=AudioFormat.CHANNEL_CONFIGURATION_MONO;staticfinalintaudioEncoding=AudioFormat.ENCODING_PCM_16BIT;intrecBufSize,playBufSize;AudioRecordaudioRecord;recBufSize=AudioRecord.getMinBufferSize(frequency,channelConfiguration,audioEncoding);audioRecord=newAudioRecord(MediaRecorder.AudioSource.MIC,frequency,AudioFormat.CHANNEL_CONFIGURATION_MONO,AudioFormat.ENCODING_PCM_16BIT,recBufSize);}三、将获取到的音频数据流进行AAC编码,采用AAC编码可以实现高压缩比,比一般的好很多,而且音频不失真;如:jintJava_InitAudioEncodec(JNIEnv*env,jobjectthiz,jintsampling_rate,jintaudioLevel){if(encodeFlag==1||audioLevel<3||audioLevel>8)return0;intframe_size;if(sampling_rate==8000){audio_Leval=0;capAudioLength=160;capAudioBitrate=8000;}elseif(sampling_rate==16000){audio_Leval=1;capAudioLength=320;capAudioBitrate=16000;}elseif(sampling_rate==32000){audio_Leval=2;capAudioLength=640;capAudioBitrate=32000;}elsereturn0;}tmp_Level=audioLevel;//设置等级15kbit/sspeex_mode=speex_lib_get_mode(audio_Leval);enc_state=speex_encoder_init(speex_mode);speex_encoder_ctl(enc_state,SPEEX_SET_QUALITY,&tmp_Level);return1;}四、进行回声消除处理,所述的回声消除方法:1、初始化回音消除参数;2、计算采样时长,即是10毫秒,还是20毫秒,还是30毫秒;3、调用SpeechX的AudioAECProc函数执行回音消除;4、消除完毕后退出;如:intJava_InitAudioAEC(JNIEnv*env,jobjectthiz,jintframe_size,jintfilter_length,jintsampling_rate){if(nInitSuccessFlag==1)return1;nFrameSize=frame_size;nFilterLen=filter_length;nSampleRate=samp本文档来自技高网...

【技术保护点】
1.一种基于Android去除语音聊天中杂音的实现方法,其特征在于:一、接收对方发来语音;二、对音频数据进行采集;三、将获取到的音频数据流进行解码;四、进行回声消除处理;五、进行噪声消除处理;六、播放语音;从而本专利技术解决了语音聊天中接收到的声音含有杂音听不清的问题。/n

【技术特征摘要】
1.一种基于Android去除语音聊天中杂音的实现方法,其特征在于:一、接收对方发来语音;二、对音频数据进行采集;三、将获取到的音频数据流进行解码;四、进行回声消除处理;五、进行噪声消除处理;六、播放语音;从而本发明解决了语音聊天中接收到的声音含有杂音听不清的问题。


2.根据权利要求1所述的基于Android平台的一种去除语音聊天中杂音的实现方法,其特征在于:削除回声与噪声主要是依据SpeechX技术并在其基础上增添一定的算法实现;所述的方法具体包括如下步骤:
步骤一、接收对方发来语音;
步骤二、对音频数据进行采集,所述的采集主要是采用MediaRecorder进行音频捕获,相较于调用系统内置的应用程序,灵活度更高,便于在UI界面上布局,而且系统封装的很好,便于使用;
步...

【专利技术属性】
技术研发人员:陈林张来卿庞严冬
申请(专利权)人:珠海横琴盛达兆业科技投资有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1