⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 utterancetests.java

📁 文本转换成语音tts
💻 JAVA
字号:
/** * Copyright 2001 Sun Microsystems, Inc. *  * See the file "license.terms" for information on usage and * redistribution of this file, and for a DISCLAIMER OF ALL  * WARRANTIES. */package tests;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.StringTokenizer;import junit.framework.Test;import junit.framework.TestCase;import junit.framework.TestSuite;import com.sun.speech.freetts.Item;import com.sun.speech.freetts.ProcessException;import com.sun.speech.freetts.Relation;import com.sun.speech.freetts.Utterance;import com.sun.speech.freetts.UtteranceProcessor;import com.sun.speech.freetts.Voice;import com.sun.speech.freetts.VoiceManager;/** * JUNIT Tests for the Utterance class *  * @version 1.0 */public class UtteranceTests extends TestCase {    Voice voice;    Utterance utterance;    /**     * Creates the set of UtteranceTests     *      * @param  name the name of the test.     */    public UtteranceTests(String name) {	super(name);    }    /**     * Common code run before each test     */    protected void setUp() {	voice = VoiceManager.getInstance().getVoice("kevin");	utterance = new Utterance(voice);	List processors = voice.getUtteranceProcessors();	processors.add(new TestUtteranceProcessor("tokenizer"));	processors.add(new TestUtteranceProcessor("tokentowords"));	processors.add(new TestUtteranceProcessor("pauses"));	processors.add(new TestUtteranceProcessor("intonation"));	voice.getFeatures().setString("testFeature1", "testFeatureValue1");	voice.getFeatures().setString("sillyText", "how now brown cowboy!");	voice.getFeatures().setString("knock knock", "Who is there?");	utterance.setString("uttFeature1", "this is utt feature 1");	utterance.setString("whitespace", "_+_+_+_+_+_+_");	utterance.setString("blackspace", "####@#@#@@");	utterance.setString("inputText", "How now brown cow");	Relation tokens = utterance.createRelation("tokens");	StringTokenizer tok = new StringTokenizer(		  "January 1st 2001 How now brown cow "		+ " it's a far far better thing I do now than I've ever"		+ "done before");	while (tok.hasMoreTokens()) {	    String token = tok.nextToken();	    Item newItem = tokens.appendItem();	    newItem.getFeatures().setString("name", token);	    newItem.getFeatures().setString("punc", "");	    newItem.getFeatures().setString("stress", "1");	}	Relation words = utterance.createRelation("Words");	for (Item item = tokens.getHead(); 			item != null; item = item.getNext()) {	    if (item.getFeatures().getString("name").equals("2001")) {		Item word1 = item.createDaughter();		word1.getFeatures().setString("name", "two");		words.appendItem(word1);		Item word2 = item.createDaughter();		word2.getFeatures().setString("name", "thousand");		words.appendItem(word2);		Item word3 = item.createDaughter();		word3.getFeatures().setString("name", "one");		words.appendItem(word3);	    } else {		Item word = item.createDaughter();		word.getFeatures().setString("name",			item.getFeatures().getString("name").toLowerCase());		words.appendItem(word);	    }	}	wordSylSeg(utterance);    }     /**     * Populates an utterance with the word/syl/seg relations     *     * @param u	the utterance     */    private void wordSylSeg(Utterance u) {	Relation syl = u.createRelation("Syllable");	Relation sylStructure = u.createRelation("SylStructure");	Relation seg = u.createRelation("Segment");	for (Item word = u.getRelation("Words").getHead();			word != null; word = word.getNext()) {	    Item ssword = sylStructure.appendItem(word);	    List phones = lookup(word.getFeatures().getString("name"));	    for (Iterator pi = phones.iterator(); pi.hasNext(); ) {		Item segitem = seg.appendItem();		segitem.getFeatures().setString("name", (String) pi.next());		ssword.addDaughter(segitem);	    }	}    }    /**     * Breaks a word into characters     *      * @param word the word     *      * @return list of single character strings     */    private List lookup(String word) {	List l = new ArrayList();	for (int i = 0; i < word.length(); i++) {	    String ph = word.substring(i, i + 1);	    l.add(ph);	}	return l;    }    /**     * Test feature traversal behavior     */    public void testFeature1() {	assertTrue("syl exist", utterance.getRelation("Syllable") != null);	assertTrue("syls exist", utterance.getRelation("SylStructure") != null);	assertTrue("segment exists", utterance.getRelation("Segment") != null);	Item item = utterance.getRelation("Segment").getHead();	item = item.getNext();	item = item.getNext();	item = item.getNext();	// we should be at the 'u' in january	assertTrue("name",		item.findFeature("name").toString().equals("u"));	assertTrue("n.name",		item.findFeature("n.name").toString().equals("a"));	assertTrue("p.name",		item.findFeature("p.name").toString().equals("n"));	assertTrue("R:SylStructure.parent", 		item.findItem("R:SylStructure").toString().equals("u"));	assertTrue("R:SylStructure.parent",		item.findItem("R:SylStructure.parent").		toString().equals("january"));	assertTrue("R:SylStructure.parent.name",		item.findFeature("R:SylStructure.parent.name").toString()	        .equals("january"));	assertTrue("R:SylStructure.parent.n",		item.findItem("R:SylStructure.parent.n").toString()	        .equals("1st"));	Item token = utterance.getRelation("tokens").getHead();	assertTrue("token head", token.toString().equals("January"));	assertTrue("n.n.name", 		token.findFeature("n.n.name").toString().equals("2001"));	assertTrue("n.n.daughter.name", 		token.findFeature("n.n.daughter.name").		toString().equals("two"));	assertTrue("n.n.daughter.n.name", 		token.findFeature("n.n.daughter.n.name").		toString().equals("thousand"));	assertTrue("n.n.daughtern.name", 		token.findFeature("n.n.daughtern.name").		toString().equals("one"));    }    /**     * Common code run after each test     */    protected void tearDown() {	//utterance = null;    }     /**     * Tests to see that we succeed     */    public void testSuccess() {	assertTrue("Should succeed", true);    }    /**     * Tests to ensure that an utterance is created properly     */    public void testUtteranceCreation() {	assertTrue("Utterance Created", utterance != null);	assertTrue("retrieved proper voice", utterance.getVoice() == voice);    }    /**     * Tests the utterance relations capabilities     */    public void testUtteranceRelations() {	assertTrue("Utterance Created", utterance != null);	Relation tokens = utterance.createRelation("tokens");	assertTrue("retrieved token relation missing",		utterance.getRelation("tokens") == tokens);	assertTrue("token relation missing",		utterance.hasRelation("tokens"));	assertTrue("missing relation found",		!utterance.hasRelation("missing_relation"));	assertTrue("retrieved missing token relation found",		utterance.getRelation("missing_relation") == null);    }    /**     * Tests the utterance features capabilities     */    public void testUtteranceFeatures() {	assertTrue("Utterance Created", utterance != null);	assertTrue("Missing feature found", !utterance.isPresent("not_present"));	utterance.setString("is_present", "here I am");	assertTrue("presnt feature found", utterance.isPresent("is_present"));	assertTrue("present feature retreived", 		utterance.getString("is_present").equals("here I am"));	assertTrue("missing voice feature found",		!utterance.isPresent("voice_feature"));	voice.getFeatures().setString("voice_feature", "is_set");	assertTrue("voice feature missing",		voice.getFeatures().isPresent("voice_feature"));	assertTrue("voice feature missing",		utterance.isPresent("voice_feature"));	assertTrue("voice present feature retreived", 		utterance.getString("voice_feature").equals("is_set"));	utterance.setFloat("pi", (float) Math.PI);	assertTrue("float get", utterance.getFloat("pi") == (float) Math.PI);	utterance.setInt("one", 1);	assertTrue("int get", utterance.getInt("one") == 1);	Object o = new Object();	utterance.setObject("object", o);	assertTrue("object get", utterance.getObject("object") == o);	try {	    utterance.getFloat("one");	    assertTrue("Cast exception mission", false);	} catch (ClassCastException e) {	    assertTrue("cast error OK", true);	}	utterance.remove("one");	assertTrue("removed  feature found", !utterance.isPresent("one"));    }    /**     * Tests the detailed relations capabilities     */    public void testRelations() {	int index = 0;;	int testSize = 10;	Item[] items = new Item[testSize];	Relation r = utterance.createRelation("itemTests");	for (int i = 0; i < testSize; i++) {	    items[i] = r.appendItem();	}	assertTrue("utterance OK", r.getUtterance() == utterance);	assertTrue("Name ok", r.getName().equals("itemTests"));	index = 0;	for (Item item = r.getHead(); item != null; 			item = item.getNext(), index++) {	    assertTrue("Proper items", items[index] == item);	}	assertTrue("Items not equal", !items[0].getSharedContents().equals(		    			items[1].getSharedContents()));	Item dup  = r.appendItem();	Item dup2 = r.appendItem(dup);	assertTrue("Items should be equal", dup.getSharedContents().equals(		    			    dup2.getSharedContents()));    }    /**     * Tests the Item class capabilities     */    public void testItems() {	Relation r = utterance.createRelation("tokens");	Relation r2 = utterance.createRelation("words");	Item parent  = r.appendItem();	Item i2 = r.appendItem();	Item dup2 = r.appendItem(i2);	Item d1 = parent.createDaughter();	Item d2 = parent.createDaughter();	Item d3 = parent.createDaughter();	assertTrue("dup equals",		dup2.getSharedContents().equals(i2.getSharedContents()));	assertTrue("parent check 1", d1.getParent() == parent);	assertTrue("parent check 2", d2.getParent() == parent);	assertTrue("parent check 3", d3.getParent() == parent);	//assertTrue("daugher size", parent.getDaughters().size() == 3);	assertTrue("first daughter", parent.getDaughter() == d1);	assertTrue("second daughter", parent.getNthDaughter(1) == d2);	assertTrue("Last daughter", parent.getLastDaughter() == d3);	assertTrue("owner", parent.getOwnerRelation() == r);	Item r2i1 = r2.appendItem();	assertTrue("owner r2i1", r2i1.getOwnerRelation() == r2);	Item r1i1 = r.appendItem(r2i1);	assertTrue("r1,r2 equal",		r1i1.getSharedContents().equals(r2i1.getSharedContents()));	assertTrue("owner r2i1 reprise", r2i1.getOwnerRelation() == r2);	assertTrue("owner r1i1 ", r1i1.getOwnerRelation() == r);	assertTrue("no parent", r2i1.getParent() == null);	assertTrue("r1i1 no daughters", !r1i1.hasDaughters());	assertTrue("r1i1 utterance", r1i1.getUtterance() == utterance);      // test the feature capability	assertTrue("Missing feature found", 		!r1i1.getFeatures().isPresent("not_present"));	r1i1.getFeatures().setString("is_present", "here I am");	assertTrue("presnt feature found", 		r1i1.getFeatures().isPresent("is_present"));	assertTrue("present feature retreived", 		r1i1.getFeatures().getString("is_present").equals("here I am"));	assertTrue("missing voice feature found",		!r1i1.getFeatures().isPresent("voice_feature"));	r1i1.getFeatures().setFloat("pi", (float) Math.PI);	assertTrue("float get", 		r1i1.getFeatures().getFloat("pi") == (float) Math.PI);	assertTrue("float get r2", 		r2i1.getFeatures().getFloat("pi") == (float) Math.PI);	r1i1.getFeatures().setInt("one", 1);	assertTrue("int get", r1i1.getFeatures().getInt("one") == 1);	Object o = new Object();	r1i1.getFeatures().setObject("object", o);	assertTrue("object get", r1i1.getFeatures().getObject("object") == o);	assertTrue("object get r2", r2i1.getFeatures().getObject("object") == o);	try {	    r1i1.getFeatures().getFloat("one");	    assertTrue("Cast exception mission", false);	} catch (ClassCastException e) {	    assertTrue("cast error OK", true);	}	r1i1.getFeatures().remove("one");	assertTrue("removed  feature found", !r1i1.getFeatures().isPresent("one"));    }    /**     * Factory method that creates the test suite.     *      * @return the test suite.     */    public static Test suite() {	return new TestSuite(UtteranceTests.class);    }     /**     * Main entry point for this test suite.     *      * @param  args    the command line arguments.     */    public static void main(String[] args) {	junit.textui.TestRunner.run(suite());    } }/** * A test utterance processor */class TestUtteranceProcessor implements UtteranceProcessor {    String name;    public TestUtteranceProcessor(String name) {	this.name = name;    }    public void processUtterance(Utterance u) throws ProcessException {	System.out.println("Processing " + name);    }    public String toString() {	return name;    }}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -