- 博客(19)
- 收藏
- 关注
原创 音频数据转换实践
1 采样率转换1.1 重新采样Android 中的采样转化率也称为“重新采样”是每个系统常用的操作和功能。需求和数据源总是有不匹配的地方,比方说录音设置了16K采样率,而HAL层上来的数据默认是32K的,那就需要降采样。采样率转换是将具有某一采样率的离散样本流更改为具有另一采样率的流的过程。采样率转换器(即重采样器)是执行采样率转换的模块。对于重采样器,原始流称为源信号,而重新采样的流称为设备信号。在 Android 中有多处需要用到重采样器。...
2022-02-17 07:20:27 1267
原创 Android音频数据格式概述
音频在计算机中保存的数据格式在采集、声学前处理、后期编辑、保存的各个阶段其格式是不一样的,这个其实困扰了我比较久,如果需要做HAL层或者更底层的音频相关开发,一定要了解音频在各个环节的数据格式,这个数据格式也称为音频的表示,通常来讲:首先,在音频的采集环节,把模拟信号变换成数字信号的ADC通常只输出整数,这个时候16比特或者24/32比特;为了防止录音的时候clip,一般都要留出12dB的head room,你要用16比特ADC的话就只用了11-12比...
2022-02-16 12:38:45 3974
原创 Android音频术语
研究Android的音频子系统必须要了解Android所使用的的术语,本词汇表收录了与音频相关的术语,其中包括广泛使用的通用术语和 Android 专用术语,主要翻译自Android技术网站。1 通用术语与音频相关的通用术语的含义都采用其约定俗成的解释。1.1 Digital Audio(数字音频)数字音频术语涉及使用以数字格式编码的音频信号处理声音。数字音频是以数字形式记录或转换为数字形式的声音表示。在数字音频中,声波的的音频信号通常被编码为数字样本中的连续序列。A...
2022-02-15 15:03:46 3641
原创 Android音频知识进阶
本文主要介绍一些和音频相关,但是平时大家不甚理解的概念,这些概念在平时用到的各种软件中都是在普遍使用的,例如声学前端处理的各种技术。这些技术我司还是做得不错的,不过我们部门只是应用。这些技术单讲一个都是一个很大的话题,我既不是这方面的专家,具体算法非我擅长,详细描述也非本文目的,只是抛砖引玉的介绍,在项目中谈到这些话题的时候至少对相关概念是比较清楚的。1 Audio Codec1.1 概念Audio Codec,就是音频编解码器。在软件层面上的...
2022-02-15 14:44:11 4217
原创 Android音频基础知识
鸟鸣清脆如玉,琴声婉转悠扬。。。声音对我们来说再也熟悉不过了,声音是由物体的振动产生的,并且以波的形式传播,我们把它叫做声波。振动会发出声音,为什么我们听不到蝴蝶翅膀振动发出的声音,却能听到讨厌的蚊子声?为什么用力鼓掌比轻轻拍掌发出的声音大?这些问题要找到答案,就需要研究声音的特性。1 声音的特性1.1 音调(Pitch)我们接触到的各种声音,有些听起来音调高,有些听起来音调低。声音为什么会有音调高低的不同?什么因素决定了音调的高低?...
2022-02-14 20:23:50 3791
原创 Android音频从理解到应用-前言
兜兜转转做了这么多年Android,那么多模块,但是之前Android的Audio子系统一直未曾触及,常言道,得不到的总是最香的,自己不会的总是最好的。恰逢最近的产品又是语音智能相关,音频也是一大特色功能,可是找一个音频工程师小伙伴那是多难,比自己干都难,只好赶鸭子上架。这次的Android项目是基于Android 9对音频子系统进行了多处定制,在HAL层修改了音频输入的路径,在HAL层加入了自有的声学前处理模块(降噪、回声消除等),将音频处理后通过Android流程送入...
2022-02-14 13:42:49 633 2
原创 ESP32那些事儿(十):其他功能
这些功能只做抛砖引玉,不做详细描述了。1、websocket在和服务器端通讯的时候,可能会用到Websocket协议,其实大家用MQTT协议的时候,好多库底层也是用Websocket实现的。我们使用了libwebsocket,libwebsocket支持很多平台,在ESP32中也做了移植,支持的还比较好。2、spiffs和Fat文件系统在保存音频文件的分区中,可以使用Spiffs或者Fat文件系统...
2018-06-14 16:39:16 3075
原创 ESP32那些事儿(九):功能开发之OTA功能
1、升级策略 从前面对Bootloader的分析中,我们知道ESP32的OTA升级基本上也是可靠的,可靠的意思是即使升级失败,写入IMAGE不完整,设备还是可以用的。 对于OTA升级,大家印象比较深刻的就是Android手机的升级,Android手机的升级确实是比较完善和健壮的,对于IOT设备来说,也没有差分Image的机制,所以只要简单有效即可。 后来我们确定的方案就是后台静默...
2018-06-14 16:08:02 3951
原创 ESP32那些事儿(八):功能开发之音乐播放功能
本篇对于在线音乐播放不做讨论,如果整个系统只有在线音乐播放的功能,系统资源应该是没有问题的。同时也可以支持多种音频的CODEC。 对于本地音频文件播放,由于ESP32芯片系统通常存储和内存资源有限,如果不外挂SRAM,片内只有512KB可用内存,例如我们的项目只有512KB的内存,和4MB的Flash,对于这样的项目,如果要求有音频播放的需求,则要就要考虑: 文件如何存储?内...
2018-06-14 15:53:25 14538 3
原创 ESP32那些事儿(七):功能开发之I2S和I2C驱动
1、基于ESP32 API的I2C1、I2S的使用 I2S为三线总线,3个信号分别为:① 串行时钟SCK,也叫位时钟(BCK)。即每发送1位数字音频数据,SCK上都有1个脉冲。SCK的频率=2×采样频率×采样位数。在数据传输过程中,I2S总线的发送器和接收器都可以作为系统的主机来提供系统的时钟频率。② 帧时钟WS,即命令(声道)选择,用于切换左右声道的数据。WS的频率等于采样频率,由系统主...
2018-06-14 14:35:38 8054 3
原创 ESP32那些事儿(六):功能开发之蓝牙及WiFi功能
蓝牙和WIFI是ESP32的核心功能,蓝牙和wifi的共存也是esp32的独门武功,但时候后续也会发现共存的时候会有很多问题。不管怎样,蓝牙和wifi在esp-idf中有很多的例子,大家都可以参考。本篇只做简单的流程介绍。 1、蓝牙a2dp sink的初始化 蓝⽛牙是⼀一种短距通信系统,其关键特性包括鲁棒性、低功耗、低成本等。蓝⽛系统分为两种不不同的技术:经典蓝牙 (C...
2018-06-12 15:41:05 23454 2
原创 ESP32那些事儿(五):瑞士军刀之ESP32的常用API分析
事实上,所有在esp32上用到的api在esp-idf中都能找到,但是对于我们来讲这是一个大而全的API参考指南,在项目的初期,我们没有必要花费太多的时间详细的阅读每一个API的使用,挑一些常用的API进行学习,而后再根据使用情况来查询参考文档,这样才能达到事半功倍的效果,那么这里就罗列一些常用的API吧:1、ESP_LOG 我们写程序最本能的就是关键的步骤都要打一些日志到串口终端,...
2018-06-12 13:45:29 6503
原创 ESP32那些事儿(四):纵览全局之代码架构
摸清楚系统架构后,项目的整体情况已经成竹在胸了,是不是有点摩拳擦掌,信心十足的要开始码代码了。 但是代码如何下手呢?做项目的话不能再像Demo程序一样,我们有多个功能,有多个人参与开发,代码的组织也需要提前设计一番,当然此刻有一个详细的设计文档最好,不过做嵌入式开发通常不会这么详细。 Freertos作为一个实时的操作系统,非常的短小精悍,需要注意的是和类Linux系统不同的是...
2018-06-12 13:41:33 4916
原创 ESP32那些事儿(三):纵览全局之系统设计
搞过嵌入式的同学们都知道,当我们开始一个新的平台后,我们首先想到的是系统层面的东西,这就体现了嵌入式开发中系统工程师的作用了,BTW,Android平台除外,Google已经伺候的太好了。 ESP32实际上相对简单,一些例如Bringup的流程就省了。下面我就把我的思考过程写下来。 一、Build系统 ESP32的Build系统比较简单,留给开发者需要修改的也比较少。 ...
2018-06-12 10:05:00 4666
原创 ESP32那些事儿(二):磨刀不误砍柴功-做好项目开发前的准备工作
如果你是第一次接触FreeRTOS和ESPRESSIF的产品,例如我,那还是要先来个整体印象,然后再逐个深化。做项目的都知道,老板们是不允许我们四平八稳的研究完然后再开始项目。 那也不妨碍咱们要有自己的节奏,既要平衡项目的进度,也要按照事情的规律来做事情 。这就需要快速的准备一些预备知识,磨刀不误砍柴功,仓促上阵,只会欲速则不达。 一、了解ESP32芯片 ESP32的基本...
2018-06-12 09:59:56 10350 6
原创 ESP32那些事儿(一):前言
刚刚换了一家新东家,本来去之前说是有一个宏伟的产品,去之后却是要先从一个IOT小产品开始。刚开始有点小失望,不过自从选型为ESP32这款小网红芯片后,觉得尝试一下未尝不可。对我等做过手机、电视、PAD的老嵌入式程序员来说,这不是小CASE嘛。不过经过几个礼拜的开发,发现麻雀虽小,但也五脏俱全。 这其中也遇到一些小坑,趁项目不太紧的时候,能够分享给大家,也不失为一种自我总结,共同...
2018-06-12 09:39:27 3633 2
翻译 HDMI-CEC Control Service (Android TV 二)
介绍HDMI-CEC(高清晰度多媒体接口的消费类电子控制标准)允许多媒体消费类产品互相之间沟通和交换信息。HDMI-CEC支持多种功能,例如直通遥控、系统音频控制,但是其中最有用的是一键播放。一键播放是指媒体源设备能够打开电视并且让电视自动切换到自己的端口进行播放,这样的话用户就不需要远程控制电视从Chromecast切换到蓝光播放器。很多厂商已经采用了HDMI-CEC标准,他
2015-01-05 16:20:13 11707 3
原创 Android 4.2 WiFi Display 框架
Android Wifi-display是基于Mircast协议。Mircast是在WiFi Direct上的一个应用。利用 Wi-Fi 技术在 Wi-Fi 设备间提供无线视频流和镜像显示,为家庭和企业环境提供实时观看体验。
2015-01-02 21:00:41 2028
翻译 Android TV Input Framework(Android TV 一)
简介Android TV Input Framework (TIF)简化了向Android TV提供实时内容的工作。Android TIF向电视制造商提供了一套标准的API,用于创建Input模块来控制Android电视。这套框架还能搜索实时TV内容和一些推荐的内容。但是这套框架不会实现TV的各种标准和一些基于地域性的需求。
2014-12-31 16:55:13 15034 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人