透过ALSA这层迷雾剖析AliOS Things音频框架设计

本文介绍了物联网设备中的音频系统框架,重点讨论了Linux ALSA音频架构及其在智能设备中的应用,包括内核驱动层和用户态库。文章探讨了音频系统框架的重要性,以及在AliOSThings中构建音频框架的考量和设计,旨在为开发者提供更友好的开发环境和支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

不看这几篇好文,就别说自己了解物联网

 

1、背景

近十年是移动智能设备迅速爆发的十年。随着智能手机、平板电脑、AI智能音响、车载智能设备的普及,“语音”已经成为了用户与智能设备交互的最重要方式之一。

 

例如,当您拿出手机拨打电话时,“内置mic”负责您声音的采集、“听筒”是对方声音输出的默认设备。当您家人也想和对方聊上几句时,您往往会打开Speaker让家人一起畅聊。当您接听的是商务会议时,您往往会插上“3.5mm耳机”或者“蓝牙耳机”,让自己拥有更加私密的通话氛围。

 

开车中的您正在沉浸在车载音乐BGM中时,如果手机导航软件需要提醒您“前方有违章拍照”时手机会怎么做呢?以Android手机为例,Android会把BGM的音量降低,然后将导航播报的声音和低音量的BGM混音后播放,当导航播报完毕后再将BGM恢复到原来的音量继续播放。这种无缝切换的设计不仅友好的提醒了您前方的路况信息,又让您持续的沉浸在BGM中无法自拔。

 

还有细心的朋友可能会发现,现在大型商场中,AI智能机器人越来越多了。您已经不需要在手机上打开某个APP、敲上想查的关键字去搜索您想找的商户来,您需要做的仅仅是开口说出您的问题,机器人即可给您满意的答案。

 

2、为什么需要音频系统框架

以上这些应用场景的实现都是由智能设备中的“音频中枢系统”来完成的。如果要用一句话来描述智能设备的“音频系统”的话,那么可以这么理解,就是“向下屏蔽和管理的错中复杂的声卡设备,向上为应用程序提供友好丰富的语音服务接口”。

 

嵌入式OS中需要管理的音频硬件codec错综复杂。功能上区分有仅支持录音的、仅支持播放的、同时支持录音播放/播放的codec、有支持音量调节的也有不支持的。接口上区分有I2S接口的,PCM接口的,AC97接口的。音频codec的厂商也有近百家,搭配的CPU平台也有几十种,排列组合之后就是上万种的“CPU + Audio Codec”的可能,且每一种排列组合在Linux内核中都已经有成熟的音频驱动程序支持,繁荣的硬件驱动生态是各种主流智能设备的OS无法摒弃Linux内核的重要原因。

              图1: 典型音频硬件系统框架

 

丰富的应用生态也是Linux在嵌入式设备中经久不衰的重要原因。以Linux系统为例,Linux屏蔽了底层音频硬件的差异,在用户态通过alsa-lib为生态中的音频应用提供了统一的API接口供调用。

因此要快速开发一款经久不衰的智能语音产品,一个优秀的的音频系统框架是至关重要的。

 

3、Linux ALSA音频框架

ALSA是Advanced Linux Sound Architecture的缩写,即高级Linux音频架构,在Linux上提供了对音频和MIDI(较少使用)的支持。在Linux 2.6的内核版本后,AlSA目前已经成为了linux的主流音频体系结构。官方资料和源码下载参考:“ALSA-Project

 

ALSA包含

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值