GState

本类方法:

private Set<UnitContext> getStartingContexts();得到此节点的开始场景集,开始场景为一个长度等于最大的右场景尺寸的unit[]集。如果此节点为空节点,则开始场景是此节点直接后续节点的所有开始场景的集合,否则的话从节点字的每一发音来创建开始场景。返回的是startingContexts属性。

private UnitContext getStartingContext(Pronunciation pronunciation);给定字的发音获得其开始单元场景。输入:pronunciation为节点字发音。返回的是表示此发音的开始单元场景。此UnitContext中的unit[]为pronunciation中的unit[]或者unit[]中的一部分。

Collection<UnitContext>getEndingContexts();获得此节点的尾部场景集。尾部场景为与节点的结尾相匹配的长度为最大左场景长度的unit[]集合。根据字的每一发音来根据unitContext,此unitContext中的unit[]为Arrays.copyOfRange(units,size - maxSize, size) 或units。Unit为发音的unit[]。

  private void pullRightContexts();访问所有的后续GState即后续语法节点,把它们的开始场景加入到此gstate的右场景中即RightContexts中。

private GrammarArc[] getSuccessors();返回gstate相关的语法节点的直接后续弧。如果一个后续弧的语法节点中不存在任何字,则我们将会代替弧来代替那个节点,以避免过程中的出现循环。返回的是此gstate语法状态的后续弧组成的数组。

private void addLeftContext(Collection<UnitContext> context);把给定的左场景集加入到此gstate的左场景集中。Context为要添加的单元场景集

private void addLeftContext(UnitContext context);添加给定的单元场景到此gstate的左单元场景集中。Context为要添加的单元场景。

void pushLeftContexts(Set<GrammarNode>visitedSet, Collection<UnitContext> leftContext);把给定的左场景集添加入后续的每一个gstate中,即LeftContexts中。如果其中的一个后续的gstate的字是空的,即是空,那么继续把给定左场景集添加入空的gstate的所有后续gstate中。

void pushLeftContexts();访问此gstate的所有后续gstate,并把此gstate的结尾场景推入后续gstate的左场景中,在此方法中调用了pushLeftContexts(visitedSet, endingContext);来实现的。

private List<SearchState> getEntryPoints(ContextPaircontextPair);返回一个给定场景对的进入点,即entryPoints.get(contextPair);

public SentenceHMMState getEntryPoint();获得此gstate的自由场景的进入点。自由场景context-free,即左右单元场景都是单元静音场景的场景对。理想意义上:我们将会查看没有左场景的每一个进入点,但是那些是不存在的,所以我们仅需要一个有SILENCE静音场景的节点的第一个进入点。这假设在一个语法中的第一个节点有一个字为SIL。这种假设不是所有的时候都是合法的。

  public void collectContexts();收集此gstate的右场景,把此gstate节点的结尾场景推入到下直接后续的节点集中。此方法仅调用:pullRightContexts();和

pushLeftContexts();

 

 

 

 

 

 

 

 

 

  private UnitContextgetStartingContext(Pronunciation pronunciation);为给定的发音对象得到开始单元场景。返回的是一个单元场景对象,代表了发音的开始场景。

protected int getRightContextSize();获得右场景的长度。通过声学模型获得

  protected intgetLeftContextSize();获得左场景的长度。通过声学模型获得。

 private intgetRightContextSize(Unit unit);获得感兴趣单元的最大右场景长度即尺寸。输入参数:unit为感兴趣的单元。如果单元是填充单元,则返回的是0,否则返回的是声学模型的右单元场景的长度尺寸。

private int getLeftContextSize(Unit unit);获得感兴趣单元的最大左场景长度即尺寸。输入参数:unit为感兴趣的单元。如果单元是填充单元,则返回的是0,否则返回的是声学模型的左单元场景的长度尺寸。

private Unit[] getRC(Unit[] units, int index, UnitContext right);根据右单元场景的尺寸,退出右单元场景和当前的单元为一个单元获得其右场景。输入参数:units为单元集,index为当前单元的索引。Right为退出的又单元场景。返回的是在输入单元数组中的当前单元的右单元数组表示右场景。

  private Unit[]getLC(UnitContext left, Unit[] units, int index);根据左单元场景的尺寸,进入的左单元场景和当前的单元为一个单元获得其左单元(场景)。输入参数:units为单元集,index为在units中的当前单元的索引。left为进入的左单元场景。返回的是在输入单元数组中的当前单元的左单元数组表示左场景。

private void addExitPoint(ContextPair cp, SentenceHMMState state);添加一个退出点到此语法状态中。输入参数:cp为此状态的场景标签,为场景对。state为与标签相关的状态,为句hmm状态。得到cp对于的搜索状态列表,在列表中添加输入的状态。如果搜索状态列表为null,则新建一个搜索状态列表,并把cp和搜索状态列表放入退出 点中即exitPoints中,再搜索列表中添加输入的句hmm状态。

private SentenceHMMState getExistingState(SentenceHMMState state);输入参数为:state为要检查的状态。返回的是在ExistingState中的句hmm状态。如果有相同签名的状态存在则为true。检查在ExistingState中是否有一个状态与给定的退出状态相匹配。

public Collection<SearchState> getStates();返回由此gstate语法状态维护的所有状态。返回的是所有状态的集合。因为pstate状态是没有放在缓存中的,所以我们必须收集那些状态。其它的所有状态都存在于existingstates 缓存中。

private void addStateToCache(SentenceHMMState state);添加给定状态到状态缓存中。即添加入existingstates 属性中。

   void dumpInfo();打印此gstate的信息。

void dumpDetails();打印此gstate的详细信息。

private void dumpNextNodes();打印此语法节点的直接后续语法节点的名字。

private void dumpExitPoints(Collection<List<SearchState>>eps);输入参数为:eps为退出点集合。打印出退出点和它们的目标状态。

private void dumpCollection(String name, Collection<?> collection);打印出给定的集合。Name为集合的名字。Collection为要打印的集合。

public String toString();返回此gstate的字符串表示。

private void T(String s);s为要跟踪的字符串。快速及讨厌的跟踪。跟踪字符串如果’tracing’为true的话。

protected void attachState(SentenceHMMStateprevState,SentenceHMMState nextState,float logLanguageProbablity, float logInsertionProbablity);用弧连接输入给定的两个状态。prevState为父状态,nextState为子状态。转移有给定的概率。logLanguageProbablity为log域的转移语音概率。logInsertionProbablity为log域的转移的插入概率。

private void connect(List<SearchState> sourceList,List<SearchState> destList, float logLangProb);在源列表中的所有状态连接到目标列表中的状态。sourceList为源状态集。destList为目标状态集。

public void connect();连接所有的GState。每一个GState现在都有一个退出点表即此表存储了所有的退出点。这些退出点表示了此节点的尾部状态。那些尾部状态中的每一个都被一个contextpair对象所标记,这显示了转移的左场景(退出场景)和右场景(进入的场景)。为了连接到一个状态,连接需遵循以下步骤:1,迭代通过此(语法节点)状态的所有语法后续(弧)。2,得到与退出点相匹配的进入点。3,连接它们。即Hook them up。注意:对于一个有1000个字的任务,这将会涉及到35,000,000次连接检查和2,000,000的连接。在计算概率时,用发音的数目来调整语音概率,如果一个字有3中不同发音的方式,则每一个发音为总概率的1/3。

 

 

 

 

 

private SentenceHMMState attachUnit(PronunciationState parent,

SentenceHMMState tail, Unit[]units, int which,UnitContext leftContext, UnitContext rightContext);

 

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
正常情况下,Win7/Win8.1用户需要先在当前系统基础上执行Win10升级安装,才能够保证升级后自动激活。本文给出跳过升级过程,直接全新安装Win10并激活系统的方法。针对那些想要升级Win10,但想直接全新安装Win10,而不想执行漫长的升级过程的Win7/Win8.1用户。即适用于具有以下要求和条件的用户: ① 正在使用Win7/Win8.1系统; ② 没有升级过Win10;(如果你已经升级过并且升级后已经激活,那么直接全新安装同一个版本Win10就可以了,不必采用下文方法;) ③ 想直接格式化全新安装Win10并且激活,或者想直接再安装一个Win10组成双系统并激活;(如果你想保留现有软件和文件,直接在当前系统中运行setup安装即可,不必采用下文方法。) 当然,你还需要保证当前的Win7/Win8.1系统已经激活。并且保证所使用的Win10镜像与当前的Win7/Win8.1系统相匹配。关于系统激活状态查看方法以及升级前后的版本对应关系。 原理简析: 从Win7/Win8.1免费升级Win10,安装程序会对当前的Win7/Win8.1的系统版本和激活状态进行检测,并生成一份检测报告。在升级到Win10后,系统会根据这份报告来决定是否自动激活,并报告给微软服务器认证,认证通过后会准许激活。激活的同时,微软服务器也就将你的电脑记录下来了。之后你再全新安装Win10时,联网情况下就会自动激活。 那么,避开升级过程,直接全新安装Win10并激活的方法其实就很简单了:在Win7/Win8.1系统中直接将安装程序生成的报告文件(这个文件在正式升级前已生成)保存下来,然后全新安装Win10,安装完成后再将报告文件放到正确的目录,重启电脑(之后可能需要你手动点击激活按钮)就会自动激活了。 本方法与正常执行升级安装效果相同:微软服务器同样会记录激活信息,再次重新安装后不用任何操作,联网会自动激活。 具体操作方法: 1、在Win7/Win8.1系统中,打开你下载的Win10 ISO系统镜像,在Sources目录中找到gatherosstate.exe程序,把它复制到桌面。 2、双击gatherosstate.exe,稍等片刻会在桌面生成名为GenuineTicket.xml的文档。这份文档就是当前系统激活状态验证信息了,保存下来。感兴趣的话可用记事本打开,是用XML标记语言进行描述的。 3、用你熟悉的方法全新安装Win10,注意一定要保证(Win7/Win8.1 <—> Win10)前后版本对应关系要正确,在安装时凡是要求输入密钥的地方一律跳过。 4、安装完成后,按键盘Windows徽标键+R键,打开运行,输入 %ProgramData%\Microsoft\Windows\ClipSVC\GenuineTicket(直接复制粘贴) 点确定即可打开目录。然后将保存的GenuineTicket.xml复制到这个目录中。 5、重启电脑,确保电脑已联网。稍等片刻或者在系统属性中手动点击“立即激活”按钮即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值