Amazon Polly
Guía para desarrolladores

Ejemplo de Java

En este ejemplo se muestra cómo utilizar Amazon Polly para transmitir un fragmento hablado desde una aplicación basada en Java. En este ejemplo se utiliza AWS SDK para Java para leer el texto especificado con una voz seleccionada en una lista.

El código mostrado incluye la mayoría de las tareas, pero la comprobación de errores es mínima. Si Amazon Polly encuentra un error, la aplicación termina.

Para ejecutar esta aplicación de ejemplo, necesita lo siguiente:

Para probar la aplicación

  1. Asegúrese de que la variable de entorno JAVA_HOME está configurada para JDK.

    Por ejemplo, si JDK 1.8.0_121 está instalado en Windows en la carpeta C:\Program Files\Java\jdk1.8.0_121, tendría que especificar lo siguiente en el símbolo del sistema:

    set JAVA_HOME=""C:\Program Files\Java\jdk1.8.0_121""

    Si JDK 1.8.0_121 está instalado en Linux en la carpeta /usr/lib/jvm/java8-openjdk-amd64 , tendría que especificar lo siguiente en el símbolo del sistema:

    export JAVA_HOME=/usr/lib/jvm/java8-openjdk-amd64
  2. Configure las variables de entorno de Maven para ejecutar Maven desde la línea de comandos.

    Por ejemplo, si Maven 3.3.9 está instalado en Windows en la carpeta C:\Program Files\apache-maven-3.3.9, tendría que especificar lo siguiente:

    set M2_HOME=""C:\Program Files\apache-maven-3.3.9"" set M2=%M2_HOME%\bin set PATH=%M2%;%PATH%

    Si Maven 3.3.9 está instalado en Linux en la carpeta /home/ec2-user/opt/apache-maven-3.3.9, tendría que especificar lo siguiente:

    export M2_HOME=/home/ec2-user/opt/apache-maven-3.3.9 export M2=$M2_HOME/bin export PATH=$M2:$PATH
  3. Cree un nuevo directorio llamado polly-java-demo.

  4. En el directorio polly-java-demo, cree un archivo llamado pom.xml y pegue el siguiente código en él:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.amazonaws.polly</groupId> <artifactId>java-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-polly --> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-polly</artifactId> <version>1.11.77</version> </dependency> <!-- https://mvnrepository.com/artifact/com.googlecode.soundlibs/jlayer --> <dependency> <groupId>com.googlecode.soundlibs</groupId> <artifactId>jlayer</artifactId> <version>1.0.1-1</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <mainClass>com.amazonaws.demos.polly.PollyDemo</mainClass> </configuration> </plugin> </plugins> </build> </project>
  5. Cree un nuevo directorio llamado polly en src/main/java/com/amazonaws/demos.

  6. En el directorio polly, cree un nuevo archivo de origen de Java llamado PollyDemo.java y pegue el siguiente código:

    package com.amazonaws.demos.polly; import java.io.IOException; import java.io.InputStream; import com.amazonaws.ClientConfiguration; import com.amazonaws.auth.DefaultAWSCredentialsProviderChain; import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import com.amazonaws.services.polly.AmazonPollyClient; import com.amazonaws.services.polly.model.DescribeVoicesRequest; import com.amazonaws.services.polly.model.DescribeVoicesResult; import com.amazonaws.services.polly.model.OutputFormat; import com.amazonaws.services.polly.model.SynthesizeSpeechRequest; import com.amazonaws.services.polly.model.SynthesizeSpeechResult; import com.amazonaws.services.polly.model.Voice; import javazoom.jl.player.advanced.AdvancedPlayer; import javazoom.jl.player.advanced.PlaybackEvent; import javazoom.jl.player.advanced.PlaybackListener; public class PollyDemo { private final AmazonPollyClient polly; private final Voice voice; private static final String SAMPLE = "Congratulations. You have successfully built this working demo of Amazon Polly in Java. Have fun building voice enabled apps with Amazon Polly (that's me!), and always look at the AWS website for tips and tricks on using Amazon Polly and other great services from AWS"; public PollyDemo(Region region) { // create an Amazon Polly client in a specific region polly = new AmazonPollyClient(new DefaultAWSCredentialsProviderChain(), new ClientConfiguration()); polly.setRegion(region); // Create describe voices request. DescribeVoicesRequest describeVoicesRequest = new DescribeVoicesRequest(); // Synchronously ask Amazon Polly to describe available TTS voices. DescribeVoicesResult describeVoicesResult = polly.describeVoices(describeVoicesRequest); voice = describeVoicesResult.getVoices().get(0); } public InputStream synthesize(String text, OutputFormat format) throws IOException { SynthesizeSpeechRequest synthReq = new SynthesizeSpeechRequest().withText(text).withVoiceId(voice.getId()) .withOutputFormat(format); SynthesizeSpeechResult synthRes = polly.synthesizeSpeech(synthReq); return synthRes.getAudioStream(); } public static void main(String args[]) throws Exception { //create the test class PollyDemo helloWorld = new PollyDemo(Region.getRegion(Regions.US_EAST_1)); //get the audio stream InputStream speechStream = helloWorld.synthesize(SAMPLE, OutputFormat.Mp3); //create an MP3 player AdvancedPlayer player = new AdvancedPlayer(speechStream, javazoom.jl.player.FactoryRegistry.systemRegistry().createAudioDevice()); player.setPlayBackListener(new PlaybackListener() { @Override public void playbackStarted(PlaybackEvent evt) { System.out.println("Playback started"); System.out.println(SAMPLE); } @Override public void playbackFinished(PlaybackEvent evt) { System.out.println("Playback finished"); } }); // play it! player.play(); } }
  7. Vuelva al directorio polly-java-demo para limpiar, compilar y ejecutar la demostración:

    mvn clean compile exec:java