Java текст в речь (Spring Boot)

Я работаю над проектом, где мне нужно сгенерировать капчу с SpringBoot. Я хочу иметь функцию "text to speech", и звуковой файл должен быть создан с помощью SpringBoot (иначе это было бы огромной проблемой безопасности).

Я сгенерировал изображение капчи и преобразовал его в Base64String, чтобы отправить его клиенту. Я использовал SimpleCaptcha для этого.

Моя проблема: я не могу сгенерировать аудиофайл с той же случайной строкой в ​​SimpleAudio. Он всегда генерирует новый. Сейчас я ищу решение - я просто хочу создать аудиофайл с той же строкой, что и на изображении.

Вот мой код:

Это изображение с картинки:

@RestController
public class MyCaptchaController {

    private String Captcha_Text;
    TextProducer tp;

    MyCaptcha cap = new MyCaptcha();

    @GetMapping(value = "/getNewCaptcha")   
    public @ResponseBody MyCaptcha getNewCaptcha() throws IOException
    {               
        Captcha captcha = new Captcha.Builder(200, 70)
                     .addText()
                     .addBackground(new FlatColorBackgroundProducer(new Color(231, 235, 240)))
                     .addNoise()
                     .addNoise()
                     .build(); // Required! Always!


        System.out.println(captcha.getAnswer());
        Captcha_Text = captcha.getAnswer(); 

        String base64Captcha = imgToBase64String(captcha.getImage(), "jpeg");
        System.out.println("Bild: " + base64Captcha);       

        cap.setText(base64Captcha);
        cap.setKlartext(Captcha_Text);

        return cap;
    }

и это должен быть звук (не работает):

@RequestMapping(value = "/recfile", method = RequestMethod.GET,
            produces = { MediaType.APPLICATION_OCTET_STREAM_VALUE })
    public HttpEntity<byte[]> downloadRecipientFile(
            ModelMap model, HttpServletResponse response) throws IOException,
            ServletException {      

        AudioCaptcha ac = new AudioCaptcha.Builder()
                .addAnswer()
                .addNoise()
                .build();

        CaptchaServletUtil.writeAudio(response, ac.getChallenge());

        HttpHeaders header = new HttpHeaders();
        header.setContentType(new MediaType("audio", "vnd.wav"));

        return new HttpEntity<byte[]>(ac.getChallenge().asByteArray(), header);
    }

0 ответов

Другие вопросы по тегам