Android的音频采集
主要使用AudioTrack和AudioRecord两个类进行操作
可参考webrtc源码:\ver789\src\modules\audio_device\main\source\android\org\webrtc\voiceengine\AudioDeviceAndroid.java
参考百度资料
http://wenku.baidu.com/view/da8fc2fb0242a8956bece4a0.html
会说话的TOM猫的原理是什么
作者: Android开发网原创
时间: 2011-08-04
很多网友对会说话的TOM猫的原理比较感兴趣,这里Android123就实现做一个简单的分析:
1. 音频采集
这点主要是通过Android设备的麦克风实时采集音频,由于Android平台的MediaRecorder类录制音频到文件,虽然可以通过空设备回调获得实时的音频流,不过为了降低开发者的难度,Android开发网推荐使用正统的AudioRecord和AudioTrack,首先我们仍然需要加入android.permission.RECORD_AUDIO这个权限。
android.media.AudioRecord类的read方法主要有3种重载形式:
int read(short[] audioData, int offsetInShorts, int sizeInShorts) //short在java中占用两个字节
int read(byte[] audioData, int offsetInBytes, int sizeInBytes) //byte在java中占用一个字节
int read(ByteBuffer audioBuffer, int sizeInBytes) //基于NIO的ByteBuffer类型
我们可以看到从麦克风中获取的音频无需经过文件系统直接通过AudioRecord类的read方法读入到我们预定的缓冲区中,这里需要注意的是采样率的大小必须有足够的缓冲区空间处理、
2. 变声处理
这点需要一些基本的音频处理方式,比如移调、变速,Android开发网推荐大家参考Adobe Audition的早期Cool Editi泄露的代码,当然音频处理算法比较多,大家可以自己实现。
3. 播放原始音频流
同样,处理完后考虑到效率我们仍然直接从内存流中播放,最简单的就是AudioTrack类,通过android.media.AudioTrack类的write方法,让Android声卡播放原始音频流。两种重载方法如下
int write(short[] audioData, int offsetInShorts, int sizeInShorts)
int write(byte[] audioData, int offsetInBytes, int sizeInBytes)
Android本身的MediaRecorder肯定是不行的,只支持amr,wav,acc,如果要做到Android,Iphone,pc通用的话,这些格式是行不通的只能找第三方编解码库
talkbox Android版用的是ilbc
的第三方编解码库,在iPhone上用的是caf
微信 Android版估计是amr估计转码的是交给腾讯强大的服务器了。
米聊 Android版和Iphone版用的都是speex
搜了下,目前支持的开源第三方库也就只有 ilbc和speex了
http://www.speex.org/downloads/
speex的官网
http://www.badlogicgames.com/wordpress/?p=1726&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+PlanetAndroidCom+%28Planet+Android%29
在Android上编译的方法
http://bbs.rosoo.net/thread-5956-1-1.html
speex音频编解码的示例
http://code.google.com/p/android-recorder/
源码,不过它又转了一次码,弄成flv了。
----------------------------------
避免链接失效,拷贝一份:
--------------------------------------------------------------
Ios实现amr编解码
Feb 5th
, 2012
介绍
学习ios第一个练手功能就是给已有产品加上语音通信功能,能够互通ios与android。这里给出自己的一些心得,希望能给他人一些参考。
资料搜集与参考
-
类似产品使用的技术
- talkbox Android版用的是ilbc的第三方编解码库,在iPhone上用的是caf
- 微信 Android版估计是amr估计转码的是交给腾讯强大的服务器了。
- 米聊 Android版和Iphone版用的都是speex
目前支持的开源第三方库也就只有 ilbc和speex了
-
考虑采用的方案
speex需要Android和ios都进入转码,工作量太大,不采用。剩下的方案就是在amr和ilbc上选择了,android支持amr,低版本不支持ilbc,
ios高版本(4.3)只支持ilbc,不能支持amr。刚开始的测试方案使用的是android将语音转ilbc,
由于我对于android开发不是太熟悉,在同事的帮助下一直没有转换成功,现在想想可能是处理问题,如果能转换成或,这种方案应该是最方便的。
ios实现amr编解码
录制
-
将语音录成原始pcm码
注意这里,虽然录制是pcm码,但出来的文件ios依然会封装一层,将其包装成pcf格式。所以就有了第二步。
-
将pcf中的pcm码取出来
-
使用libopencore库将其编成amr格式,这时可以发送给android端播放了。
播放
-
将android版本发送过来的amr解码出来
-
播放原始pcm即可
代码文件都放在github上了,有需要的可以参考一下。 https://github.com/hhuai/ios_util
分享到:
相关推荐
在Android系统中,录音通常涉及使用MediaRecorder类或其他音频API来捕获音频数据,而这些底层的库文件则负责实际的编码过程,将原始的音频信号转化为AMR-NB或AMR-WB格式,以便存储和传输。 对于开发者来说,了解...
可以将录音文件amr转为MP3方便使用,官网【http://www.sauronsoftware.it/projects/jave/jave-1.0.2.zip?PHPSESSID=rs8aq1fber3ivi1f1ff70oht15】,但是下载非常慢,没有资源分的私我就好...
免费AMR转文件软件–AMR Player,不仅可以播放使用手机所录制的*.amr音乐文件,最重要的是它能够将AMR转成MP3、WAV档,或者是将MP3、WAV档转成AMR檔。 AMR Player转出来的文件是低音质,所以文件会稍微小一点点。AMR...
AMRPlayer是一款专为处理AMR格式音频文件而设计的手机录音播放器。AMR全称为Adaptive Multi-Rate Codec,是一种广泛应用于移动通信设备上的音频编码标准,尤其在语音通话记录和手机录音中应用广泛。本文将深入探讨...
在实际应用中,AMR_NB编码技术不仅局限于手机通话,也常用于VoIP(Voice over IP)服务、录音应用以及需要高效语音压缩的其他场景。AMR_NB编码文件通常以".amr"为扩展名,可以通过特定的软件或API进行编码、解码和...
AMR(Adaptive Multi-Rate)是一种音频编码格式,常用于语音通信,因其高效压缩和良好的语音质量而被广泛应用于手机录音、VoIP等场景。本压缩包包含的资源是针对AMR格式录音的JavaScript播放解决方案,适用于网页...
首先,这款手机录音软件是一款专为NOKIA手机设计的应用程序,它可能支持各种型号的NOKIA设备,包括Symbian操作系统或其他早期的诺基亚智能手机平台。NOKIA手机以其坚固耐用和广泛的用户基础而闻名,因此,针对这一...
"安卓手机录音系统源码" 提供了一个完整的解决方案,让开发者能够深入理解录音机制并进行定制化开发。源码由奥创软件研究院提供,旨在促进学习和交流,但不应用于商业目的。 首先,我们需要了解安卓录音的基本原理...
在实际应用中,AMR文件常用于手机之间的语音通话,以及VoIP服务。它们可以通过电子邮件、短信或彩信进行发送,并在兼容的设备上播放。由于AMR格式的压缩效率高,它也常用于电话录音和语音识别软件中。 理解AMR IF2...
在IT领域,音频格式转换是一项常见的任务,尤其对于...总之,AMR到WAV的转换是一个实用的技巧,尤其对于需要在电脑上编辑或播放手机录音的用户。了解这个过程并掌握合适的工具,能帮助你更好地管理和利用你的音频资源。
在手机自带录音场景中,通常选择`MediaRecorder.AudioSource.MIC`,表示使用麦克风作为录音源。 3. **编码格式(OutputFormat)**:`setOutputFormat()`方法用于设置录音文件的编码格式。常见的有AMR_NB(窄带AMR)...
AMR(Adaptive Multi-Rate)是主要用于语音编码的一种高效压缩格式,常见于手机录音和其他移动通信设备。然而,由于其格式的特殊性,AMR文件在大多数网页浏览器和在线平台不支持直接播放。 MP3,全称MPEG-1 Audio ...
- 录音文件通常保存为特定格式,可能是常见的WAV、AMR或MP3等音频格式,具体取决于软件设置和设备的兼容性。 - 在此案例中,应用名为“DuDuRecorderv5.3.sis”,这是一个Symbian系统的安装文件,用于将软件安装到...
AMR(Adaptibve Multi-Rate)是被各大手机厂商广泛认可的一种保存手机录音的格式。 由于AMR文件的容量很小——每秒钟的AMR音频大小可控制在1K左右,因此即便是长达1分钟的音频文件,也能符合中国移动现行的彩信不...
在Android平台上,录音和播放音频是一项常见的功能,广泛应用于各种应用程序,如社交应用、教育软件、游戏等。本文将深入探讨如何使用Android的MediaRecorder类实现录音功能,并通过MediaPlayer类播放录制的音频资源...
amr格式的音频文件,是当年步步高手机广告音乐,可以用来测试微信公众号被动回复语音信息.
AMR格式通常与手机通话录音、语音识别等场景关联,但在Web开发中,为了在浏览器中播放AMR音频,我们需要一些额外的技术支持。在这个压缩包中,包含了以下几个关键文件: 1. `681.amr`:这是一个实际的AMR音频文件,...
“下载到手机客户端”则是相反的过程,使用FileTransfer的download方法,指定远程文件的URL和本地存储的路径。PhoneGap会处理下载过程,并在完成时触发相应的回调函数。 在提供的文件名列表中,`download.html`可能...
1. **Android 录音格式**:在Android系统中,录音默认格式通常是AMR或AAC。AMR(Adaptive Multi-Rate)是3GPP标准的音频编码格式,适用于节省存储空间,而AAC(Advanced Audio Coding)则提供了更高的音质。这两种...