AWS Создание mp3-файла Amazon Polly через java - PullRequest
0 голосов
/ 25 января 2020

У меня есть требование создать компонент преобразования текста в речь, используя AEM (Java), и я использую Amazon Polly для этого. Мне нужно AWS библиотека с версией SDK 2.0. Я отправляю текст в запросе и напрямую сохраняю mp3-файл в корзину AWS S3, а взамен мне нужен URL-адрес mp3-файла. Я не могу найти ни одного примера, где Полли используется для создания mp3-файла и напрямую сохраняется в S3 Bucket. Любой, кто может дать мне пример, чтобы сделать это через java?

1 Ответ

0 голосов
/ 29 января 2020

Вот один (https://docs.aws.amazon.com/polly/latest/dg/SynthesizeSpeechSample.html)

package com.amazonaws.polly.samples;

import com.amazonaws.services.polly.AmazonPolly;
import com.amazonaws.services.polly.AmazonPollyClientBuilder;
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.VoiceId;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;

public class SynthesizeSpeechSample {
    AmazonPolly client = AmazonPollyClientBuilder.defaultClient();

    public void synthesizeSpeech() {
        String outputFileName = "/tmp/speech.mp3";

        SynthesizeSpeechRequest synthesizeSpeechRequest = new SynthesizeSpeechRequest()
                .withOutputFormat(OutputFormat.Mp3)
                .withVoiceId(VoiceId.Joanna)
                .withText("This is a sample text to be synthesized.");

        try (FileOutputStream outputStream = new FileOutputStream(new File(outputFileName))) {
            SynthesizeSpeechResult synthesizeSpeechResult = client.synthesizeSpeech(synthesizeSpeechRequest);
            byte[] buffer = new byte[2 * 1024];
            int readBytes;

            try (InputStream in = synthesizeSpeechResult.getAudioStream()){
                while ((readBytes = in.read(buffer)) > 0) {
                    outputStream.write(buffer, 0, readBytes);
                }
            }
        } catch (Exception e) {
            System.err.println("Exception caught: " + e);
        }
    }
}
...