|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
很少去思考,没有去多问几个为什么。这是学习的大忌,我认识到了自己学习方法上的错误。孔子说,学而不思则罔,思而不学则殆。一点也没错,学和思是要结合的,这样才能进步。现在回想一下,我学到了什么?自己也无言以对了。如今挪动端已不单单范围于文本、图片这些pc平台上的罕见信息范例,语音的利用愈见频仍,因而前段工夫萌发了个设法:假如在挪动端对语音内容做处置,提取特性出来构建关头词库是不是能够对这些语音举行分类、搜刮,因而花了一段工夫研讨android,本文从音频的录制、处置来纪录总结,辨认下篇放上。
1、音频体系的架构
安卓体系里的音频模块可分别为几层:硬件、驱动、硬件笼统层、硬件与java库之间的“中介”、Framework(供app挪用的接口都封装在这层)、实践用户可视的app。
2、语音录制
处置语音录制的类次要4个:AudioTrack、AudioRecorder、MediaPlayer和MediaRecorder,都在android.media包下,MediaRecorder的利用绝对复杂,不外绝对的是没法处置一些底层的操纵,比方没法对音频举行处置。
除下面的类库完成外,音频体系实践挪用了更加底层的服务来完成音频的收罗,这就是AudioFlinger和AudioPolicyService。
AudioRecord利用:
1、创立AudioRecord对象
Java1
2
3
4
5
6
7
8
9
10
11
AudioRecord(
intaudioSource,
intsampleRateInHz,
intchannelConfig,
intaudioFormat,
intbufferSizeInBytes)
参数申明
AudioSource音频收罗来历
SampleRateInHz录制频次
channelConfig录制通道
AudioFormat录制编码格局
BufferSize录制缓冲巨细,能够经由过程getMinBufferSize来猎取
getMinBufferSize这个接口前往了要乐成创立一个AudioRecordobject所需的最小buffersize。
2、监听用户界面操纵
Java1
publicvoidsetOnClickListener(View.onClickListenerl)
3、读
Java1
2
3
4
5
6
7
publicintread(
byte[]audioData,
intoffsetInBytes,
intsizeInBytes)
audioData是一个用来存储音频的字节数组
4、写
写操纵次要触及几个类:
java.io.File;
java.io.FileInputStream;
java.io.FileOutputStream;
利用:
Java1
2
3
FileOutputStreamfos=null;
fos.write(audiodata);//将上一步失掉的字节数组写进到文件中
2、音频处置
一样平常旌旗灯号处置手艺接纳疾速傅立叶变更,卷积变更和逆傅立叶变更来完成音频处置。
音频处置大抵两类:变频、变速、变调。我们录到的声响为时域旌旗灯号,必要使用旌旗灯号处置手艺将时域转成频域(指在对函数或旌旗灯号举行剖析时,剖析其和频次有关部分,而不是和工夫有关的部分),然后用频谱迁徙手艺来对旌旗灯号处置,最初再将频域旌旗灯号转换回时域。
不管是学习Objective-C语言,还是学习ios,我都只是跟着书上的例子,在苹果机上,在Xcode和InterfaceBuilder开发环境中,按部就班的“抄”些应用程序。 |
|