Add Lazarus example for Moonshine models. (#1532)
This commit is contained in:
@@ -21,6 +21,8 @@ fi
|
|||||||
|
|
||||||
if [ ! -z CMAKE_VERBOSE_MAKEFILE ]; then
|
if [ ! -z CMAKE_VERBOSE_MAKEFILE ]; then
|
||||||
CMAKE_VERBOSE_MAKEFILE=ON
|
CMAKE_VERBOSE_MAKEFILE=ON
|
||||||
|
else
|
||||||
|
CMAKE_VERBOSE_MAKEFILE=OFF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f $onnxruntime_dir/onnxruntime.xcframework/ios-arm64/onnxruntime.a ]; then
|
if [ ! -f $onnxruntime_dir/onnxruntime.xcframework/ios-arm64/onnxruntime.a ]; then
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
function(download_piper_phonemize)
|
function(download_piper_phonemize)
|
||||||
include(FetchContent)
|
include(FetchContent)
|
||||||
|
|
||||||
set(piper_phonemize_URL "https://github.com/csukuangfj/piper-phonemize/archive/38ee199dcc49c7b6de89f7ebfb32ed682763fa1b.zip")
|
set(piper_phonemize_URL "https://github.com/csukuangfj/piper-phonemize/archive/78a788e0b719013401572d70fef372e77bff8e43.zip")
|
||||||
set(piper_phonemize_URL2 "https://hf-mirror.com/csukuangfj/sherpa-onnx-cmake-deps/resolve/main/piper-phonemize-38ee199dcc49c7b6de89f7ebfb32ed682763fa1b.zip")
|
set(piper_phonemize_URL2 "https://hf-mirror.com/csukuangfj/sherpa-onnx-cmake-deps/resolve/main/piper-phonemize-78a788e0b719013401572d70fef372e77bff8e43.zip")
|
||||||
set(piper_phonemize_HASH "SHA256=ab4d06ca76047e1585c63c482f39ffead5315785345055360703cc9382c5e74b")
|
set(piper_phonemize_HASH "SHA256=89641a46489a4898754643ce57bda9c9b54b4ca46485fdc02bf0dc84b866645d")
|
||||||
|
|
||||||
# If you don't have access to the Internet,
|
# If you don't have access to the Internet,
|
||||||
# please pre-download kaldi-decoder
|
# please pre-download kaldi-decoder
|
||||||
set(possible_file_locations
|
set(possible_file_locations
|
||||||
$ENV{HOME}/Downloads/piper-phonemize-38ee199dcc49c7b6de89f7ebfb32ed682763fa1b.zip
|
$ENV{HOME}/Downloads/piper-phonemize-78a788e0b719013401572d70fef372e77bff8e43.zip
|
||||||
${CMAKE_SOURCE_DIR}/piper-phonemize-38ee199dcc49c7b6de89f7ebfb32ed682763fa1b.zip
|
${CMAKE_SOURCE_DIR}/piper-phonemize-78a788e0b719013401572d70fef372e77bff8e43.zip
|
||||||
${CMAKE_BINARY_DIR}/piper-phonemize-38ee199dcc49c7b6de89f7ebfb32ed682763fa1b.zip
|
${CMAKE_BINARY_DIR}/piper-phonemize-78a788e0b719013401572d70fef372e77bff8e43.zip
|
||||||
/tmp/piper-phonemize-38ee199dcc49c7b6de89f7ebfb32ed682763fa1b.zip
|
/tmp/piper-phonemize-78a788e0b719013401572d70fef372e77bff8e43.zip
|
||||||
/star-fj/fangjun/download/github/piper-phonemize-38ee199dcc49c7b6de89f7ebfb32ed682763fa1b.zip
|
/star-fj/fangjun/download/github/piper-phonemize-78a788e0b719013401572d70fef372e77bff8e43.zip
|
||||||
)
|
)
|
||||||
|
|
||||||
foreach(f IN LISTS possible_file_locations)
|
foreach(f IN LISTS possible_file_locations)
|
||||||
|
|||||||
@@ -159,6 +159,30 @@ begin
|
|||||||
Result := TSherpaOnnxOfflineRecognizer.Create(Config);
|
Result := TSherpaOnnxOfflineRecognizer.Create(Config);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function CreateOfflineRecognizerMoonshine(
|
||||||
|
Tokens: AnsiString;
|
||||||
|
Preprocessor: AnsiString;
|
||||||
|
Encoder: AnsiString;
|
||||||
|
UncachedDecoder: AnsiString;
|
||||||
|
CachedDecoder: AnsiString): TSherpaOnnxOfflineRecognizer;
|
||||||
|
var
|
||||||
|
Config: TSherpaOnnxOfflineRecognizerConfig;
|
||||||
|
begin
|
||||||
|
Initialize(Config);
|
||||||
|
|
||||||
|
Config.ModelConfig.Moonshine.Preprocessor := Preprocessor;
|
||||||
|
Config.ModelConfig.Moonshine.Encoder := Encoder;
|
||||||
|
Config.ModelConfig.Moonshine.UncachedDecoder := UncachedDecoder;
|
||||||
|
Config.ModelConfig.Moonshine.CachedDecoder := CachedDecoder;
|
||||||
|
|
||||||
|
Config.ModelConfig.Tokens := Tokens;
|
||||||
|
Config.ModelConfig.Provider := 'cpu';
|
||||||
|
Config.ModelConfig.NumThreads := 2;
|
||||||
|
Config.ModelConfig.Debug := False;
|
||||||
|
|
||||||
|
Result := TSherpaOnnxOfflineRecognizer.Create(Config);
|
||||||
|
end;
|
||||||
|
|
||||||
constructor TMyInitThread.Create(CreateSuspended : boolean; ModelDirectory: AnsiString);
|
constructor TMyInitThread.Create(CreateSuspended : boolean; ModelDirectory: AnsiString);
|
||||||
begin
|
begin
|
||||||
inherited Create(CreateSuspended);
|
inherited Create(CreateSuspended);
|
||||||
@@ -193,6 +217,11 @@ var
|
|||||||
NeMoTransducerEncoder: AnsiString;
|
NeMoTransducerEncoder: AnsiString;
|
||||||
NeMoTransducerDecoder: AnsiString;
|
NeMoTransducerDecoder: AnsiString;
|
||||||
NeMoTransducerJoiner: AnsiString;
|
NeMoTransducerJoiner: AnsiString;
|
||||||
|
|
||||||
|
MoonshinePreprocessor: AnsiString;
|
||||||
|
MoonshineEncoder: AnsiString;
|
||||||
|
MoonshineUncachedDecoder: AnsiString;
|
||||||
|
MoonshineCachedDecoder: AnsiString;
|
||||||
begin
|
begin
|
||||||
VadFilename := ModelDir + 'silero_vad.onnx';
|
VadFilename := ModelDir + 'silero_vad.onnx';
|
||||||
Tokens := ModelDir + 'tokens.txt';
|
Tokens := ModelDir + 'tokens.txt';
|
||||||
@@ -292,6 +321,24 @@ begin
|
|||||||
NeMoTransducerDecoder := ModelDir + 'nemo-transducer-decoder.onnx';
|
NeMoTransducerDecoder := ModelDir + 'nemo-transducer-decoder.onnx';
|
||||||
NeMoTransducerJoiner := ModelDir + 'nemo-transducer-joiner.onnx';
|
NeMoTransducerJoiner := ModelDir + 'nemo-transducer-joiner.onnx';
|
||||||
|
|
||||||
|
{
|
||||||
|
Please Visit
|
||||||
|
https://k2-fsa.github.io/sherpa/onnx/moonshine/models.html
|
||||||
|
to download a Moonshine model.
|
||||||
|
|
||||||
|
Note that you have to rename model files after downloading. The following
|
||||||
|
is an example.
|
||||||
|
|
||||||
|
mv preprocess.onnx moonshine-preprocessor.onnx
|
||||||
|
mv encode.int8.onnx moonshine-encoder.onnx
|
||||||
|
mv uncached_decode.int8.onnx moonshine-uncached-decoder.onnx
|
||||||
|
mv cached_decode.int8.onnx moonshine-cached-decoder.onnx
|
||||||
|
}
|
||||||
|
MoonshinePreprocessor := ModelDir + 'moonshine-preprocessor.onnx';
|
||||||
|
MoonshineEncoder := ModelDir + 'moonshine-encoder.onnx';
|
||||||
|
MoonshineUncachedDecoder := ModelDir + 'moonshine-uncached-decoder.onnx';
|
||||||
|
MoonshineCachedDecoder := ModelDir + 'moonshine-cached-decoder.onnx';
|
||||||
|
|
||||||
if not FileExists(VadFilename) then
|
if not FileExists(VadFilename) then
|
||||||
begin
|
begin
|
||||||
Status := VadFilename + ' does not exist! Please download it from' +
|
Status := VadFilename + ' does not exist! Please download it from' +
|
||||||
@@ -344,6 +391,13 @@ begin
|
|||||||
NeMoTransducerEncoder, NeMoTransducerDecoder, NeMoTransducerJoiner, 'nemo_transducer');
|
NeMoTransducerEncoder, NeMoTransducerDecoder, NeMoTransducerJoiner, 'nemo_transducer');
|
||||||
Msg := 'NeMo transducer';
|
Msg := 'NeMo transducer';
|
||||||
end
|
end
|
||||||
|
else if FileExists(MoonshinePreprocessor) and FileExists(MoonshineEncoder) and FileExists(MoonshineUncachedDecoder) and FileExists(MoonshineCachedDecoder) then
|
||||||
|
begin
|
||||||
|
Form1.OfflineRecognizer := CreateOfflineRecognizerMoonshine(Tokens,
|
||||||
|
MoonshinePreprocessor, MoonshineEncoder, MoonshineUncachedDecoder,
|
||||||
|
MoonshineCachedDecoder);
|
||||||
|
Msg := 'Moonshine';
|
||||||
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
Status := 'Please download at least one non-streaming speech recognition model first.';
|
Status := 'Please download at least one non-streaming speech recognition model first.';
|
||||||
|
|||||||
@@ -50,6 +50,20 @@ def get_models():
|
|||||||
popd
|
popd
|
||||||
""",
|
""",
|
||||||
),
|
),
|
||||||
|
Model(
|
||||||
|
model_name="sherpa-onnx-moonshine-tiny-en-int8",
|
||||||
|
lang="en",
|
||||||
|
short_name="moonshine_tiny",
|
||||||
|
cmd="""
|
||||||
|
pushd $model_name
|
||||||
|
mv -v preprocess.onnx moonshine-preprocessor.onnx
|
||||||
|
mv -v encode.int8.onnx moonshine-encoder.onnx
|
||||||
|
mv -v uncached_decode.int8.onnx moonshine-uncached-decoder.onnx
|
||||||
|
mv -v cached_decode.int8.onnx moonshine-cached-decoder.onnx
|
||||||
|
|
||||||
|
popd
|
||||||
|
""",
|
||||||
|
),
|
||||||
Model(
|
Model(
|
||||||
model_name="sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17",
|
model_name="sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17",
|
||||||
lang="zh_en_ko_ja_yue",
|
lang="zh_en_ko_ja_yue",
|
||||||
|
|||||||
Reference in New Issue
Block a user