Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
xuning
/
sherpaonnx
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Fangjun Kuang
2024-04-26 09:26:39 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2024-04-26 09:26:39 +0800
Commit
15772d215096f2d7e52986ffce02f01b28fa6527
15772d21
1 parent
fa242992
Add Java API for text-to-speech (#811)
隐藏空白字符变更
内嵌
并排对比
正在显示
15 个修改的文件
包含
692 行增加
和
0 行删除
.github/workflows/run-java-test.yaml
java-api-examples/NonStreamingTtsCoquiDe.java
java-api-examples/NonStreamingTtsPiperEn.java
java-api-examples/NonStreamingTtsVitsZh.java
java-api-examples/README.md
java-api-examples/run-non-streaming-tts-coqui-de.sh
java-api-examples/run-non-streaming-tts-piper-en.sh
java-api-examples/run-non-streaming-tts-vits-zh.sh
sherpa-onnx/java-api/Makefile
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/GeneratedAudio.java
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OfflineTts.java
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OfflineTtsConfig.java
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OfflineTtsModelConfig.java
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OfflineTtsVitsModelConfig.java
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/WaveReader.java
.github/workflows/run-java-test.yaml
查看文件 @
15772d2
...
...
@@ -138,3 +138,21 @@ jobs:
./run-non-streaming-decode-file-nemo.sh
rm -rf sherpa-onnx-nemo-*
-
name
:
Run java test (Non-Streaming TTS)
shell
:
bash
run
:
|
cd ./java-api-examples
./run-non-streaming-tts-piper-en.sh
rm -rf vits-piper-*
./run-non-streaming-tts-coqui-de.sh
rm -rf vits-coqui-*
./run-non-streaming-tts-vits-zh.sh
rm -rf vits-zh-*
-
uses
:
actions/upload-artifact@v4
with
:
name
:
tts-wav-files-${{ matrix.os }}
path
:
java-api-examples/*.wav
...
...
java-api-examples/NonStreamingTtsCoquiDe.java
0 → 100644
查看文件 @
15772d2
// Copyright 2024 Xiaomi Corporation
// This file shows how to use a Coqui-ai VITS German TTS model
// to convert text to speech
import
com.k2fsa.sherpa.onnx.*
;
public
class
NonStreamingTtsCoquiDe
{
public
static
void
main
(
String
[]
args
)
{
// please visit
// https://github.com/k2-fsa/sherpa-onnx/releases/tag/tts-models
// to download model files
String
model
=
"./vits-coqui-de-css10/model.onnx"
;
String
tokens
=
"./vits-coqui-de-css10/tokens.txt"
;
String
text
=
"Alles hat ein Ende, nur die Wurst hat zwei."
;
OfflineTtsVitsModelConfig
vitsModelConfig
=
OfflineTtsVitsModelConfig
.
builder
().
setModel
(
model
).
setTokens
(
tokens
).
build
();
OfflineTtsModelConfig
modelConfig
=
OfflineTtsModelConfig
.
builder
()
.
setVits
(
vitsModelConfig
)
.
setNumThreads
(
1
)
.
setDebug
(
true
)
.
build
();
OfflineTtsConfig
config
=
OfflineTtsConfig
.
builder
().
setModel
(
modelConfig
).
build
();
OfflineTts
tts
=
new
OfflineTts
(
config
);
int
sid
=
0
;
float
speed
=
1.0f
;
long
start
=
System
.
currentTimeMillis
();
GeneratedAudio
audio
=
tts
.
generate
(
text
,
sid
,
speed
);
long
stop
=
System
.
currentTimeMillis
();
float
timeElapsedSeconds
=
(
stop
-
start
)
/
1000.0f
;
float
audioDuration
=
audio
.
getSamples
().
length
/
(
float
)
audio
.
getSampleRate
();
float
real_time_factor
=
timeElapsedSeconds
/
audioDuration
;
String
waveFilename
=
"tts-coqui-de.wav"
;
audio
.
save
(
waveFilename
);
System
.
out
.
printf
(
"-- elapsed : %.3f seconds\n"
,
timeElapsedSeconds
);
System
.
out
.
printf
(
"-- audio duration: %.3f seconds\n"
,
timeElapsedSeconds
);
System
.
out
.
printf
(
"-- real-time factor (RTF): %.3f\n"
,
real_time_factor
);
System
.
out
.
printf
(
"-- text: %s\n"
,
text
);
System
.
out
.
printf
(
"-- Saved to %s\n"
,
waveFilename
);
tts
.
release
();
}
}
...
...
java-api-examples/NonStreamingTtsPiperEn.java
0 → 100644
查看文件 @
15772d2
// Copyright 2024 Xiaomi Corporation
// This file shows how to use a piper VITS English TTS model
// to convert text to speech
import
com.k2fsa.sherpa.onnx.*
;
public
class
NonStreamingTtsPiperEn
{
public
static
void
main
(
String
[]
args
)
{
// please visit
// https://github.com/k2-fsa/sherpa-onnx/releases/tag/tts-models
// to download model files
String
model
=
"./vits-piper-en_GB-cori-medium/en_GB-cori-medium.onnx"
;
String
tokens
=
"./vits-piper-en_GB-cori-medium/tokens.txt"
;
String
dataDir
=
"./vits-piper-en_GB-cori-medium/espeak-ng-data"
;
String
text
=
"Today as always, men fall into two groups: slaves and free men. Whoever does not have"
+
" two-thirds of his day for himself, is a slave, whatever he may be: a statesman, a"
+
" businessman, an official, or a scholar."
;
OfflineTtsVitsModelConfig
vitsModelConfig
=
OfflineTtsVitsModelConfig
.
builder
()
.
setModel
(
model
)
.
setTokens
(
tokens
)
.
setDataDir
(
dataDir
)
.
build
();
OfflineTtsModelConfig
modelConfig
=
OfflineTtsModelConfig
.
builder
()
.
setVits
(
vitsModelConfig
)
.
setNumThreads
(
1
)
.
setDebug
(
true
)
.
build
();
OfflineTtsConfig
config
=
OfflineTtsConfig
.
builder
().
setModel
(
modelConfig
).
build
();
OfflineTts
tts
=
new
OfflineTts
(
config
);
int
sid
=
0
;
float
speed
=
1.0f
;
long
start
=
System
.
currentTimeMillis
();
GeneratedAudio
audio
=
tts
.
generate
(
text
,
sid
,
speed
);
long
stop
=
System
.
currentTimeMillis
();
float
timeElapsedSeconds
=
(
stop
-
start
)
/
1000.0f
;
float
audioDuration
=
audio
.
getSamples
().
length
/
(
float
)
audio
.
getSampleRate
();
float
real_time_factor
=
timeElapsedSeconds
/
audioDuration
;
String
waveFilename
=
"tts-piper-en.wav"
;
audio
.
save
(
waveFilename
);
System
.
out
.
printf
(
"-- elapsed : %.3f seconds\n"
,
timeElapsedSeconds
);
System
.
out
.
printf
(
"-- audio duration: %.3f seconds\n"
,
timeElapsedSeconds
);
System
.
out
.
printf
(
"-- real-time factor (RTF): %.3f\n"
,
real_time_factor
);
System
.
out
.
printf
(
"-- text: %s\n"
,
text
);
System
.
out
.
printf
(
"-- Saved to %s\n"
,
waveFilename
);
tts
.
release
();
}
}
...
...
java-api-examples/NonStreamingTtsVitsZh.java
0 → 100644
查看文件 @
15772d2
// Copyright 2024 Xiaomi Corporation
// This file shows how to use a VITS Chinese TTS model
// to convert text to speech.
//
// You can use https://github.com/Plachtaa/VITS-fast-fine-tuning
// to train your model
import
com.k2fsa.sherpa.onnx.*
;
public
class
NonStreamingTtsPiperEn
{
public
static
void
main
(
String
[]
args
)
{
// please visit
// https://github.com/k2-fsa/sherpa-onnx/releases/tag/tts-models
// to download model files
String
model
=
"./vits-zh-hf-fanchen-C/vits-zh-hf-fanchen-C.onnx"
;
String
tokens
=
"./vits-zh-hf-fanchen-C/tokens.txt"
;
String
lexicon
=
"./vits-zh-hf-fanchen-C/lexicon.txt"
;
String
dictDir
=
"./vits-zh-hf-fanchen-C/dict"
;
String
ruleFsts
=
"./vits-zh-hf-fanchen-C/phone.fst,./vits-zh-hf-fanchen-C/date.fst,./vits-zh-hf-fanchen-C/number.fst"
;
String
text
=
"有问题,请拨打110或者手机18601239876。我们的价值观是真诚热爱!"
;
OfflineTtsVitsModelConfig
vitsModelConfig
=
OfflineTtsVitsModelConfig
.
builder
()
.
setModel
(
model
)
.
setTokens
(
tokens
)
.
setLexicon
(
lexicon
)
.
setDictDir
(
dictDir
)
.
build
();
OfflineTtsModelConfig
modelConfig
=
OfflineTtsModelConfig
.
builder
()
.
setVits
(
vitsModelConfig
)
.
setNumThreads
(
1
)
.
setDebug
(
true
)
.
build
();
OfflineTtsConfig
config
=
OfflineTtsConfig
.
builder
().
setModel
(
modelConfig
).
setRuleFsts
(
ruleFsts
).
build
();
OfflineTts
tts
=
new
OfflineTts
(
config
);
int
sid
=
100
;
float
speed
=
1.0f
;
long
start
=
System
.
currentTimeMillis
();
GeneratedAudio
audio
=
tts
.
generate
(
text
,
sid
,
speed
);
long
stop
=
System
.
currentTimeMillis
();
float
timeElapsedSeconds
=
(
stop
-
start
)
/
1000.0f
;
float
audioDuration
=
audio
.
getSamples
().
length
/
(
float
)
audio
.
getSampleRate
();
float
real_time_factor
=
timeElapsedSeconds
/
audioDuration
;
String
waveFilename
=
"tts-vits-zh.wav"
;
audio
.
save
(
waveFilename
);
System
.
out
.
printf
(
"-- elapsed : %.3f seconds\n"
,
timeElapsedSeconds
);
System
.
out
.
printf
(
"-- audio duration: %.3f seconds\n"
,
timeElapsedSeconds
);
System
.
out
.
printf
(
"-- real-time factor (RTF): %.3f\n"
,
real_time_factor
);
System
.
out
.
printf
(
"-- text: %s\n"
,
text
);
System
.
out
.
printf
(
"-- Saved to %s\n"
,
waveFilename
);
tts
.
release
();
}
}
...
...
java-api-examples/README.md
查看文件 @
15772d2
...
...
@@ -21,3 +21,11 @@ This directory contains examples for the JAVA API of sherpa-onnx.
./run-non-streaming-decode-file-whisper.sh
./run-non-streaming-decode-file-nemo.sh
```
## Non-Streaming text-to-speech
```
bash
./run-non-streaming-tts-piper-en.sh
./run-non-streaming-tts-coqui-de.sh
./run-non-streaming-tts-vits-zh.sh
```
...
...
java-api-examples/run-non-streaming-tts-coqui-de.sh
0 → 100755
查看文件 @
15772d2
#!/usr/bin/env bash
set
-ex
if
[[
! -f ../build/lib/libsherpa-onnx-jni.dylib
&&
! -f ../build/lib/libsherpa-onnx-jni.so
]]
;
then
mkdir -p ../build
pushd
../build
cmake
\
-DSHERPA_ONNX_ENABLE_PYTHON
=
OFF
\
-DSHERPA_ONNX_ENABLE_TESTS
=
OFF
\
-DSHERPA_ONNX_ENABLE_CHECK
=
OFF
\
-DBUILD_SHARED_LIBS
=
ON
\
-DSHERPA_ONNX_ENABLE_PORTAUDIO
=
OFF
\
-DSHERPA_ONNX_ENABLE_JNI
=
ON
\
..
make -j4
ls -lh lib
popd
fi
if
[
! -f ../sherpa-onnx/java-api/build/sherpa-onnx.jar
]
;
then
pushd
../sherpa-onnx/java-api
make
popd
fi
if
[[
! -f ../build/lib/libsherpa-onnx-jni.dylib
&&
! -f ../build/lib/libsherpa-onnx-jni.so
]]
;
then
cmake
\
-DSHERPA_ONNX_ENABLE_PYTHON
=
OFF
\
-DSHERPA_ONNX_ENABLE_TESTS
=
OFF
\
-DSHERPA_ONNX_ENABLE_CHECK
=
OFF
\
-DBUILD_SHARED_LIBS
=
ON
\
-DSHERPA_ONNX_ENABLE_PORTAUDIO
=
OFF
\
-DSHERPA_ONNX_ENABLE_JNI
=
ON
\
..
make -j4
ls -lh lib
fi
# please visit
# https://github.com/k2-fsa/sherpa-onnx/releases/tag/tts-models
# to download more models
if
[
! -f ./vits-coqui-de-css10/tokens.txt
]
;
then
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-coqui-de-css10.tar.bz2
tar xf vits-coqui-de-css10.tar.bz2
rm vits-coqui-de-css10.tar.bz2
fi
java
\
-Djava.library.path
=
$PWD
/../build/lib
\
-cp ../sherpa-onnx/java-api/build/sherpa-onnx.jar
\
NonStreamingTtsCoquiDe.java
...
...
java-api-examples/run-non-streaming-tts-piper-en.sh
0 → 100755
查看文件 @
15772d2
#!/usr/bin/env bash
set
-ex
if
[[
! -f ../build/lib/libsherpa-onnx-jni.dylib
&&
! -f ../build/lib/libsherpa-onnx-jni.so
]]
;
then
mkdir -p ../build
pushd
../build
cmake
\
-DSHERPA_ONNX_ENABLE_PYTHON
=
OFF
\
-DSHERPA_ONNX_ENABLE_TESTS
=
OFF
\
-DSHERPA_ONNX_ENABLE_CHECK
=
OFF
\
-DBUILD_SHARED_LIBS
=
ON
\
-DSHERPA_ONNX_ENABLE_PORTAUDIO
=
OFF
\
-DSHERPA_ONNX_ENABLE_JNI
=
ON
\
..
make -j4
ls -lh lib
popd
fi
if
[
! -f ../sherpa-onnx/java-api/build/sherpa-onnx.jar
]
;
then
pushd
../sherpa-onnx/java-api
make
popd
fi
if
[[
! -f ../build/lib/libsherpa-onnx-jni.dylib
&&
! -f ../build/lib/libsherpa-onnx-jni.so
]]
;
then
cmake
\
-DSHERPA_ONNX_ENABLE_PYTHON
=
OFF
\
-DSHERPA_ONNX_ENABLE_TESTS
=
OFF
\
-DSHERPA_ONNX_ENABLE_CHECK
=
OFF
\
-DBUILD_SHARED_LIBS
=
ON
\
-DSHERPA_ONNX_ENABLE_PORTAUDIO
=
OFF
\
-DSHERPA_ONNX_ENABLE_JNI
=
ON
\
..
make -j4
ls -lh lib
fi
# please visit
# https://github.com/k2-fsa/sherpa-onnx/releases/tag/tts-models
# to download more models
if
[
! -f ./vits-piper-en_GB-cori-medium/tokens.txt
]
;
then
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-piper-en_GB-cori-medium.tar.bz2
tar xf vits-piper-en_GB-cori-medium.tar.bz2
rm vits-piper-en_GB-cori-medium.tar.bz2
fi
java
\
-Djava.library.path
=
$PWD
/../build/lib
\
-cp ../sherpa-onnx/java-api/build/sherpa-onnx.jar
\
NonStreamingTtsPiperEn.java
...
...
java-api-examples/run-non-streaming-tts-vits-zh.sh
0 → 100755
查看文件 @
15772d2
#!/usr/bin/env bash
set
-ex
if
[[
! -f ../build/lib/libsherpa-onnx-jni.dylib
&&
! -f ../build/lib/libsherpa-onnx-jni.so
]]
;
then
mkdir -p ../build
pushd
../build
cmake
\
-DSHERPA_ONNX_ENABLE_PYTHON
=
OFF
\
-DSHERPA_ONNX_ENABLE_TESTS
=
OFF
\
-DSHERPA_ONNX_ENABLE_CHECK
=
OFF
\
-DBUILD_SHARED_LIBS
=
ON
\
-DSHERPA_ONNX_ENABLE_PORTAUDIO
=
OFF
\
-DSHERPA_ONNX_ENABLE_JNI
=
ON
\
..
make -j4
ls -lh lib
popd
fi
if
[
! -f ../sherpa-onnx/java-api/build/sherpa-onnx.jar
]
;
then
pushd
../sherpa-onnx/java-api
make
popd
fi
if
[[
! -f ../build/lib/libsherpa-onnx-jni.dylib
&&
! -f ../build/lib/libsherpa-onnx-jni.so
]]
;
then
cmake
\
-DSHERPA_ONNX_ENABLE_PYTHON
=
OFF
\
-DSHERPA_ONNX_ENABLE_TESTS
=
OFF
\
-DSHERPA_ONNX_ENABLE_CHECK
=
OFF
\
-DBUILD_SHARED_LIBS
=
ON
\
-DSHERPA_ONNX_ENABLE_PORTAUDIO
=
OFF
\
-DSHERPA_ONNX_ENABLE_JNI
=
ON
\
..
make -j4
ls -lh lib
fi
# please visit
# https://github.com/k2-fsa/sherpa-onnx/releases/tag/tts-models
# to download more models
if
[
! -f ./vits-zh-hf-fanchen-C/tokens.txt
]
;
then
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-zh-hf-fanchen-C.tar.bz2
tar xf vits-zh-hf-fanchen-C.tar.bz2
rm vits-zh-hf-fanchen-C.tar.bz2
fi
java
\
-Djava.library.path
=
$PWD
/../build/lib
\
-cp ../sherpa-onnx/java-api/build/sherpa-onnx.jar
\
NonStreamingTtsVitsZh.java
...
...
sherpa-onnx/java-api/Makefile
查看文件 @
15772d2
...
...
@@ -30,6 +30,12 @@ java_files += OfflineRecognizerResult.java
java_files
+=
OfflineStream.java
java_files
+=
OfflineRecognizer.java
java_files
+=
OfflineTtsVitsModelConfig.java
java_files
+=
OfflineTtsModelConfig.java
java_files
+=
OfflineTtsConfig.java
java_files
+=
GeneratedAudio.java
java_files
+=
OfflineTts.java
class_files
:=
$
(
java_files:%.java
=
%.class
)
java_files
:=
$
(
addprefix src/
$(package_dir)
/,
$(java_files)
)
...
...
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/GeneratedAudio.java
0 → 100644
查看文件 @
15772d2
// Copyright 2024 Xiaomi Corporation
package
com
.
k2fsa
.
sherpa
.
onnx
;
public
class
GeneratedAudio
{
static
{
System
.
loadLibrary
(
"sherpa-onnx-jni"
);
}
private
final
float
[]
samples
;
private
final
int
sampleRate
;
public
GeneratedAudio
(
float
[]
samples
,
int
sampleRate
)
{
this
.
samples
=
samples
;
this
.
sampleRate
=
sampleRate
;
}
public
int
getSampleRate
()
{
return
sampleRate
;
}
public
float
[]
getSamples
()
{
return
samples
;
}
// return true if saved successfully.
public
boolean
save
(
String
filename
)
{
return
saveImpl
(
filename
,
samples
,
sampleRate
);
}
private
native
boolean
saveImpl
(
String
filename
,
float
[]
samples
,
int
sampleRate
);
}
...
...
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OfflineTts.java
0 → 100644
查看文件 @
15772d2
// Copyright 2024 Xiaomi Corporation
package
com
.
k2fsa
.
sherpa
.
onnx
;
public
class
OfflineTts
{
static
{
System
.
loadLibrary
(
"sherpa-onnx-jni"
);
}
private
long
ptr
=
0
;
// this is the asr engine ptrss
public
OfflineTts
(
OfflineTtsConfig
config
)
{
ptr
=
newFromFile
(
config
);
}
public
GeneratedAudio
generate
(
String
text
)
{
return
generate
(
text
,
0
,
1.0f
);
}
public
GeneratedAudio
generate
(
String
text
,
int
sid
)
{
return
generate
(
text
,
sid
,
1.0f
);
}
public
GeneratedAudio
generate
(
String
text
,
int
sid
,
float
speed
)
{
Object
[]
arr
=
generateImpl
(
ptr
,
text
,
sid
,
speed
);
float
[]
samples
=
(
float
[])
arr
[
0
];
int
sampleRate
=
(
int
)
arr
[
1
];
return
new
GeneratedAudio
(
samples
,
sampleRate
);
}
@Override
protected
void
finalize
()
throws
Throwable
{
release
();
}
public
void
release
()
{
if
(
this
.
ptr
==
0
)
{
return
;
}
delete
(
this
.
ptr
);
this
.
ptr
=
0
;
}
private
native
void
delete
(
long
ptr
);
private
native
int
getSampleRate
(
long
ptr
);
private
native
int
getNumSpeakers
(
long
ptr
);
private
native
Object
[]
generateImpl
(
long
ptr
,
String
text
,
int
sid
,
float
speed
);
private
native
long
newFromFile
(
OfflineTtsConfig
config
);
}
...
...
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OfflineTtsConfig.java
0 → 100644
查看文件 @
15772d2
// Copyright 2024 Xiaomi Corporation
package
com
.
k2fsa
.
sherpa
.
onnx
;
public
class
OfflineTtsConfig
{
private
final
OfflineTtsModelConfig
model
;
private
final
String
ruleFsts
;
private
final
String
ruleFars
;
private
final
int
maxNumSentences
;
private
OfflineTtsConfig
(
Builder
builder
)
{
this
.
model
=
builder
.
model
;
this
.
ruleFsts
=
builder
.
ruleFsts
;
this
.
ruleFars
=
builder
.
ruleFars
;
this
.
maxNumSentences
=
builder
.
maxNumSentences
;
}
public
static
Builder
builder
()
{
return
new
Builder
();
}
public
OfflineTtsModelConfig
getModel
()
{
return
model
;
}
public
String
getRuleFsts
()
{
return
ruleFsts
;
}
public
String
getRuleFars
()
{
return
ruleFars
;
}
public
int
getMaxNumSentences
()
{
return
maxNumSentences
;
}
public
static
class
Builder
{
private
OfflineTtsModelConfig
model
=
OfflineTtsModelConfig
.
builder
().
build
();
private
String
ruleFsts
=
""
;
private
String
ruleFars
=
""
;
private
int
maxNumSentences
=
1
;
public
OfflineTtsConfig
build
()
{
return
new
OfflineTtsConfig
(
this
);
}
public
Builder
setModel
(
OfflineTtsModelConfig
model
)
{
this
.
model
=
model
;
return
this
;
}
public
Builder
setRuleFsts
(
String
ruleFsts
)
{
this
.
ruleFsts
=
ruleFsts
;
return
this
;
}
public
Builder
setRuleFars
(
String
ruleFars
)
{
this
.
ruleFars
=
ruleFars
;
return
this
;
}
public
Builder
setMaxNumSentences
(
int
maxNumSentences
)
{
this
.
maxNumSentences
=
maxNumSentences
;
return
this
;
}
}
}
...
...
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OfflineTtsModelConfig.java
0 → 100644
查看文件 @
15772d2
// Copyright 2024 Xiaomi Corporation
package
com
.
k2fsa
.
sherpa
.
onnx
;
public
class
OfflineTtsModelConfig
{
private
final
OfflineTtsVitsModelConfig
vits
;
private
final
int
numThreads
;
private
final
boolean
debug
;
private
final
String
provider
;
private
OfflineTtsModelConfig
(
Builder
builder
)
{
this
.
vits
=
builder
.
vits
;
this
.
numThreads
=
builder
.
numThreads
;
this
.
debug
=
builder
.
debug
;
this
.
provider
=
builder
.
provider
;
}
public
static
Builder
builder
()
{
return
new
Builder
();
}
public
OfflineTtsVitsModelConfig
getVits
()
{
return
vits
;
}
public
static
class
Builder
{
private
OfflineTtsVitsModelConfig
vits
=
OfflineTtsVitsModelConfig
.
builder
().
build
();
private
int
numThreads
=
1
;
private
boolean
debug
=
true
;
private
String
provider
=
"cpu"
;
public
OfflineTtsModelConfig
build
()
{
return
new
OfflineTtsModelConfig
(
this
);
}
public
Builder
setVits
(
OfflineTtsVitsModelConfig
vits
)
{
this
.
vits
=
vits
;
return
this
;
}
public
Builder
setNumThreads
(
int
numThreads
)
{
this
.
numThreads
=
numThreads
;
return
this
;
}
public
Builder
setDebug
(
boolean
debug
)
{
this
.
debug
=
debug
;
return
this
;
}
public
Builder
setProvider
(
String
provider
)
{
this
.
provider
=
provider
;
return
this
;
}
}
}
...
...
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/OfflineTtsVitsModelConfig.java
0 → 100644
查看文件 @
15772d2
// Copyright 2024 Xiaomi Corporation
package
com
.
k2fsa
.
sherpa
.
onnx
;
public
class
OfflineTtsVitsModelConfig
{
private
final
String
model
;
private
final
String
lexicon
;
private
final
String
tokens
;
private
final
String
dataDir
;
private
final
String
dictDir
;
private
final
float
noiseScale
;
private
final
float
noiseScaleW
;
private
final
float
lengthScale
;
private
OfflineTtsVitsModelConfig
(
Builder
builder
)
{
this
.
model
=
builder
.
model
;
this
.
lexicon
=
builder
.
lexicon
;
this
.
tokens
=
builder
.
tokens
;
this
.
dataDir
=
builder
.
dataDir
;
this
.
dictDir
=
builder
.
dictDir
;
this
.
noiseScale
=
builder
.
noiseScale
;
this
.
noiseScaleW
=
builder
.
noiseScaleW
;
this
.
lengthScale
=
builder
.
lengthScale
;
}
public
static
Builder
builder
()
{
return
new
Builder
();
}
public
String
getModel
()
{
return
model
;
}
public
String
getLexicon
()
{
return
lexicon
;
}
public
String
getTokens
()
{
return
tokens
;
}
public
String
getDataDir
()
{
return
dataDir
;
}
public
String
getDictDir
()
{
return
dictDir
;
}
public
float
getLengthScale
()
{
return
lengthScale
;
}
public
float
getNoiseScale
()
{
return
noiseScale
;
}
public
float
getNoiseScaleW
()
{
return
noiseScaleW
;
}
public
static
class
Builder
{
private
String
model
;
private
String
lexicon
=
""
;
private
String
tokens
;
private
String
dataDir
=
""
;
private
String
dictDir
=
""
;
private
float
noiseScale
=
0.667f
;
private
float
noiseScaleW
=
0.8f
;
private
float
lengthScale
=
1.0f
;
public
OfflineTtsVitsModelConfig
build
()
{
return
new
OfflineTtsVitsModelConfig
(
this
);
}
public
Builder
setModel
(
String
model
)
{
this
.
model
=
model
;
return
this
;
}
public
Builder
setTokens
(
String
tokens
)
{
this
.
tokens
=
tokens
;
return
this
;
}
public
Builder
setLexicon
(
String
lexicon
)
{
this
.
lexicon
=
lexicon
;
return
this
;
}
public
Builder
setDataDir
(
String
dataDir
)
{
this
.
dataDir
=
dataDir
;
return
this
;
}
public
Builder
setDictDir
(
String
dictDir
)
{
this
.
dictDir
=
dictDir
;
return
this
;
}
public
Builder
setNoiseScale
(
float
noiseScale
)
{
this
.
noiseScale
=
noiseScale
;
return
this
;
}
public
Builder
setNoiseScaleW
(
float
noiseScaleW
)
{
this
.
noiseScaleW
=
noiseScaleW
;
return
this
;
}
public
Builder
setLengthScale
(
float
lengthScale
)
{
this
.
lengthScale
=
lengthScale
;
return
this
;
}
}
}
...
...
sherpa-onnx/java-api/src/com/k2fsa/sherpa/onnx/WaveReader.java
查看文件 @
15772d2
// Copyright 2024 Xiaomi Corporation
package
com
.
k2fsa
.
sherpa
.
onnx
;
public
class
WaveReader
{
...
...
请
注册
或
登录
后发表评论