• 智能手表上的音频(一):架构


    前面写过一篇文章(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。

  • 相关阅读:
    Redis系列9:Geo 类型赋能亿级地图位置计算
    Java基础面试题
    java集合容器的特点
    Bootstrap框架(全)
    Github每日精选(第36期):find简单、快速和用户友好的替代工具fd
    练[极客大挑战 2019]BuyFlag
    opnet物联网仿真2.5 陈敏 包交换网络全解----修正版
    XJTUSE-数据结构-homework2
    R语言ggplot2可视化:使用ggpubr包的geom_exec函数执行geom_*函数(没有任何参数需要放置在aes中)
    计算机学院2022级新生邀请赛(一)
  • 原文地址:https://blog.csdn.net/david_tym/article/details/133233520