Committed by
GitHub
Add Lazarus example for Moonshine models. (#1532)
正在显示
4 个修改的文件
包含
78 行增加
和
8 行删除
| @@ -21,6 +21,8 @@ fi | @@ -21,6 +21,8 @@ fi | ||
| 21 | 21 | ||
| 22 | if [ ! -z CMAKE_VERBOSE_MAKEFILE ]; then | 22 | if [ ! -z CMAKE_VERBOSE_MAKEFILE ]; then |
| 23 | CMAKE_VERBOSE_MAKEFILE=ON | 23 | CMAKE_VERBOSE_MAKEFILE=ON |
| 24 | +else | ||
| 25 | + CMAKE_VERBOSE_MAKEFILE=OFF | ||
| 24 | fi | 26 | fi |
| 25 | 27 | ||
| 26 | if [ ! -f $onnxruntime_dir/onnxruntime.xcframework/ios-arm64/onnxruntime.a ]; then | 28 | if [ ! -f $onnxruntime_dir/onnxruntime.xcframework/ios-arm64/onnxruntime.a ]; then |
| 1 | function(download_piper_phonemize) | 1 | function(download_piper_phonemize) |
| 2 | include(FetchContent) | 2 | include(FetchContent) |
| 3 | 3 | ||
| 4 | - set(piper_phonemize_URL "https://github.com/csukuangfj/piper-phonemize/archive/38ee199dcc49c7b6de89f7ebfb32ed682763fa1b.zip") | ||
| 5 | - set(piper_phonemize_URL2 "https://hf-mirror.com/csukuangfj/sherpa-onnx-cmake-deps/resolve/main/piper-phonemize-38ee199dcc49c7b6de89f7ebfb32ed682763fa1b.zip") | ||
| 6 | - set(piper_phonemize_HASH "SHA256=ab4d06ca76047e1585c63c482f39ffead5315785345055360703cc9382c5e74b") | 4 | + set(piper_phonemize_URL "https://github.com/csukuangfj/piper-phonemize/archive/78a788e0b719013401572d70fef372e77bff8e43.zip") |
| 5 | + set(piper_phonemize_URL2 "https://hf-mirror.com/csukuangfj/sherpa-onnx-cmake-deps/resolve/main/piper-phonemize-78a788e0b719013401572d70fef372e77bff8e43.zip") | ||
| 6 | + set(piper_phonemize_HASH "SHA256=89641a46489a4898754643ce57bda9c9b54b4ca46485fdc02bf0dc84b866645d") | ||
| 7 | 7 | ||
| 8 | # If you don't have access to the Internet, | 8 | # If you don't have access to the Internet, |
| 9 | # please pre-download kaldi-decoder | 9 | # please pre-download kaldi-decoder |
| 10 | set(possible_file_locations | 10 | set(possible_file_locations |
| 11 | - $ENV{HOME}/Downloads/piper-phonemize-38ee199dcc49c7b6de89f7ebfb32ed682763fa1b.zip | ||
| 12 | - ${CMAKE_SOURCE_DIR}/piper-phonemize-38ee199dcc49c7b6de89f7ebfb32ed682763fa1b.zip | ||
| 13 | - ${CMAKE_BINARY_DIR}/piper-phonemize-38ee199dcc49c7b6de89f7ebfb32ed682763fa1b.zip | ||
| 14 | - /tmp/piper-phonemize-38ee199dcc49c7b6de89f7ebfb32ed682763fa1b.zip | ||
| 15 | - /star-fj/fangjun/download/github/piper-phonemize-38ee199dcc49c7b6de89f7ebfb32ed682763fa1b.zip | 11 | + $ENV{HOME}/Downloads/piper-phonemize-78a788e0b719013401572d70fef372e77bff8e43.zip |
| 12 | + ${CMAKE_SOURCE_DIR}/piper-phonemize-78a788e0b719013401572d70fef372e77bff8e43.zip | ||
| 13 | + ${CMAKE_BINARY_DIR}/piper-phonemize-78a788e0b719013401572d70fef372e77bff8e43.zip | ||
| 14 | + /tmp/piper-phonemize-78a788e0b719013401572d70fef372e77bff8e43.zip | ||
| 15 | + /star-fj/fangjun/download/github/piper-phonemize-78a788e0b719013401572d70fef372e77bff8e43.zip | ||
| 16 | ) | 16 | ) |
| 17 | 17 | ||
| 18 | foreach(f IN LISTS possible_file_locations) | 18 | foreach(f IN LISTS possible_file_locations) |
| @@ -159,6 +159,30 @@ begin | @@ -159,6 +159,30 @@ begin | ||
| 159 | Result := TSherpaOnnxOfflineRecognizer.Create(Config); | 159 | Result := TSherpaOnnxOfflineRecognizer.Create(Config); |
| 160 | end; | 160 | end; |
| 161 | 161 | ||
| 162 | +function CreateOfflineRecognizerMoonshine( | ||
| 163 | + Tokens: AnsiString; | ||
| 164 | + Preprocessor: AnsiString; | ||
| 165 | + Encoder: AnsiString; | ||
| 166 | + UncachedDecoder: AnsiString; | ||
| 167 | + CachedDecoder: AnsiString): TSherpaOnnxOfflineRecognizer; | ||
| 168 | +var | ||
| 169 | + Config: TSherpaOnnxOfflineRecognizerConfig; | ||
| 170 | +begin | ||
| 171 | + Initialize(Config); | ||
| 172 | + | ||
| 173 | + Config.ModelConfig.Moonshine.Preprocessor := Preprocessor; | ||
| 174 | + Config.ModelConfig.Moonshine.Encoder := Encoder; | ||
| 175 | + Config.ModelConfig.Moonshine.UncachedDecoder := UncachedDecoder; | ||
| 176 | + Config.ModelConfig.Moonshine.CachedDecoder := CachedDecoder; | ||
| 177 | + | ||
| 178 | + Config.ModelConfig.Tokens := Tokens; | ||
| 179 | + Config.ModelConfig.Provider := 'cpu'; | ||
| 180 | + Config.ModelConfig.NumThreads := 2; | ||
| 181 | + Config.ModelConfig.Debug := False; | ||
| 182 | + | ||
| 183 | + Result := TSherpaOnnxOfflineRecognizer.Create(Config); | ||
| 184 | +end; | ||
| 185 | + | ||
| 162 | constructor TMyInitThread.Create(CreateSuspended : boolean; ModelDirectory: AnsiString); | 186 | constructor TMyInitThread.Create(CreateSuspended : boolean; ModelDirectory: AnsiString); |
| 163 | begin | 187 | begin |
| 164 | inherited Create(CreateSuspended); | 188 | inherited Create(CreateSuspended); |
| @@ -193,6 +217,11 @@ var | @@ -193,6 +217,11 @@ var | ||
| 193 | NeMoTransducerEncoder: AnsiString; | 217 | NeMoTransducerEncoder: AnsiString; |
| 194 | NeMoTransducerDecoder: AnsiString; | 218 | NeMoTransducerDecoder: AnsiString; |
| 195 | NeMoTransducerJoiner: AnsiString; | 219 | NeMoTransducerJoiner: AnsiString; |
| 220 | + | ||
| 221 | + MoonshinePreprocessor: AnsiString; | ||
| 222 | + MoonshineEncoder: AnsiString; | ||
| 223 | + MoonshineUncachedDecoder: AnsiString; | ||
| 224 | + MoonshineCachedDecoder: AnsiString; | ||
| 196 | begin | 225 | begin |
| 197 | VadFilename := ModelDir + 'silero_vad.onnx'; | 226 | VadFilename := ModelDir + 'silero_vad.onnx'; |
| 198 | Tokens := ModelDir + 'tokens.txt'; | 227 | Tokens := ModelDir + 'tokens.txt'; |
| @@ -292,6 +321,24 @@ begin | @@ -292,6 +321,24 @@ begin | ||
| 292 | NeMoTransducerDecoder := ModelDir + 'nemo-transducer-decoder.onnx'; | 321 | NeMoTransducerDecoder := ModelDir + 'nemo-transducer-decoder.onnx'; |
| 293 | NeMoTransducerJoiner := ModelDir + 'nemo-transducer-joiner.onnx'; | 322 | NeMoTransducerJoiner := ModelDir + 'nemo-transducer-joiner.onnx'; |
| 294 | 323 | ||
| 324 | + { | ||
| 325 | + Please Visit | ||
| 326 | + https://k2-fsa.github.io/sherpa/onnx/moonshine/models.html | ||
| 327 | + to download a Moonshine model. | ||
| 328 | + | ||
| 329 | + Note that you have to rename model files after downloading. The following | ||
| 330 | + is an example. | ||
| 331 | + | ||
| 332 | + mv preprocess.onnx moonshine-preprocessor.onnx | ||
| 333 | + mv encode.int8.onnx moonshine-encoder.onnx | ||
| 334 | + mv uncached_decode.int8.onnx moonshine-uncached-decoder.onnx | ||
| 335 | + mv cached_decode.int8.onnx moonshine-cached-decoder.onnx | ||
| 336 | + } | ||
| 337 | + MoonshinePreprocessor := ModelDir + 'moonshine-preprocessor.onnx'; | ||
| 338 | + MoonshineEncoder := ModelDir + 'moonshine-encoder.onnx'; | ||
| 339 | + MoonshineUncachedDecoder := ModelDir + 'moonshine-uncached-decoder.onnx'; | ||
| 340 | + MoonshineCachedDecoder := ModelDir + 'moonshine-cached-decoder.onnx'; | ||
| 341 | + | ||
| 295 | if not FileExists(VadFilename) then | 342 | if not FileExists(VadFilename) then |
| 296 | begin | 343 | begin |
| 297 | Status := VadFilename + ' does not exist! Please download it from' + | 344 | Status := VadFilename + ' does not exist! Please download it from' + |
| @@ -344,6 +391,13 @@ begin | @@ -344,6 +391,13 @@ begin | ||
| 344 | NeMoTransducerEncoder, NeMoTransducerDecoder, NeMoTransducerJoiner, 'nemo_transducer'); | 391 | NeMoTransducerEncoder, NeMoTransducerDecoder, NeMoTransducerJoiner, 'nemo_transducer'); |
| 345 | Msg := 'NeMo transducer'; | 392 | Msg := 'NeMo transducer'; |
| 346 | end | 393 | end |
| 394 | + else if FileExists(MoonshinePreprocessor) and FileExists(MoonshineEncoder) and FileExists(MoonshineUncachedDecoder) and FileExists(MoonshineCachedDecoder) then | ||
| 395 | + begin | ||
| 396 | + Form1.OfflineRecognizer := CreateOfflineRecognizerMoonshine(Tokens, | ||
| 397 | + MoonshinePreprocessor, MoonshineEncoder, MoonshineUncachedDecoder, | ||
| 398 | + MoonshineCachedDecoder); | ||
| 399 | + Msg := 'Moonshine'; | ||
| 400 | + end | ||
| 347 | else | 401 | else |
| 348 | begin | 402 | begin |
| 349 | Status := 'Please download at least one non-streaming speech recognition model first.'; | 403 | Status := 'Please download at least one non-streaming speech recognition model first.'; |
| @@ -51,6 +51,20 @@ def get_models(): | @@ -51,6 +51,20 @@ def get_models(): | ||
| 51 | """, | 51 | """, |
| 52 | ), | 52 | ), |
| 53 | Model( | 53 | Model( |
| 54 | + model_name="sherpa-onnx-moonshine-tiny-en-int8", | ||
| 55 | + lang="en", | ||
| 56 | + short_name="moonshine_tiny", | ||
| 57 | + cmd=""" | ||
| 58 | + pushd $model_name | ||
| 59 | + mv -v preprocess.onnx moonshine-preprocessor.onnx | ||
| 60 | + mv -v encode.int8.onnx moonshine-encoder.onnx | ||
| 61 | + mv -v uncached_decode.int8.onnx moonshine-uncached-decoder.onnx | ||
| 62 | + mv -v cached_decode.int8.onnx moonshine-cached-decoder.onnx | ||
| 63 | + | ||
| 64 | + popd | ||
| 65 | + """, | ||
| 66 | + ), | ||
| 67 | + Model( | ||
| 54 | model_name="sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17", | 68 | model_name="sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17", |
| 55 | lang="zh_en_ko_ja_yue", | 69 | lang="zh_en_ko_ja_yue", |
| 56 | short_name="sense_voice", | 70 | short_name="sense_voice", |
-
请 注册 或 登录 后发表评论