智能手表上的音频(五):录音

上篇讲了语音通话,本篇讲录音。录音功能就是把录到的音频保存成文件。保存文件的格式支持两种:一是PCM(16K采样)的WAV格式,二是AMR-NB(8k采样)的AMR格式。WAV格式简单:44字节的文件头+PCM 数据,示意如下图。网上有很多这方面的讲解,这里就不细讲了。

AMR文件格式相对复杂一些,先是文件头,后面跟着一帧一帧的数据,示意如下图:

文件头占6个字节,具体内容是"#!AMR/n",用16进制数字表示就是"23 21 41 4D 52 0A"。下图是用文本格式打开的AMR文件,可以看到前6个字节的文件头。

从图看出,音频帧也分两部分:帧头和帧内容。帧头占一个字节(8个bit),各个比特的含义已在图中表示出来,其中P表示0,FT占4个比特,从二进制的0000到0111,共8个值,对应AMR-NB的8种码率。Q表示quality,为1时表示好帧,为0时表示坏帧。帧内容里放的是20毫秒时长的用AMR-NB编码的码流数据。帧内容的大小由AMR-NB的码率决定,以码率为12.2kbps为例,每帧码流大小是122000/50=244bit(因为每帧20ms,所以1秒50帧)。244/8=30.5byte,取整就是31byte。再加上1byte的帧头,音频帧大小就是32byte。下表列出了各种码率下的帧头内容以及帧大小等。

录音主要分普通录音(对着MIC讲话,把录到的音频保存成文件)和电话录音(把通话过程中的音频录下来保存成文件,又可分为只录对方声音和对方自己声音一起录两种形式)。普通录音和电话录音在处理上是有明显差异的。首先看普通录音的,示意如下图:

从上图看出,每隔固定时长从驱动获得48k的PCM数据,如要保存成WAV格式就重采样成16k,如要保存成AMR格式,不仅重采样成8K, 而且好要做AMR-NB编码得到码流。最后通过IPC把音频数据从ADSP发给AP,AP收到后保存成相应的文件。

再来看电话录音,示意如下图:

从上图看出,录音的音频数据是从ADSP-CP的sharememory里取的(ADSP-CP的sharememory放着上下行的音频数据)。音频数据取出后有可能要做混音(录对方和自己的音频时)和重采样以及AMR-NB编码(保存成AMR文件时)。最后通过IPC把音频数据从ADSP发给AP,AP收到后保存成相应的文件。

至此智能手表上的音频整个系列就讲完了,包括架构、驱动和基本功能(听音频文件、打电话和录音)。

相关推荐
REDcker5 天前
WebCodecs VideoDecoder 的 hardwareAcceleration 使用
前端·音视频·实时音视频·直播·webcodecs·videodecoder
gihigo19985 天前
基于TCP协议实现视频采集与通信
网络协议·tcp/ip·音视频
山河君5 天前
四麦克风声源定位实战:基于 GCC-PHAT + 最小二乘法实现 DOA
算法·音视频·语音识别·信号处理·最小二乘法·tdoa
音视频牛哥5 天前
Android平台RTMP/RTSP超低延迟直播播放器开发详解——基于SmartMediaKit深度实践
android·人工智能·计算机视觉·音视频·rtmp播放器·安卓rtmp播放器·rtmp直播播放器
qq_416276425 天前
通用音频表征的对比学习
学习·音视频
美狐美颜sdk5 天前
Android全局美颜sdk实现方案详解
人工智能·音视频·美颜sdk·视频美颜sdk·美狐美颜sdk
EasyDSS5 天前
私有化部署EasyDSS视频点播能力:全链路视频技术赋能,打造企业级视听新体验
音视频·hls·m3u8·点播技术·智能转码
qq_416276425 天前
DeLoRes——一种通用的音频表征学习新方法(DeLoRes(基于 Barlow Twins 的冗余最小化方法)
学习·音视频
Q_4582838685 天前
从定位到视频:808 + 1078 在各行业的落地实践
音视频
山顶望月川5 天前
实测MiniMax-Hailuo-02:当“开工大吉“变成“无字天书“,国产AI视频模型的能与之不能
人工智能·音视频