摘要:智能手机上打电话时通常会支持在扬声器和听筒以及蓝牙耳机之间的动态音频设备切换。我开发过的一款手表也有这样的功能,只不过由于是手表,没有了听筒,动态音频设备切换就变成了在扬声器以及蓝牙耳机之间了。本文就讲讲这款手表上动态切换音频设备是怎么做的。 1, 手表SoC硬件框图 这款智能手表的SoC为了降成本
阅读全文
随笔分类 - 传统音频
摘要:蓝牙(bluetooth, BT)技术的一个典型应用领域是音频,两者相结合,产生了蓝牙无线耳机等非常普及且受欢迎的产品。我是做音频的,目前主要做智能手机和手表上audio DSP的音频软件开发。开发的产品都会涉及到蓝牙相关的功能,如打蓝牙电话和听蓝牙音乐等。本文就讲讲手机手表上音频里的蓝牙那点事。工
阅读全文
摘要:智能手机(或智能手表)等用电池的电子设备对功耗比较敏感,因此不管是使用中还是待机时都要做低功耗处理来省电。前面的文章(智能手表音乐播放功耗的优化)讲了一款智能手表在播放音乐时的低功耗优化,这属于音频场景使用中的低功耗处理,智能手机上的处理也类似。本文讲讲没有音频场景使用时Audio DSP(下文简称
阅读全文
摘要:基于安卓平台的智能手机芯片回来后要做bringup。首先是负责平台的把安卓OS起来,然后就轮到各功能模块做bringup了,Audio是其中主要功能模块之一。Audio由于场景多和牵涉到的core多,bringup工作会多些。本人曾多次做过智能手机和智能手表上audio 的bringup,主要负责a
阅读全文
摘要:在智能手机或智能手表等SoC上通常有一块专门的audio DSP(简称ADSP)来做音频处理。要做音频处理,ADSP首先要被boot起来。本文以CEVA BX2为例来讲讲ADSP的boot过程。 在上篇文章(Audio DSP 链接脚本文件解析)里讲过链接脚本里用关键字ENTRY来设定程序的入口,且
阅读全文
摘要:上篇文章(智能手表音乐播放功耗的优化)讲了怎么优化音乐场景下的功耗,其中第二点是优化memory的布局。那么在哪里优化memory的布局呢?就是在本文要讲的链接脚本(ld)文件里。作为audio DSP 软件工程师,ld文件要能看懂和会修改。作为程序来说,先编译后链接。编译得到目标文件,链接就是把这
阅读全文
摘要:对于智能手机/手表等设备来说,续航能力/功耗是其重要的指标之一。要想有好的续航能力,一定要把主要应用场景下的功耗优化好。音乐播放就是主要的应用场景之一。本文就讲讲我开发的一款智能手表上音乐播放场景下是怎么做功耗优化的。 功耗优化一定程度上与硬件相关,因此先给出这款智能手表跟音乐播放相关的硬件框图,如
阅读全文
摘要:通常芯片设计公司(比如QUALCOMM)把芯片设计好后交由芯片制造商(比如台积电)去生产,俗称流片。芯片设计公司由ASIC部门负责设计芯片。ASIC设计的芯片只有经过充分的验证(这里说的验证是FPGA(现场可编程门阵列)原型验证, 通过将RTL移植到FPGA来验证)才能去流片。因为流片费用昂贵,如果
阅读全文
摘要:在audio DSP中, 软件的code和data主要放在3种不同的memory上,分别是片内的ITCM、DTCM和片外的memory(比如DDR)上。ITCM只能放code,DTCM只能放data,片外的memory既能放code也能放data。在写代码时要规划好哪些放片内,哪些放片外。上面说的这
阅读全文
摘要:最近在做蓝牙的宽带语音通话。相对于蓝牙窄带语音,主要变化是把采样率从8k变到16k,以及编解码器从CVSD变成mSBC(modified SBC,改进的SBC)等。蓝牙语音通话相关的HFP(Hand Free Profile)强烈建议在宽带语音通话时要用上语音丢包补偿(packet lost con
阅读全文
摘要:上篇讲了语音通话,本篇讲录音。录音功能就是把录到的音频保存成文件。保存文件的格式支持两种:一是PCM(16K采样)的WAV格式,二是AMR-NB(8k采样)的AMR格式。WAV格式简单:44字节的文件头+PCM 数据,示意如下图。网上有很多这方面的讲解,这里就不细讲了。 AMR文件格式相对复杂一些,
阅读全文
摘要:上篇讲了智能手表上音频文件播放。本篇开始讲语音通话。同音频播放一样有两种case:内置codec和BT。先看这两种case下audio data path,分别如下图: 内置codec下的语音通话audio data path 蓝牙下的语音通话audio data path 从上面两张图可以看出,这
阅读全文
摘要:上篇讲了智能手表上音频相关的驱动。本篇开始讲具体的功能,先讲音频文件播放。 音频文件格式众多,目前我们仅支持了最常见的几种:WAV/MP3/AAC/AMR(主要用于播放录音文件)。相对于播放WAV(即PCM),MP3/AAC/AMR多了个解码过程。音频文件播放时只有AP和ADSP在运行。音频可以从s
阅读全文
摘要:上一篇讲了智能手表上音频系统的架构和应用场景。从本篇开始讲具体的,首先讲音频相关的驱动,主要包括IPC(inter-processor communication,核间通信, 即AP/CP/ADSP之间的通信)的driver 和audio的driver。首先说明一下,由于codec是我们公司自己设计
阅读全文
摘要:前面写过一篇文章(Android智能手机上的音频浅析)介绍了安卓智能手机上的音频。今年又做了智能手表的项目。相对智能手机而言,相同的是依旧有AP/ADSP/CP,不同的是不再用安卓系统,同时音频外设只有内置codec上的麦克风和扬声器,以及蓝牙。我负责音频系统的软件架构设计和ADSP上的软件开发。
阅读全文
摘要:在日常生活中不管是打电话还是听音乐,都会遇到音量不合适而去调整音量的情况。如果音量调整软件处理不好,就会听到pop noise。产生pop noise的原因是音量直接从当前值骤变到目标值,而不是缓慢的变。如果缓慢的变就不会有pop noise了。图1显示的是音量变大时骤变和缓慢变的示意图。图2显示的
阅读全文
摘要:做音频软件开发10+年,包括语音通信、语音识别、音乐播放等,大部分时间在做语音通信。做语音通信中又大部分时间在做VoIP语音处理。语音通信是全双工的,既要把自己的语音发送出去让对方听到,又要接收对方的语音让自己听到。发送又可叫做上行或者TX,接收又可叫做下行或者RX。之前写了好多关于VoIP语音处理
阅读全文
摘要:上篇文章(基于MCRA-OMLSA的语音降噪(二):实现 )讲了基于MCRA-OMLSA的语音降噪的软件实现。本篇继续讲,主要讲C语言下怎么对数学库里的求平方根(sqrt())、求自然指数(exp())、求自然对数(log())的函数做替换。 1,求平方根 求平方根最常用的方法是牛顿迭代法。下图是y
阅读全文
摘要:上篇文章(基于MCRA-OMLSA的语音降噪(一):原理)讲了基于MCRA-OMLSA降噪的原理,本篇讲怎么做软件实现。软件实现有多种方式。单纯看降噪效果可用python,因为python有丰富的库可用,可节省不少时间,把主要精力放在降噪效果提升上。如果要把算法用在产品上就得用其他语言。我们是芯片公
阅读全文
摘要:前面的几篇文章讲了webRTC中的语音降噪。最近又用到了基于MCRA-OMLSA的语音降噪,就学习了原理并且软件实现了它。MCRA主要用于噪声估计,OMLSA是基于估计出来的噪声去做降噪。类比于webRTC中的降噪方法,也有噪声估计(分位数噪声估计法)和基于估计出来的噪声降噪(维纳滤波),MCRA就
阅读全文

浙公网安备 33010602011771号