sphinx4 FrontEnd

2023-10-30 15:59
文章标签 frontend sphinx4

本文主要是介绍sphinx4 FrontEnd,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

public class FrontEnd extends BaseDataProcessor

在sphinx-4系统中,系统把整个前端处理当作一个前端类,此类把所有的信号处理流程都集合起来,只要通过此类我们就能获得整个前端的输出。通过对此类的操作我们能够修改信号处理的流程。就可得到我们所需的处理的流程和前端处理的结果。

作用: FrontEnd(前端)是一个component(configurable)。本类是一个前端处理器链的包装类。它提供了方法来用来操纵和导航各种处理器。

Front end(前端)是一系列的数据处理器的模拟。每一个数据处理器相当于是一个特定的信号处理函数。例如:一个处理器对输入数据执行FFT(快速傅里叶变化)。另一个处理器执行的是高通滤波对输入数据。

在处理器链中的每一个数据处理器都实现了DataProcessor接口。实现了Data接口的对象进行前端,从前端出来,在前端的处理器中通过。输入前端的数据一般是音频数据,但是前端是允许任意类型的输入的。类似的,输出的数据一般是特征,但是允许输出任意的输出类型。你能够配置前端接收任意类型的输入,返回任意类型的输出。

前端是一个Pull模型,采用的是pull的设计模式。为了获得前端的输出,你需调用frontend.getData();。在前端调用getData()方法会依次调用上(前)一个数据处理器在数据处理器链中的,直到第一个数据处理器的getData()方法被调用,这个处理器是从输入中读取Data对象。前端的输入实际上是另一个数据处理器,通常是前端的一部分(不是必须的)。如果你想维持对输入数据处理器的某些控制,那么你应该单独创建它,使用前端的setDataSource()方法来设置它让它成为输入数据处理器。在这种情况下,输入数据处理器应该事先存在于处理器链中。一个常见的输入处理器是microphone,它实现了DataProcessor接口。另一个常见的输入处理器为StreamDataSource,它把Java.io.InPutStream转换成Data对象,它通常用于批处理的解码方式。

前端必须通过sphinx的属性文件配置。

当前的最先进的前端能够产生的特征包括:Mel-frequency cepstralcoefficients (MFCC)。

Sphinx-4能允许你在指定的多个前端管道(pipelines),指定相同的管道中的相同数据处理器的多个实例。

为了获得一个前端,前端必须在配置文件中被指定。在sphinx-4中前端是通过scorer(打分机|器)来与系统的其它部分相连接的。在配置文件中scorer必须被指定。

本类的属性:

@S4ComponentList(type = DataProcessor.class)

public final static String PROP_PIPELINE = “pipeline”; 在前端(component)中的propertylist的name。

private List<DataProcessor> frontEndList;用于存储所有在数据处理器链中数据处理器。

private DataProcessor first;在数据处理器链中的第一个数据处理器。也是管道的第一个数据处理器。

private DataProcessor last;在数据处理器链中的最后一个数据处理器。也管道中的最后一个数据处理器。

private final List<SignalListener> signalListeners = new ArrayList<SignalListener>();信号事件监听器列表。用于为每一个数据处理器所产生的信号进行监听。

本类的构造方法:

public FrontEnd(List<DataProcessor> frontEndList);构造一个本类的对象,所需一数据处理器列表。在方法中,初始化了Logger,对frontEndList进行了初始化,建立了一条数据处理器链,即数据处理器列表中每一个处理器的都有前一个数据处理器的引用。列表中的每一个数据处理器都进行了初始化。

public FrontEnd();空的构造方法,就是创建了对象,对属性没进行任何的初始化。

本类的方法:

public void newProperties(PropertySheet ps);与非空构造方法的处理过程一样,只是,此方法必须要在有对象的情况下,而构造方法会创建一个类对象,而此方法不会。所以此方法在想改变可配置属性时调用。

private void init();数据处理器列表中每一个处理器的都有前一个数据处理器的引用,并且对每个处理器都进行了初始化。

public void initialize();对链表(列表)中的每一数据处理器进行initialize初始化。

public void setDataSource(DataProcessor dataSource);为前端设置数据来源。它主要用来为前端的第一数据处理器设置它的前一个数据处理器。此方法主要用来改变以存在的配置,一般为使原来的第一个处理器变的不在是第一处理器(成为了第二)。

public List<DataProcessor> getElements();获得数据处理器列表。

public Data getData();得到整个前端的数据的输出。它会调用最后一个的数据处理器的getdata方法,在其中会调用其上一个处理器的getdata方法,依次直到第一个处理器的方法。如果最后一个处理器的输出为一信号,则在信号监听器列表中的每一个监听器都会对此方法进行处理。

public void setPredecessor(DataProcessor dataSource);为数据处理器中的第一个处理器设置DataProcessor(前数据处理器),使第一数据处理器成为第二处理器。

public void addSignalListener(SignalListener listener);为信号监听器列表添加监听器。

public void removeSignalListener(SignalListener listener);从信号监听器列表中移除特定的监听器。

protected void fireSignalListeners(Signal signal);每一个信号监听器都会对此信号进行处理。

public DataProcessor getLastDataProcessor();得到数据处理器列表(队列)中的最后一个数据处理器。

public String toString();把对象转换成字符串输出。

 

转自:http://blog.csdn.net/taiyb/article/details/40053985

这篇关于sphinx4 FrontEnd的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/309017

相关文章

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

HTML input 标签示例详解

《HTMLinput标签示例详解》input标签主要用于接收用户的输入,随type属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTMLinput标签,感兴趣的朋友一... 目录通用属性输入框单行文本输入框 text密码输入框 password数字输入框 number电子邮件输入编程框

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

HTML5 中的<button>标签用法和特征

《HTML5中的<button>标签用法和特征》在HTML5中,button标签用于定义一个可点击的按钮,它是创建交互式网页的重要元素之一,本文将深入解析HTML5中的button标签,详细介绍其属... 目录引言<button> 标签的基本用法<button> 标签的属性typevaluedisabled

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求