当前位置: 首页 > news >正文

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

上篇讲了语音通话,本篇讲录音。录音功能就是把录到的音频保存成文件。保存文件的格式支持两种:一是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收到后保存成相应的文件。

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

http://www.lryc.cn/news/262868.html

相关文章:

  • 2023.12.17 关于 Redis 的特性和应用场景
  • 智能优化算法应用:基于社会群体算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • Kotlin 笔记 -- Kotlin 语言特性的理解(二)
  • 数据结构【1】:数组专题
  • 【Spring】Spring 事务
  • Ubuntu 虚拟机环境,编译AOSP源码
  • 2023.12.18杂记
  • 智能优化算法应用:基于阿基米德优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • K8s内容器拓扑图工具
  • 掌握 Babel:让你的 JavaScript 与时俱进(上)
  • Mysql进阶-InnoDB引擎事务原理及MVCC
  • 「X」Embedding in NLP|神经网络和语言模型 Embedding 向量入门
  • JVM-11-运行时栈帧结构
  • 【经典LeetCode算法题目专栏分类】【第6期】二分查找系列:x的平方根、有效完全平方数、搜索二位矩阵、寻找旋转排序数组最小值
  • 【大麦小米学量化】使用xtquant调用迅投MiniQMT客户端定时操作逆回购,再也不担心忘了赚零花钱了(含完整源代码)
  • php hyperf 读取redis,存储到数据库
  • 云原生之深入解析K8S 1.27新特性如何简化状态服务跨集群平滑迁移
  • 鸿蒙OS:打破界限的操作系统新星
  • 预测性维护在汽车制造行业中的应用
  • 分布式链路追踪 —— 基于Dubbo的traceId追踪传递
  • 【uniapp小程序-上拉加载】
  • ubuntu添加路由
  • python图像二值化处理
  • 4.配置系统时钟思路及方法
  • 使用openMVS库,在VS2022中启用c++17标准编译仍然报错
  • uniGUI之上传文件UniFileUploadButton
  • 福德植保无人机工厂:创新科技与绿色农业的完美结合
  • JsRpc技术服务搭建,最简单的JSRPC,Flask+undetected-chromedriver
  • <优化接口设计的思路>:接口安全
  • Gitee基础知识