📄 pausegenerator.java
字号:
/** * Portions Copyright 2001 Sun Microsystems, Inc. * Portions Copyright 1999-2001 Language Technologies Institute, * Carnegie Mellon University. * All Rights Reserved. Use is subject to license terms. * * See the file "license.terms" for information on usage and * redistribution of this file, and for a DISCLAIMER OF ALL * WARRANTIES. */package com.sun.speech.freetts.en;import com.sun.speech.freetts.UtteranceProcessor;import com.sun.speech.freetts.Utterance;import com.sun.speech.freetts.FeatureSet;import com.sun.speech.freetts.Item;import com.sun.speech.freetts.Relation;import com.sun.speech.freetts.PathExtractorImpl;import com.sun.speech.freetts.PathExtractor;import com.sun.speech.freetts.ProcessException;import com.sun.speech.freetts.Voice;import java.io.BufferedInputStream;import java.io.InputStream;import java.io.FileInputStream;import java.io.IOException;import java.util.List;import java.util.LinkedList;import java.util.Iterator;/** * Annotates an utterance with pause information. */public class PauseGenerator implements UtteranceProcessor { private final static PathExtractor segmentPath = new PathExtractorImpl("R:SylStructure.daughtern.daughtern.R:Segment", false); private final static PathExtractor puncPath = new PathExtractorImpl("R:Token.parent.punc", true); /** * Constructs a PauseGenerator */ public PauseGenerator() { } /** * Annotates an utterance with pause information. * * @param utterance the utterance to process * * @throws ProcessException if an error occurs while * processing of the utterance */ public void processUtterance(Utterance utterance) throws ProcessException { String silence = utterance.getVoice().getFeatures(). getString(Voice.FEATURE_SILENCE); Item phraseHead = utterance.getRelation(Relation.PHRASE).getHead(); // If there are not any phrases at all, then just skip // the whole thing. if (phraseHead == null) { return; } // insert initial silence Relation segment = utterance.getRelation(Relation.SEGMENT); Item s = segment.getHead(); if (s == null) { s = segment.appendItem(null); } else { s = s.prependItem(null); } s.getFeatures().setString("name", silence); for (Item phrase = phraseHead; phrase != null; phrase = phrase.getNext()) { Item word = phrase.getLastDaughter(); while (word != null) { Item seg = segmentPath.findItem(word); // was this an explicit change or a lost bug fix //if (seg != null && !"".equals(puncPath.findFeature(word))) { if (seg != null) { Item pause = seg.appendItem(null); pause.getFeatures().setString("name", silence); break; } word = word.getPrevious(); } } } /** * Returns the string representation of the object * * @return the string representation of the object */ public String toString() { return "PauseGenerator"; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -