hal/external/marytts-5.1.2/doc/examples/client/MaryClientUser.java
Ziver Koc 405d7ebf02 Bug fix, Optimized imports, Changed Timer to ExecutorService
Former-commit-id: b23ccf25f1f121589bd8887dbe833b95db4d2b24
2015-12-18 17:20:33 +01:00

96 lines
4.1 KiB
Java
Executable file

/**
* Copyright 2000-2006 DFKI GmbH.
* All Rights Reserved. Use is subject to license terms.
*
* Permission is hereby granted, free of charge, to use and distribute
* this software and its documentation without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of this work, and to
* permit persons to whom this work is furnished to do so, subject to
* the following conditions:
*
* 1. The code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
* 2. Any modifications must be clearly marked as such.
* 3. Original authors' names are not deleted.
* 4. The authors' names are not used to endorse or promote products
* derived from this software without specific prior written
* permission.
*
* DFKI GMBH AND THE CONTRIBUTORS TO THIS WORK DISCLAIM ALL WARRANTIES WITH
* REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DFKI GMBH NOR THE
* CONTRIBUTORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
* THIS SOFTWARE.
*/
import marytts.client.MaryClient;
import marytts.util.data.audio.AudioPlayer;
import marytts.util.http.Address;
import javax.sound.sampled.*;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.UnknownHostException;
/**
* A demo class illustrating how to use the MaryClient class.
* This will connect to a MARY server, version 4.x.
* It requires maryclient.jar from MARY 4.0.
* This works transparently with MARY servers in both http and socket server mode.
*
* Compile this as follows:
* <code>javac -cp maryclient.jar MaryClientUser.java</code>
*
* And run as:
* <code>java -cp .:maryclient.jar MaryClientUser</code>
*
* @author marc
*
*/
public class MaryClientUser {
public static void main(String[] args)
throws IOException, UnknownHostException, UnsupportedAudioFileException,
InterruptedException
{
String serverHost = System.getProperty("server.host", "cling.dfki.uni-sb.de");
int serverPort = Integer.getInteger("server.port", 59125).intValue();
MaryClient mary = MaryClient.getMaryClient(new Address(serverHost, serverPort));
String text = "Willkommen in der Welt der Sprachsynthese!";
// If the given locale is not supported by the server, it returns
// an ambigous exception: "Problem processing the data."
String locale = "de"; // or US English (en-US), Telugu (te), Turkish (tr), ...
String inputType = "TEXT";
String outputType = "AUDIO";
String audioType = "WAVE";
String defaultVoiceName = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
mary.process(text, inputType, outputType, locale, audioType, defaultVoiceName, baos);
// The byte array constitutes a full wave file, including the headers.
// And now, play the audio data:
AudioInputStream ais = AudioSystem.getAudioInputStream(
new ByteArrayInputStream(baos.toByteArray()));
LineListener lineListener = new LineListener() {
public void update(LineEvent event) {
if (event.getType() == LineEvent.Type.START) {
System.err.println("Audio started playing.");
} else if (event.getType() == LineEvent.Type.STOP) {
System.err.println("Audio stopped playing.");
} else if (event.getType() == LineEvent.Type.OPEN) {
System.err.println("Audio line opened.");
} else if (event.getType() == LineEvent.Type.CLOSE) {
System.err.println("Audio line closed.");
}
}
};
AudioPlayer ap = new AudioPlayer(ais, lineListener);
ap.start();
}
}