package com.example.microsofttts.controller;
import com.microsoft.cognitiveservices.speech.*;
import com.microsoft.cognitiveservices.speech.audio.AudioConfig;
import com.microsoft.cognitiveservices.speech.audio.AudioOutputStream;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.net.URI;
import java.nio.file.Files;
import java.util.concurrent.ExecutionException;
@RestController
@RequestMapping("/tts")
public class TTSController {
@Value("${azure.speech.key}")
private String speechKey;
@Value("${azure.speech.endpoint}")
private String speechEndpoint;
@GetMapping("/tts")
public ResponseEntity<byte[]> synthesize(@RequestParam String text) {
try {
SpeechConfig config = SpeechConfig.fromEndpoint(new URI(speechEndpoint), speechKey);
//config.setSpeechSynthesisVoiceName("zh-CN-XiaoxiaoNeural");
File wavFile = File.createTempFile("tts-", ".wav");
AudioConfig audioConfig = AudioConfig.fromWavFileOutput(wavFile.getAbsolutePath());
SpeechSynthesizer synthesizer = new SpeechSynthesizer(config, audioConfig);
SpeechSynthesisResult result = synthesizer.SpeakTextAsync(text).get();
if (result.getReason() == ResultReason.SynthesizingAudioCompleted) {
byte[] audioBytes = Files.readAllBytes(wavFile.toPath());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDisposition(ContentDisposition.attachment().filename("tts.wav").build());
return new ResponseEntity<>(audioBytes, headers, HttpStatus.OK);
} else {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
}
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
}
}
}
访问
http://localhost:8080/tts/tts?text=xxxxxxxxxxxxxxxxxx
直接下载