Java の例 - Amazon Polly

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Java の例

この例は、Amazon Polly を使用して Java ベースのアプリケーションでスピーチをストリームする方法を示しています。この例は AWS SDK for Java を使用して、リストから選択された音声を使用して指定したテキストを読み上げています。

表示されているコードは主なタスクをカバーしていますが、最低限のエラーチェックのみを行います。Amazon Polly がエラーに遭遇した場合、アプリケーションは終了します。

このサンプルアプリケーションを実行するには、以下のものが必要です。

アプリケーションをテストするには

  1. JAVA_HOME 環境変数が JDKに設定されていることを確認します。

    たとえば、Windows で JDK 1.8.0_121 を C:\Program Files\Java\jdk1.8.0_121 にインストールした場合、コマンドプロンプトで以下を入力します。

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

    Linux に JDK 1.8.0_121を /usr/lib/jvm/java8-openjdk-amd64 にインストールした場合、コマンドプロンプトで以下を入力してください。

    export JAVA_HOME=/usr/lib/jvm/java8-openjdk-amd64
  2. コマンドラインから Maven を実行するには Maven 環境変数を設定します。

    たとえば、Windows で Maven 3.3.9を C:\Program Files\apache-maven-3.3.9 にインストールした場合、次を入力します。

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

    Linux で Maven 3.3.9 を /home/ec2-user/opt/apache-maven-3.3.9 にインストールした場合は、以下を入力します。

    export M2_HOME=/home/ec2-user/opt/apache-maven-3.3.9 export M2=$M2_HOME/bin export PATH=$M2:$PATH
  3. polly-java-demo という名前のディレクトリを作成します。

  4. polly-java-demo ディレクトリで、pom.xml という名前のファイルを作成し、次のコードを貼り付けます。

    <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. polly という名前のディレクトリを src/main/java/com/amazonaws/demos に作成します。

  6. polly ディレクトリで、PollyDemo.java という名前の新しい Java ソースファイルを作成し、次のコードを貼り付けます。

    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).withEngine("neural"); 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. polly-java-demo ディレクトリに戻り、そのデモをクリーン、コンパイル、そして実行します。

    mvn clean compile exec:java