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

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

0 голосов
/ 28 февраля 2019

Я работаю над проектом, где мне нужно сгенерировать капчу с помощью SpringBoot.Я хочу иметь функцию «текст в речь», и звуковой файл должен быть сгенерирован с помощью 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);
    }
...