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

news/2025/10/23 8:22:01/文章来源:https://www.cnblogs.com/talkaudiodev/p/19127845

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

 

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就要重新做初始化。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/943885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

题解:P10257 [COCI 2023/2024 #5] Zlagalica

远古时期做的题了没想到竟然能写题解。 思路 模拟。其实题面已经把思路给出来了,强行覆盖即可。 这里只讲几个需要注意的点。因为没有限制高度,所以把初始点放在最中间(旁边也可以),输出的时候像四周找就可以了。…

AI代码辅助工具标准使用场景

✅ 一、基础编码场景(高频、低风险、强烈推荐)场景 说明 示例提示(注释)1. 根据注释生成函数 写好中文注释,AI 自动生成完整函数体 // 校验手机号格式是否合法2. 生成 DTO/VO/Entity 转换逻辑 对象间属性映射,避…

CRM的终结与重生:基于SOP的一体化企业协同新范式

——从孤立的客户管理到以客户为中心的企业运营系统摘要:本文批判了传统CRM系统将“客户关系管理”狭隘化为销售部门自动化工具的现状。基于二十多年的行业实践研究,我们提出:CRM的本质是企业的“战略运营框架(S&a…

实用指南:Coze源码分析-资源库-删除数据库-后端源码-流程/核心技术/总结

实用指南:Coze源码分析-资源库-删除数据库-后端源码-流程/核心技术/总结2025-10-23 08:13 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: a…

2025年10月北京GEO优化公司推荐:主流公司列表评测指南

引言与现状分析 当“北京GEO优化公司”成为搜索热词,背后通常是三类真实场景:一是快消、制造、教育、律所等头部品牌,需要在DeepSeek、豆包、通义千问、元宝、Kimi等主流AI平台同步占位;二是成长型公司预算有限,却…

2025年10月北京geo优化公司推荐:排行榜与避坑指南

引言与现状分析 当企业在DeepSeek、豆包、通义千问等生成式引擎里搜不到自己,当新品发布三天就被竞品内容淹没,当传统SEO公司还在用关键词密度“刷排名”,你就知道,GEO(生成式引擎优化)已经不是可选项,而是生死…

Qt/C++实现无人机监控系统/航点实时监控系统/集群地面站管理平台/飞行轨迹规划和模拟

一、前言说明 没想到有一天还会做无人机相关的软件开发,这个主要得益于把相关功能点的组件都基本实现好了,比如地图组件,带有轨迹规划和绘制以及回放,还有个视频组件,支持任意视频源的实时画面显示以及存储和回放…

【GitHub每日速递 251023】46.1k star, 1.2B参数逆袭!MinerU2.5成最牛文档解析多模态大模型

原文:https://mp.weixin.qq.com/s/0V9R33AYXPjbgcO-OkBsNg Klavis AI:突破工具集成极限,4 种方式让 AI 无缝对接多服务! klavis 是一个实现MCP集成层的AI工具。简单讲,它让AI代理能稳定使用成千上万种工具。适用人…

Python随笔(第一周)

字符串Python 语言中,字符串是用两个双引号""或者单引号括起来的零个或多个字符 字符串中的字母和中文都算一个字符且空格也算 字符串也提供区间访问方式,可采用[N:M]格式,表示字符串中从N到M(不包含M)…

我在政和一中的求学岁月(1993-1997)

一、命运的起点:从“跳出农门”的梦想到踏入一中1993年的夏天,命运将我带到了政和一中,这并非我中考的第一志愿。在那个年代,对于像我这样的农村孩子,考入中专或师范是“跳出农门”的终极梦想——这意味着“农转非…

互测记录

1本文来自博客园,作者:蒟蒻orz,转载请注明原文链接:https://www.cnblogs.com/orzz/p/19159453

读AI赋能07基准测试

读AI赋能07基准测试1. 测试 1.1. 测试是普通公众了解AI及其快速增长能力的最主要途径 1.2. 在争夺基准测试霸主地位的AI太空竞赛中,只有最准确且无害的AI才能存活下来 1.3. AI领域的“竞赛”不是一场疯狂的抢占或瓜分…

微软七月补丁日修复130个漏洞,重点关注RRAS与Office安全更新

微软七月补丁日共修复130个安全漏洞,包括14个严重级别漏洞。重点涉及Windows路由和远程访问服务、Microsoft Office组件及Visual Studio开发工具,其中多个漏洞无需用户交互即可被远程利用。微软七月补丁日修复130个漏…

比特币闪电网络开源项目

以下是目前较活跃、具代表性的比特币闪电网络开源项目,涵盖节点实现、钱包、开发工具及基础设施,方便不同开发者或用户根据需求选用:一、主流闪电网络节点实现(全节点)项目名称 简介 技术特点 地址/引用LND(Ligh…

[windows xp] 还能在xp上使用的浏览器

Yes—but with very important caveats. Windows XP is extremely outdated, and modern web standards and security measures make most current browsers incompatible. That said, there are some options, mostly…

图像分割- sam2 版本 - MKT

图像分割- sam2 版本 # 使用前需要先安装 SAM 2。代码需要python>=3.10、 以及torch>=2.5.1和。请按照此处的torchvision>=0.20.1说明安装 PyTorch 和 TorchVision 依赖项。您可以使用以下方式在 GPU 机器# #…

tryhackme-网络安全基础-AD基础- Active Directory 基础知识-20

tryhackme-Cyber Security 101-Windows and AD Fundamentals-Active Directory Basics 房间地址:https://tryhackme.com/room/winadbasics 这是网络安全入门的基础模块的计算机科学基础知识:Active Directory Basics…

tryhackme-网络安全基础-命令行- windows命令行-21

tryhackme-Cyber Security 101-Command Line-Windows Command Line 房间地址:https://tryhackme.com/room/windowscommandline 这是网络安全入门的基础模块的计算机科学基础知识:Windows Command Line( windows命令…

图像分割和目标跟踪 - MKT

图像分割和目标跟踪https://github.com/IDEA-Research/Grounded-SAM-2?tab=readme-ov-file

tryhackme-网络安全基础-开启您的网络安全之旅- 搜索技巧-19

tryhackme-Cyber Security 101-Start Your Cyber Security Journey-Search Skills 房间地址:https://tryhackme.com/room/searchskills 这是网络安全入门的基础模块的计算机科学基础知识:Search Skills(搜索技巧),…