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

    Django : a. MySQL数据表还未创建时,不可在视图内直接使用模型类对象,产生报错 django.db.utils.ProgrammingError: (1146, "Table ...

  2. 【代码笔记】Web-ionic-头部与底部

    index代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  3. React 入门学习笔记整理(六)—— 组件通信

    1.父子组件通信 1)父组件与子组件通信,使用Props 父组件将name传递给子组件 <GreateH name="kitty"/> 子组件通过props接收父组件的 ...

  4. IDEA项目搭建九——MybatisPlus多数据库实现

    一.简介 MybatisPlus中引用多数据库时,传统的配置就失效了,需要单独写配置来实现,下面就说一下具体应该如何操作 二.引入MybatisPlus多数据源配置 还是先看一下我的项目结构,Mode ...

  5. .Net Core 2.0 生态(2).NET Core 2.0 特性介绍和使用指南

    .NET Core 2.0发布日期:2017年8月14日 前言 这一篇会比较长,介绍了.NET Core 2.0新特性.工具支持及系统生态,现状及未来计划,可以作为一门技术的概述来读,也可以作为学习路 ...

  6. webApi core2 DI通过代码来获取容器里面已注入的对象

    请求服务 来自 HttpContext 的一次 ASP.NET 请求中可用的服务通过 RequestServices 集合公开的. 请求服务将你配置的服务和请求描述为应用程序的一部分.当你的对象指定依 ...

  7. 转:SQL Server - 使用 Merge 语句实现表数据之间的对比同步

    表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT 或者 UPDATE 等.包括在 SSIS Package 中也可以通过 Lookup ...

  8. .NET Core tasks.json 简介

    1.执行命令:dotnet> dotnet new console -o myApp 2.tasks.json文件配置: { "version": "2.0.0&q ...

  9. IntelliJ idea 如何打开左边项目展开栏

    vie->Tool Windows->Project Alt+1 转自:https://blog.csdn.net/bug_moving/article/details/53284434

  10. Frameworks(不定时更新)

    iOS8.4 Frameworks 更新时间:2015年8月17日 Accelerate iOS4.0引入了Accelerate框架,该框架的接口可用于执行数学.大数字以及DSP运算.和开发者个人编写 ...