Skip to content

Commit 3ca8943

Browse files
authored
Add Java and Kotlin API for Supertonic TTS (#3289)
This pull request enhances the Text-to-Speech capabilities by integrating the Supertonic TTS model into the existing Java and Kotlin APIs. It provides developers with new tools and clear examples to generate speech from text using this model, expanding the range of available TTS options and simplifying their adoption within Java and Kotlin projects.
1 parent b6a563a commit 3ca8943

21 files changed

Lines changed: 384 additions & 24 deletions

.github/workflows/run-java-test.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,7 @@ jobs:
339339
cd ./java-api-examples
340340
341341
./run-pocket-tts.sh
342+
./run-supertonic-tts.sh
342343
./run-non-streaming-tts-kitten-en.sh
343344
./run-non-streaming-tts-kokoro-zh-en.sh
344345
./run-non-streaming-tts-kokoro-en.sh
@@ -347,6 +348,7 @@ jobs:
347348
ls -lh
348349
349350
rm -rf sherpa-onnx-pocket-tts-*
351+
rm -rf sherpa-onnx-supertonic-tts-*
350352
rm -rf kitten-nano-en-*
351353
rm -rf kokoro-multi-*
352354
rm -rf kokoro-en-*

java-api-examples/NonStreamingSpeechEnhancementGtcrn.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@ public static void main(String[] args) {
2323
OfflineSpeechDenoiserConfig config =
2424
OfflineSpeechDenoiserConfig.builder().setModel(modelConfig).build();
2525

26-
OfflineSpeechDenoiser speech_denoiser = new OfflineSpeechDenoiser(config);
26+
OfflineSpeechDenoiser speechDenoiser = new OfflineSpeechDenoiser(config);
2727

2828
String testWaveFilename = "./inp_16k.wav";
2929
WaveReader reader = new WaveReader(testWaveFilename);
3030

31-
DenoisedAudio denoised = speech_denoiser.run(reader.getSamples(), reader.getSampleRate());
31+
DenoisedAudio denoised = speechDenoiser.run(reader.getSamples(), reader.getSampleRate());
3232
String outFilename = "enhanced-16k.wav";
3333
WaveWriter.write(outFilename, denoised.getSamples(), denoised.getSampleRate());
3434
System.out.printf("Saved to %s\n", outFilename);
3535

36-
speech_denoiser.release();
36+
speechDenoiser.release();
3737
}
3838
}

java-api-examples/NonStreamingTtsCoquiDe.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ public static void main(String[] args) {
3535
float timeElapsedSeconds = (stop - start) / 1000.0f;
3636

3737
float audioDuration = audio.getSamples().length / (float) audio.getSampleRate();
38-
float real_time_factor = timeElapsedSeconds / audioDuration;
38+
float realTimeFactor = timeElapsedSeconds / audioDuration;
3939

4040
String waveFilename = "tts-coqui-de.wav";
4141
audio.save(waveFilename);
4242
System.out.printf("-- elapsed : %.3f seconds\n", timeElapsedSeconds);
4343
System.out.printf("-- audio duration: %.3f seconds\n", audioDuration);
44-
System.out.printf("-- real-time factor (RTF): %.3f\n", real_time_factor);
44+
System.out.printf("-- real-time factor (RTF): %.3f\n", realTimeFactor);
4545
System.out.printf("-- text: %s\n", text);
4646
System.out.printf("-- Saved to %s\n", waveFilename);
4747

java-api-examples/NonStreamingTtsKittenEn.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,13 @@ public static void main(String[] args) {
4646
float timeElapsedSeconds = (stop - start) / 1000.0f;
4747

4848
float audioDuration = audio.getSamples().length / (float) audio.getSampleRate();
49-
float real_time_factor = timeElapsedSeconds / audioDuration;
49+
float realTimeFactor = timeElapsedSeconds / audioDuration;
5050

5151
String waveFilename = "tts-kitten-en.wav";
5252
audio.save(waveFilename);
5353
System.out.printf("-- elapsed : %.3f seconds\n", timeElapsedSeconds);
5454
System.out.printf("-- audio duration: %.3f seconds\n", audioDuration);
55-
System.out.printf("-- real-time factor (RTF): %.3f\n", real_time_factor);
55+
System.out.printf("-- real-time factor (RTF): %.3f\n", realTimeFactor);
5656
System.out.printf("-- text: %s\n", text);
5757
System.out.printf("-- Saved to %s\n", waveFilename);
5858

java-api-examples/NonStreamingTtsKokoroEn.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ public static void main(String[] args) {
4545
float timeElapsedSeconds = (stop - start) / 1000.0f;
4646

4747
float audioDuration = audio.getSamples().length / (float) audio.getSampleRate();
48-
float real_time_factor = timeElapsedSeconds / audioDuration;
48+
float realTimeFactor = timeElapsedSeconds / audioDuration;
4949

5050
String waveFilename = "tts-kokoro-en.wav";
5151
audio.save(waveFilename);
5252
System.out.printf("-- elapsed : %.3f seconds\n", timeElapsedSeconds);
5353
System.out.printf("-- audio duration: %.3f seconds\n", audioDuration);
54-
System.out.printf("-- real-time factor (RTF): %.3f\n", real_time_factor);
54+
System.out.printf("-- real-time factor (RTF): %.3f\n", realTimeFactor);
5555
System.out.printf("-- text: %s\n", text);
5656
System.out.printf("-- Saved to %s\n", waveFilename);
5757

java-api-examples/NonStreamingTtsKokoroZhEn.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@ public static void main(String[] args) {
4747
float timeElapsedSeconds = (stop - start) / 1000.0f;
4848

4949
float audioDuration = audio.getSamples().length / (float) audio.getSampleRate();
50-
float real_time_factor = timeElapsedSeconds / audioDuration;
50+
float realTimeFactor = timeElapsedSeconds / audioDuration;
5151

5252
String waveFilename = "tts-kokoro-zh-en.wav";
5353
audio.save(waveFilename);
5454
System.out.printf("-- elapsed : %.3f seconds\n", timeElapsedSeconds);
5555
System.out.printf("-- audio duration: %.3f seconds\n", audioDuration);
56-
System.out.printf("-- real-time factor (RTF): %.3f\n", real_time_factor);
56+
System.out.printf("-- real-time factor (RTF): %.3f\n", realTimeFactor);
5757
System.out.printf("-- text: %s\n", text);
5858
System.out.printf("-- Saved to %s\n", waveFilename);
5959

java-api-examples/NonStreamingTtsMatchaEn.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ public static void main(String[] args) {
4545
float timeElapsedSeconds = (stop - start) / 1000.0f;
4646

4747
float audioDuration = audio.getSamples().length / (float) audio.getSampleRate();
48-
float real_time_factor = timeElapsedSeconds / audioDuration;
48+
float realTimeFactor = timeElapsedSeconds / audioDuration;
4949

5050
String waveFilename = "tts-matcha-en.wav";
5151
audio.save(waveFilename);
5252
System.out.printf("-- elapsed : %.3f seconds\n", timeElapsedSeconds);
5353
System.out.printf("-- audio duration: %.3f seconds\n", audioDuration);
54-
System.out.printf("-- real-time factor (RTF): %.3f\n", real_time_factor);
54+
System.out.printf("-- real-time factor (RTF): %.3f\n", realTimeFactor);
5555
System.out.printf("-- text: %s\n", text);
5656
System.out.printf("-- Saved to %s\n", waveFilename);
5757

java-api-examples/NonStreamingTtsMatchaZh.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,13 @@ public static void main(String[] args) {
4949
float timeElapsedSeconds = (stop - start) / 1000.0f;
5050

5151
float audioDuration = audio.getSamples().length / (float) audio.getSampleRate();
52-
float real_time_factor = timeElapsedSeconds / audioDuration;
52+
float realTimeFactor = timeElapsedSeconds / audioDuration;
5353

5454
String waveFilename = "tts-matcha-zh.wav";
5555
audio.save(waveFilename);
5656
System.out.printf("-- elapsed : %.3f seconds\n", timeElapsedSeconds);
5757
System.out.printf("-- audio duration: %.3f seconds\n", audioDuration);
58-
System.out.printf("-- real-time factor (RTF): %.3f\n", real_time_factor);
58+
System.out.printf("-- real-time factor (RTF): %.3f\n", realTimeFactor);
5959
System.out.printf("-- text: %s\n", text);
6060
System.out.printf("-- Saved to %s\n", waveFilename);
6161

java-api-examples/NonStreamingTtsPiperEn.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,13 @@ public static void main(String[] args) {
4343
float timeElapsedSeconds = (stop - start) / 1000.0f;
4444

4545
float audioDuration = audio.getSamples().length / (float) audio.getSampleRate();
46-
float real_time_factor = timeElapsedSeconds / audioDuration;
46+
float realTimeFactor = timeElapsedSeconds / audioDuration;
4747

4848
String waveFilename = "tts-piper-en.wav";
4949
audio.save(waveFilename);
5050
System.out.printf("-- elapsed : %.3f seconds\n", timeElapsedSeconds);
5151
System.out.printf("-- audio duration: %.3f seconds\n", audioDuration);
52-
System.out.printf("-- real-time factor (RTF): %.3f\n", real_time_factor);
52+
System.out.printf("-- real-time factor (RTF): %.3f\n", realTimeFactor);
5353
System.out.printf("-- text: %s\n", text);
5454
System.out.printf("-- Saved to %s\n", waveFilename);
5555

java-api-examples/NonStreamingTtsPiperEnWithCallback.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ public static void main(String[] args) {
164164
float timeElapsedSeconds = (stop - start) / 1000.0f;
165165

166166
float audioDuration = audio.getSamples().length / (float) audio.getSampleRate();
167-
float real_time_factor = timeElapsedSeconds / audioDuration;
167+
float realTimeFactor = timeElapsedSeconds / audioDuration;
168168

169169
try {
170170
playThread.join();
@@ -177,7 +177,7 @@ public static void main(String[] args) {
177177
audio.save(waveFilename);
178178
System.out.printf("-- elapsed : %.3f seconds\n", timeElapsedSeconds);
179179
System.out.printf("-- audio duration: %.3f seconds\n", audioDuration);
180-
System.out.printf("-- real-time factor (RTF): %.3f\n", real_time_factor);
180+
System.out.printf("-- real-time factor (RTF): %.3f\n", realTimeFactor);
181181
System.out.printf("-- text: %s\n", text);
182182
System.out.printf("-- Saved to %s\n", waveFilename);
183183

0 commit comments

Comments
 (0)