news 2026/6/23 21:12:02

一款智能手表上语音通话时的音频设备动态切换

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一款智能手表上语音通话时的音频设备动态切换

手机上打电话时通常会支持在扬声器和听筒以及蓝牙耳机之间的动态音频设备切换。我开发过的一款手表也有这样的功能,只不过由于是手表,没有了听筒,动态音频设备切换就变成了在扬声器以及蓝牙耳机之间了。本文就讲讲这款手表上动态切换音频设备是怎么做的。

1, 手表SoC硬件框图

switch5

这款智能手表的SoC为了降成本,把codec芯片和蓝牙芯片都集成到SoC里面,即codec芯片和蓝牙芯片内置了,示意如上图。打电话时,当声音从mic和speaker采集和播放,可以叫做codec电话。这时涉及3个core,分别是AP/ADSP/CP。当声音从蓝牙耳机采集和播放,可以叫做蓝牙电话。这时涉及4个core,分别是AP/ADSP/CP/BT。 各个核之间通过IPC交互。音频设备动态切换是指在语音通话过程中内置codec device 和蓝牙device之间的切换。

2, 语音通话相关软件模块

下图给出了语音通话时涉及到的相关软件模块:

switch2

上图中左边一列是打电话时CP的相关模块处理,中间一列是AP以及ADSP的相关模块处理,右边一列是打蓝牙电话时BT的相关模块处理。语音通话均是由phone APP (UI) 发起。当是内置codec电话时,仅涉及左边两列模块(即蓝牙相关模块不涉及)。Phone APP调用左边一列的相关模块,建立起CP上的voice path。Phone APP调用中间一列的相关模块,建立起ADSP上的voice path以及使能codec等。AP audio会给ADSP发“DEVICE_SELECT” IPC CMD,告诉ADSP选用CODEC device。当是蓝牙电话时,三列模块均涉及。Phone APP调用左边一列的相关模块,建立起CP上的voice path。Phone APP调用中间一列的相关模块,建立起ADSP上的voice path。AP audio会给ADSP发“DEVICE_SELECT” IPC CMD,告诉ADSP选用BT device。Phone APP调用右边一列的相关模块,建立起BT上的voice path。不管是codec 电话还是蓝牙电话,均是由数据消耗者来发中断驱动的。codec 电话时消耗者是codec,codec会定期的(比如每10ms)通过ADMA中断来驱动ADSP运转起来,ADSP也会给CP发中断驱动CP运转起来,完成整个通话的处理。BT 电话时消耗者是BT,BT会定期的给ADSP发中断来驱动ADSP运转起来,ADSP也会给CP发中断驱动CP运转起来,完成整个通话的处理。

下图给出了内置codec通话时的data path:

switch3

从上图看出,内置codec语音通话, 上行时mic采集语音数据通过ADMA送给ADSP,ADSP处理后通过IPC送给CP,CP处理后通过空口送给对方。下行时CP通过空口接收语音数据,处理后通过IPC把数据送给ADSP,ADSP处理后通过ADMA把数据送给扬声器播放出来。

下图给出了蓝牙通话时的data path:

switch4

从上图看出,蓝牙语音通话时,上行时蓝牙耳机采集语音数据通过蓝牙空口送给SoC上内置的BT core,BT core处理后通过IPC送给ADSP,ADSP处理后通过IPC送给CP,CP处理后通过空口送给对方。下行时CP通过空口接收语音数据,处理后通过IPC把数据送给ADSP,ADSP处理后通过IPC把数据送给BT core,BT core处理后通过蓝牙空口把数据送给蓝牙耳机播放出来。所以通话时动态切换设备,ADSP跟CP之间的交互是不需要改变,从而CP上audio相关的代码不需要改变,改变的是ADSP与codec以及BT的交互。

3, 动态切换设备处理

下面分别从控制面上和数据面上讲动态切换设备处理。

3.1 控制面上

a) 在AP/ADSP这一列上,UI通知multimedia interface 做设备切换。在BT这一列上,当从内置codec切到蓝牙时,UI通知BT adaptor enable 蓝牙。当从蓝牙切到codec时,UI通 知BT adaptor disable 蓝牙。

b) multimedia interface通知AP audio做设备切换。当从内置codec切到蓝牙时,BT adaptor 通知BT Host enable 蓝牙。当从蓝牙切到codec时,BT adaptor 通知BT Host disable 蓝牙。

c) 为了避免POP 音,AP audio 给ADSP发“MUTE” IPC CMD,让ADSP把voice stream的音量缓降为0。

d) AP audio 给ADSP发“DEVICE_SELECT” IPC CMD,把voice stream要用的新device带给ADSP。 BT Host通知BT Controller enable(当从内置codec切到蓝牙时)或者disable(当从蓝牙切到codec时) BT上的voice path。

e) ADSP收到“DEVICE_SELECT” IPC CMD,发现voice stream 已被使能且当前使用的设备和带下来的设备不一致,就知道要做设备切换。当从内置codec切到蓝牙时,将codec disable,同时做蓝牙通话的一些初始化。当从蓝牙切到内置codec时,做蓝牙通话的清除,同时将codec enable。

f) AP audio 给ADSP发“UNMUTE” IPC CMD,让ADSP把voice stream的音量从0缓变为正常值。

3.2 数据面上

前文说过,不管是codec 电话还是蓝牙电话,均是由消耗者给ADSP发中断来驱动的。Codec电话时是给ADSP发ADMA中断来驱动,蓝牙电话时是给ADSP发BT IPC中断来驱动。ADSP的这些中断服务程序以及通话处理等在动态设备切换这个功能前就有,均不需要改动。唯一需要改动的是语音增强(voice enhancement,VE)中profile的改变以及VE要重新初始化。Codec电话和蓝牙电话属于不同的场景,有不同的profile。当是codec电话时,VE在ADSP上做,当是蓝牙电话时,VE在蓝牙耳机里做。当场景改变时,VE的profile就要跟着变。profile变了,相应的VE就要重新做初始化。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 12:09:23

【python大数据毕设实战】哮喘患者症状数据可视化分析系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

作者头像 李华
网站建设 2026/6/23 16:56:53

9 个降AI率工具,MBA 必备避坑指南

9 个降AI率工具,MBA 必备避坑指南 AI降重工具:MBA论文的智能护航 MBA论文写作过程中,越来越多的学生开始依赖AI工具进行内容生成。然而,随着高校对AIGC率的严格管控,如何在保持论文原创性和学术规范的同时,…

作者头像 李华
网站建设 2026/6/23 18:39:01

Windows系统文件inetmib1.dll丢失损坏 下载修复方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/6/23 18:33:09

Boost电路的右半平面零点

3.1、为什么存在这个右零点?(关键点:先储能再释放)答:右零点不是数学上的巧合,而是由Boost电路独特的能量传输方式决定的。其物理过程可以这样理解:假设电路已经稳定工作,此时我们突…

作者头像 李华
网站建设 2026/6/23 18:39:02

【全球AI伦理治理】

AI伦理治理框架的全球协同案例 欧盟《人工智能法案》提出基于风险分级的四层治理体系,禁止社会评分等高风险应用。OECD的AI政策观察站已收录全球700余项政策倡议,形成跨国数据库共享机制。新加坡的Model AI Governance Framework为亚洲企业提供可认证的伦…

作者头像 李华
网站建设 2026/6/23 18:38:26

毕业季必看!7款免费AI写论文神器实测,一站式搞定选题、大纲到降重

如果你是正在熬夜赶Deadline的毕业生,或是面临着科研压力、被导师催稿的研究生,又或是没钱又要写高质量论文的大学生,那么这篇文章简直就是为你量身打造的!在学术的道路上,我们都曾经历过论文选题的迷茫、写作过程的煎…

作者头像 李华