esp-adf Element PipeLine
audio_element:
开发基于ADF的程序软件最基本的模块就是audio_element对象。所有的编码、解码、过滤、输入流、输出流实际上都是audio_element。(这个是官方的文件我翻译过来的,讲了个什么玩意我也搞不明白,反正就是说audio_element很重要,是玩ADF的最普遍存在)
ADF的API就是用来执行audio_element的;
Element的通用功能就是从input获得数据,然后处理数据,然后输出到下一级Element;(这个地方输出到下一级element是我根据语境猜测的,不知道对不对,反正人家英文就说输出到next,没有具体说输出给谁)。每个Element就像一个单独的任务;为了在数据的全周期(包括输入、处理、输出)上实现完全控制,audio_element提供了在数据周期各个阶段的回调函数。回调函数的类型包括:打开、处理、关闭、销毁、读写,这些回调函数都可以在audio_element_cfg_t中找到;有些特别的Element甚至用到了所有的可用的回调函数,比如:MP3_Decoder就采用了打开、处理、关闭、销毁等等回调函数;
audio_element的类型都在audio_common.h头文件中audio_element_type_t这个枚举变量中包括了;
Every decoder, encoder, filter, input stream, or output stream is in fact an Audio Element(感觉这句话比较形象,直接粘贴过来),翻译:实际上编码器、解码器、过滤器、输入流、输出流实际上都是音频元素;
audio_pipeline:
audio_pipeline可以将一组audio_element组合到一起,用户是用audio_pipeline的形式来处理数据而不是用单个的audio_element。每个audio_element都连接了一个环形缓冲区。audio_pipeline也负责处理从audio_element到application的信息传递;
Event_Interface
在同一个pipeline里面的audio_elenment之间的交流是通过Event_Interface的API实现的;这些API建立在free-rtos队列的基础上;用listeners监听数据,用回调函数通知这些数据信息;
audio stream:
audio_element把数据引进来,然后处理,最后发出去。这整个的过程就叫做audio_stream。audio_stream类型如下:
举例:用结构体来定义audio_stream的类型,比如I2S stream就用i2s_stream_dfg_t来定义,还需要audio_stream_type_t配合才能完成定义;
Codecs这些都是解码器:
audio_processing:
ADF提供了一些处理音频的API:
Downmix:把两条音频组合到一起;
Equalizer:均衡器(我也没看懂);
resample filter: 改变音频的频率和单双通道转换;
Sonic:处理音频毛刺和速度;
services:
ADF提供了services用于语音硬件和服务器的交互,或者和外界蓝牙的交互;
Speech Recogniton:
唤醒词词库加上语音识别接口可以识别唤醒命令。大多数唤醒命令是中文的,有一个英文唤醒命令是:Alexa
speech recognition 包括自主语音识别,比如:voice activity detection 和 speech recording engine.
esp-adf Element PipeLine的更多相关文章
- template package (godoc 翻译)
template 包 概述(Overview) template 包实现了数据驱动模板用于生成文本输出. 要生成HTML输出,请参阅html/template包,它具有与此包相同的接口,但会自动保护H ...
- 一文了解Python的线程
问题 什么是线程? 如何创建.执行线程? 如何使用线程池ThreadPoolExecutor? 如何避免资源竞争问题? 如何使用Python中线程模块threading提供的常用工具? 目录 1. 什 ...
- go标准库的学习-text/template
参考:https://studygolang.com/pkgdoc 导入方式: import "text/template" template包实现了数据驱动的用于生成文本输出的模 ...
- Golang 模板
最近又尝试了一下 Golang 的 Template,发现一般功能都满足了,而且语法也相对比较简单,所以稍作总结.在 Go语言中,模板有 text/template 和 html/template 两 ...
- Package template (html/template) ... Types HTML, JS, URL, and others from content.go can carry safe content that is exempted from escaping. ... (*Template) Funcs ..
https://godoc.org/text/template GoDoc Home About Go: text/templateIndex | Examples | Files | Directo ...
- Azure Data Factory(三)集成 Azure Devops 实现CI/CD
一,引言 由于上一节文章内容过长,无法分享Azure Data Factory 的持续集成,持续发布.今天将着重介绍一下在使用 Azure DevOps Pipeline 发布,自动进行持续集成,并且 ...
- ADF 第八篇:传递参数(Pipeline的Parameter和Variable,Activity的output)和应用表达式
Azure Data Factory传递参数的方式主要有两种,通过Pipeline的Parameter和Variable来传递参数,通过Activity的输出来传递参数.要在Activity中引用Pa ...
- mongoDB之Pipeline Aggregation Stages
原文链接:https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/ 管道聚合 $project Reshapes ...
- A trip through the Graphics Pipeline 2011_12 Tessellation
Welcome back! This time, we’ll look into what is perhaps the “poster boy” feature introduced with th ...
随机推荐
- 深入理解Java虚拟机--阅读笔记三
垃圾收集器 手机算法是内存回收的方法论,垃圾收集器是内存回收的具体实现. 并行:指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态 并发:值用户线程与垃圾收集线程同时执行(但并不一定是并行的) ...
- linux中cut、printf、awk、sed命令
cut.printf.awk.sed在linux中都是用来处理文本的命令,接下来一个一个看. 一.cut命令 cut [选项] 文件名 选项: 主要使用一下两个参数,若是只使用 -f 则默认的分割符为 ...
- Vue.js MVVM及数据绑定原理
什么是数据驱动 数据驱动是vuejs最大的特点.在vuejs中,所谓的数据驱动就是当数据发生变化的时候,用户界面发生相应的变化,开发者不需要手动的去修改dom. 比如说我们点击一个button,需要元 ...
- canvas-5Bezier-QuadraticCurveTo.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Archlinux/Manjaro使用笔记-报错:一个或多个 PGP 签名无法校验!的解决方法
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 解决办法:添加无法校验的pgp签名为信任 gpg --recv-keys xxxxxx xxxxxx为无法校验的gpg值
- 前端面试题整理——javaScript部分
(1)typeof 和 instanceof 1.typeof 对于基本数据类型(boolean.null.undefined.number.string.symbol)来说,除了 null 都可以显 ...
- 2017-07-29 中文代码示例教程之Java编程一天入门
Java编程一天入门 v0.0.1 alpha 共享协议 本作使用署名-非商业使用-禁止演绎协议共享. 前言 Java入门代码用中文写(举例如下)更能被新手理解. 由于至今没有看到类似教程, 在此抛砖 ...
- python 类函数,实例函数,静态函数
一.实现方法 class Function(object): # 在类定义中定义变量 cls_variable = "class varibale" def __init__(se ...
- Salesforce的翻译工作台
翻译工作台 Salesforce提供了翻译工作台.在这里管理员可以对各种数据进行翻译设置,包括对象信息.字段信息.验证规则.错误信息等. 翻译工作台集中了翻译的内容,从而使得管理员或开发者不需要在其他 ...
- 国内常用的几个NTP时间服务器
问题描述: 经常Windows或者Linux系统上面的时间跟我们本地的时间不一致 有时候就是Windows的Internet时间设置里面的Windows自带的时间同步服务器不好使 Linux配置NTP ...