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

智能手表上的音频(四):语音通话

上篇讲了智能手表上音频文件播放。本篇开始讲语音通话。同音频播放一样有两种case:内置codec和BT。先看这两种case下audio data path,分别如下图:

                                        内置codec下的语音通话audio data path

                                     蓝牙下的语音通话audio data path

从上面两张图可以看出,这两种场景下仅仅audio driver有点差异,因此就不分别讲了。语音通话有上行(uplink,UL)和下行(downlink,DL)的概念。上行是从MIC采集到语音经处理后通过空口发送给对方,下行是通过空口收到对方发来的语音经处理后通过扬声器等播放出来。从上图可以看出上行要经过audio driver / resampler / VE(AEC/ANS/AGC) / encoder / IMS等模块,下行要经过IMS / decoder / VE(ANS/AGC) / resampler / mixer / audio driver等模块。

下图给出了语音通话时AP/ADSP/CP之间的交互:

1)  AP给ADSP发STREAM_DEV_SELECT,选择是以内置codec还是BT来采集和播放

2)  AP给CP发ENABLE_CP_STREAM,使能CP上的语音流

3)  AP给ADSP发ENABLE_ADSP_STREAM,使能ADSP上的语音流

4/5) ADSP与CP交互上下行之间的语音数据

6)  AP给ADSP发DISABLE_ADSP_STREAM,停止ADSP上的语音流

7)  ADSP给AP发DISABLE_ADSP_STREAM_ACK,告诉停止ADSP上的语音流是否OK

8)  AP给CP发DISABLE_CP_STREAM,停止CP上的语音流

9)  CP给AP发DISABLE_CP_STREAM_ACK,告诉停止CP上的语音流是否OK

4/5G上的语音通话叫VoLTE/VoNR,也就是VoIP over LTE/NR。跟传统的VoIP大体相同,主要区别是承载从以太网变成了LTE/NR,不过这对做音频的来说是黑盒不可见的,就是调调API。语音通话相对音频文件播放来说要难得多,要做好是不容易的,尤其在恶劣网络环境下要保证语音质量。VoIP涉及到的知识点又较多,我曾写过一篇文章(VoIP语音处理流程和知识点梳理)对其进行了梳理,有兴趣的可以去看看。


http://www.kler.cn/a/156349.html

相关文章:

  • Django博客网站上线前准备事项
  • 场景解决之mybatis当中resultType= map时,因某个字段为null导致返回的map的key不存在怎么处理
  • sql专题 之 sql的执行顺序
  • 案例精选 | 河北省某检察院安全运营中异构日志数据融合的实践探索
  • ubuntu20.04安装anaconda与基本使用
  • 软件测试——认识测试
  • ROS-ROS通信机制-话题通信
  • 免费的SEO外链发布工具,提升排名的利器
  • springboot集成springsecurity
  • Web3之L2 ZK-Rollup 方案-StarkNet
  • 怎样使用rtsp,rtmp摄像头低延时参于Web视频会议互动直播
  • 网工学习9-STP配置(二)
  • 抖音直播间自动发言评论软件:开发技术分析与核心代码分享
  • 二、DVP摄像头调试笔记(dvp外设驱动篇、寄存器篇)
  • js选中起始时间使用标准时间毫秒值计算一年后的当前少一天的日期(并考虑闰年)
  • 【拓展】Loguru:更为优雅、简洁的Python 日志管理模块
  • COMP4121Advanced Algorithms
  • Linux4.8、环境变量续
  • css3新增的伪类有哪些?
  • SpringTask入门案例
  • linux具体命令(持续更新中)
  • 分页助手入门以及小bug,报sql语法错误
  • OGG实现Oracle19C到postgreSQL14的实时同步
  • Elk:filebeat 日志收集工具和logstash
  • 接口获取数据控制台打印有值但是展开又没有了
  • Linux C语言 38-进程间通信IPC之信号