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的更多相关文章

  1. template package (godoc 翻译)

    template 包 概述(Overview) template 包实现了数据驱动模板用于生成文本输出. 要生成HTML输出,请参阅html/template包,它具有与此包相同的接口,但会自动保护H ...

  2. 一文了解Python的线程

    问题 什么是线程? 如何创建.执行线程? 如何使用线程池ThreadPoolExecutor? 如何避免资源竞争问题? 如何使用Python中线程模块threading提供的常用工具? 目录 1. 什 ...

  3. go标准库的学习-text/template

    参考:https://studygolang.com/pkgdoc 导入方式: import "text/template" template包实现了数据驱动的用于生成文本输出的模 ...

  4. Golang 模板

    最近又尝试了一下 Golang 的 Template,发现一般功能都满足了,而且语法也相对比较简单,所以稍作总结.在 Go语言中,模板有 text/template 和 html/template 两 ...

  5. 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 ...

  6. Azure Data Factory(三)集成 Azure Devops 实现CI/CD

    一,引言 由于上一节文章内容过长,无法分享Azure Data Factory 的持续集成,持续发布.今天将着重介绍一下在使用 Azure DevOps Pipeline 发布,自动进行持续集成,并且 ...

  7. ADF 第八篇:传递参数(Pipeline的Parameter和Variable,Activity的output)和应用表达式

    Azure Data Factory传递参数的方式主要有两种,通过Pipeline的Parameter和Variable来传递参数,通过Activity的输出来传递参数.要在Activity中引用Pa ...

  8. mongoDB之Pipeline Aggregation Stages

    原文链接:https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/ 管道聚合 $project Reshapes ...

  9. 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 ...

随机推荐

  1. XML 和 JSON

    1. XML介绍 必须要有节点:根节点必须且只有一个,用户节点可以自定义. 2. JSON介绍: 3.生成json方法 json_encode() 4.xml生成字符串方法有几种 拼装字符串,或者ph ...

  2. IntelliJ idea连接操作DB2数据库

    一.场景 一直都是用navicat作为数据库的连接工具,但是navicat不支持连接DB2,网上也推荐很多其它软件工具,但是因为DB2用的场景不多,这次只是开发etl工具需要测试数据库,正好发现ide ...

  3. JMeter JMeter自身运行性能优化

    JMeter自身运行性能优化   by:授客 QQ:1033553122 测试环境 apache-jmeter-2.13   1.   问题描述 单台机器的下JMeter启动较大线程数时可能会出现运行 ...

  4. Fit项目图片上传和云存储的调通

    项目中关于动作的说明需要相应的配图,这样可以更直观的说明动作要点.本篇主要为项目中动作的新增和编辑做准备,确定适合场景的上传操作逻辑以及图片的存储和加载的方法. 一 上传方案 a) 本来所用的模板中是 ...

  5. 对JavaScript中闭包的理解

    在前端开发中闭包是一个很重要的知识点,是面试中一定会被问到的内容.之前我对闭包的理解主要是"通过闭包可以在函数外部能访问到函数内部的变量",对闭包运用的也很少,甚至自己写过闭包自己 ...

  6. 第四周读书笔记——读《我是一只IT小小鸟》有感

             读<我是一只IT小小鸟>有感 这是邓老师倾力推荐的一本书.这本书的标题化用了我们耳熟能详的歌词,算是较有新意吧.更重点在于,这本书的作者不是哪一位大牛,而是一群刚刚走出校 ...

  7. 从零自学Java-8.创建第一个对象

    1.创建对象:2.使用属性描述对象:3.确定对象的行为:4.合并对象:5.从其他对象继承:6.转换对象和其他类型的信息. 程序NewRoot2:计算输入数的算数平方根并输出 package com.j ...

  8. Python进阶点

    1. 模块化设计,分而治之 2. 组合数据类型 2.1 集合类型:list.set(无序/不重复),用于数据去重 2.2 序列类型:字符串.元组.列表(有序) 2.3 字典类型:根据字典中 k/v 来 ...

  9. EF Core扩展工具记录

    Microsoft.EntityFrameworkCore.AutoHistory Microsoft.EntityFrameworkCore 的一个插件,支持自动记录数据更改历史记录. GitHub ...

  10. 机器学习算法_knn(福利)

    这两天翻了一下机器学习实战这本书,算法是不错,只是代码不够友好,作者是个搞算法的,这点从代码上就能看出来.可是有些地方使用numpy搞数组,搞矩阵,总是感觉怪怪的,一个是需要使用三方包numpy,虽然 ...