java sdk for Edge Read Aloud
<dependency>
<groupId>io.github.whitemagic2014</groupId>
<artifactId>tts-edge-java</artifactId>
<version>version</version>
</dependency>
implementation group: 'io.github.whitemagic2014', name: 'tts-edge-java', version: 'version'
short
implementation 'io.github.whitemagic2014:tts-edge-java:version'
@Test
void should_convert_to_mp3_file_success_with_single_content() {
String voiceName = "zh-CN-XiaoyiNeural";
Optional<Voice> voiceOptional = TTSVoice.provides()
.stream()
.filter(v -> voiceName.equals(v.getShortName()))
.findFirst();
if (!voiceOptional.isPresent()) {
throw new IllegalStateException("voice not found:" + voiceName);
}
Voice voice = voiceOptional.get();
String filename = voiceName + "-" + "test-tts";
String content = "你好,有什么可以帮助你的吗,今天的天气很不错呢";
TTS tts = new TTS(voice, content)
.findHeadHook()
.isRateLimited(true) // Set to true to resolve the rate limiting issue in certain regions.
.fileName(filename)// You can customize the file name; if omitted, a random file name will be generated.
.overwrite(true) // When the specified file name is the same, it will either overwrite or append to the file.
.formatMp3(); // default mp3.
// .formatOpus() // or opus
// .voicePitch()
// .voiceRate()
// .voiceVolume()
// .storage() // the output file storage ,default is ./storage
// .connectTimeout(0) // set connect timeout
tts.trans();
// you can find the voice file in storage folder
}
void should_convert_to_mp3_file_success_with_multi_content() throws IOException {
String voiceName = "zh-CN-XiaoyiNeural";
Optional<Voice> voiceOptional = TTSVoice.provides()
.stream()
.filter(v -> voiceName.equals(v.getShortName()))
.findFirst();
if (!voiceOptional.isPresent()) {
throw new IllegalStateException("voice not found:" + voiceName);
}
Voice voice = voiceOptional.get();
List<TransRecord> recordList = new ArrayList<>();
String store = "./storage";
// create batch task
for (int i = 0; i < 100; i++) {
TransRecord record = new TransRecord();
record.setContent(i + ", hello tts, 你好,有什么可以帮助你的吗");
record.setFilename(i + ".test-tts");
recordList.add(record);
Files.deleteIfExists(Paths.get(buildFilename(store, record)));
}
new TTS(voice)
.findHeadHook()
.isRateLimited(true)
.overwrite(true)
.batch(recordList) // set batch task
.parallel(12) // set up 12 parallel threads
.storage(store)
.formatMp3()
.batchTrans(); // trans
for (TransRecord record : recordList) {
Path path = Paths.get(buildFilename(store, record));
Assertions.assertTrue(Files.exists(path), "file not found in " + path.toString());
}
}
private static String buildFilename(String store, TransRecord record) {
return store + File.separator + record.getFilename() + ".mp3";
}
- Optimize: Optimize parallel tasks PR#15
- New: Now supports batch conversion of multiple text tasks within a single TTS transaction.
- Optimize: A new parameter,
enableVttFile
, has been added. This parameter determines whether VTT file support is enabled, with the default setting beingfalse
- Optimize: Refactored some of the code.
- Update: Upgraded some dependency packages.
- Thanks to user lifeopsgo for making nearly all the contributions to this version update.PR#13
- Resolve Conversion Issues Caused by Special Characters.PR#9
- Optimize: Setting the parameter
isRateLimited
to true can resolve rate limiting issues in certain regions. - Thanks to user PoliceZ, the answer in the issue was helpful to me.
- Optimize: The default value for the
overWrite
parameter is now true.
- Optimize: A new parameter,
overWrite
, has been added. When the same file name is provided, if overWrite =true
, it will overwrite the original audio file and VTT subtitle file. If overWrite =false
, it will continue to append to the original audio file and VTT subtitle file.
- Optimize: TTS can now set connectTimeout.
- New: In this update, 17 new supported voices have been added, as follows:
en-US-AvaMultilingualNeural
en-US-AndrewMultilingualNeural
en-US-EmmaMultilingualNeural
en-US-BrianMultilingualNeural
en-US-AvaNeural
en-US-AndrewNeural
en-US-EmmaNeural
en-US-BrianNeural
fr-CA-ThierryNeural
fr-FR-VivienneMultilingualNeural
fr-FR-RemyMultilingualNeural
de-DE-SeraphinaMultilingualNeural
de-DE-FlorianMultilingualNeural
it-IT-GiuseppeNeural
ko-KR-HyunsuNeural
pt-BR-ThalitaNeural
es-ES-XimenaNeural
- Optimize: Now You can customize the file name; if omitted, a random file name will be generated.
- New: Now, while generating audio, a VTT subtitle file with the same name will be created.issue:3
- Optimize: Fix high CPU usage while waiting for a response. PR#2
- Optimize: Now, the TTS.trans function offers the choice of receiving the output file in two formats, MP3 or opus.
- Optimize: Add two methods to parse voice file
- Optimize: Now, the TTS.trans function will return the name of the voice file.
- Edge Read Aloud Text To Speech
This project is an open-sourced software licensed under the MIT license.