码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 智能手表上的音频(一):架构


    前面写过一篇文章(Android智能手机上的音频浅析)介绍了安卓智能手机上的音频。今年又做了智能手表的项目。相对智能手机而言,相同的是依旧有AP/ADSP/CP,不同的是不再用安卓系统,同时音频外设只有内置codec上的麦克风和扬声器,以及蓝牙。我负责音频系统的软件架构设计和ADSP上的软件开发。 准备写一系列文章,详细介绍智能手表上的音频,主要包括如下:

    1)  架构,包括硬件架构和软件框图,还有应用场景等

    2) 音频驱动,包括IPC驱动和codec驱动等

    3) 音频文件播放,包括音乐文件播放和录音文件播放等

    4) 语音通话

    5) 录音,包括普通录音和电话录音

     

    本篇先讲架构和应用场景。

    1,  硬件架构

    下图是硬件架构的框图。

     

    硬件架构的框图同安卓智能手机上的几乎一样,具体可以去看文章(Android智能手机上的音频浅析)。 不同的是少了一些外设(在手表这种产品形态下就不需要有线耳机和听筒等了),同时把外置codec芯片换成了内置codec,即把codec芯片集成到SOC里面了 。有专门的codec芯片厂商,他们把codec芯片的功能做的比较丰富。内置codec是我们公司自己设计的,功能够用就行,就没那么丰富了。优势是节省成本。

     

    2,  软件框图

    下图是软件的框图。

     

    音频软件在AP/ADSP/CP上都有。AP上有play / record / BT host (播放蓝牙音乐时用到) / audio HAL等。ADSP上有 audio driver / 采样率转换(SRC) / music decoder / BT SBC encoder / 混音(mix) / music effect等。Audio driver包括IPC的driver和codec的driver,后面会专门写一篇文章介绍这些。SRC是各种采样率(8k / 16k / 44.1 k /48k等)的转换,以前写过专门的文章,具体见以下文章(音频开源代码中重采样算法的评估与选择 、 基于sinc的音频重采样(一):原理 、 基于sinc的音频重采样(二):实现) 。 music decoder是各种音乐格式的解码器,包括MP3/AAC等。因为要支持蓝牙音乐,需要把PCM数据用SBC编码。混音就是把各个stream 的PCM混在一起。Music effect是各种音效,如EQ等。CP上有voice codec  / voice enhancement / IMS等。voice codec包括AMR-NB / AMR-WB等。voice enhancement包括回声消除、噪声抑制等。IMS(IP multimedia subsystem,IP多媒体子系统)主要是语音的网络侧处理。需要说明的是voice codec和voice enhancement 也可以放在ADSP上做,这款产品由于一些原因就放在CP上做了,这样ADSP就显得有些大材小用。

     

    3,  应用场景

    应用场景主要如下:

    1)  播放音频文件,包括从内置codec的扬声器播放出来和从蓝牙耳机播放出来

    2) 播放音频文件时有提示音,同样包括从内置codec的扬声器播放出来和从蓝牙耳机播放出来

    3) 语音通话,包括内置codec和蓝牙语音通话

    4) 语音通话时有提示音,同样包括内置codec和蓝牙语音通话

    5) 录音,包括普通录音和电话录音

     

    因为跟安卓智能手机上的音频软硬件架构很相似,本篇写的相对简单。要想详细了解,可以看我写的关于安卓智能手机音频的那篇文章。本篇主要就是智能手表上音频系列文章的一个序,没有它这个系列显得不怎么完整。从下一篇开始讲具体的, 先讲audio driver。

  • 相关阅读:
    MySQL中为什么要有事务回滚机制?
    机器学习库实战:DL4J与Weka在Java中的应用
    国产操作系统银河麒麟v10 (SP1) Kylin-server 安装Elasticsearch7.6.1
    java毕业生设计专利查询与发布系统设计与实现计算机源码+系统+mysql+调试部署+lw
    Go 微服务开发框架 DMicro 的设计思路
    kafka怎么实现零拷贝(Zero-Copy)的?
    MindFusion.WinForms Pack 2022.R2
    R语言非线性方程数值分析生物降解、植物生长数据:多项式、渐近回归、米氏方程、逻辑曲线、Gompertz、Weibull曲线...
    银行利率bp是什么意思,基准利率bp是什么意思
    泛型的学习
  • 原文地址:https://www.cnblogs.com/talkaudiodev/p/17722581.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号