基于 Android AudioRecord 音频采集与分发(PCM)
- 小爱、小度语言类 SDK 的音频流输出
- 录音相关功能
- 音频编辑处理
PCM 为无损的脉冲数据格式,例如对音频进行一些增益修改都必须先获取 PCM 流。 开发内容:降噪、回声消除、音效处理
AudioRecord4Android 采用双线程和双队列的形式(生产和消费队列),采集 pcm 一个专门的线程处理,dispatch 分发来做一个线程
建议使用 Lame 库(c) 进行 pcm to mp3 的编码转化
默认采样率 Java 和 Lame 48KHz
- 48KHz采样率的声音就是要花费48000个数据来描述1秒钟的声音波形。
- 量化精度(位宽) 每个音频采样点都需要一个数值来表示大小,通常是 4/8/16/32 bit 位数约多音质约好,数据存储占用也会更大。
- 声道 channels 音频的采集和播放是可以叠加的,因此,可以同时从多个音频源采集声音,并分别输出到不同的扬声器,故声道数一般表示声音录制时的音源数量或回放时相应的扬声器数量。 单声道(Mono)和双声道(Stereo)或叫立体声比较常见,顾名思义,前者的声道数为1,后者为2。例如歌唱应用场景中有的声道只录制干人声、有的声道录制 BGM 或者 干人声+BGM
采样率 * 采样位数(位宽) * 声道数 例如 44.1KHz * 16 * 2 = 176.4KBps ,即每秒需要录制的资源大小