Skip to content

Commit a6095f5

Browse files
authored
Fix building for Pascal (#2305)
1 parent 59d118c commit a6095f5

3 files changed

Lines changed: 66 additions & 4 deletions

File tree

lazarus-examples/generate_subtitles/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,13 @@ for how to build the project in this directory.
77
You can find pre-built APPs from this directory at
88
https://k2-fsa.github.io/sherpa/onnx/lazarus/pre-built-app.html
99

10+
11+
12+
## notes for developers
13+
14+
By default, it uses static libs for Linux and macOS. To change that,
15+
open Lazarus IDE, select `Project`, `Project options`, `Compiler options`,
16+
change the `Build modes` to `Release-Linux`.
17+
18+
The `Release-Linux` mode is defined in the file `generate_subtitles.lpi`.
19+
It defines a macro `SHERPA_ONNX_USE_SHARED_LIBS`.

scripts/lazarus/generate-subtitles.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,24 @@ def get_models():
193193
194194
ls -lh
195195
196+
popd
197+
""",
198+
),
199+
Model(
200+
model_name="sherpa-onnx-nemo-parakeet-tdt-0.6b-v2-int8",
201+
lang="en",
202+
short_name="parakeet_tdt_0.6b_v2",
203+
cmd="""
204+
pushd $model_name
205+
206+
rm -rfv test_wavs
207+
208+
mv -v encoder.int8.onnx nemo-transducer-encoder.onnx
209+
mv -v decoder.int8.onnx nemo-transducer-decoder.onnx
210+
mv -v joiner.int8.onnx nemo-transducer-joiner.onnx
211+
212+
ls -lh
213+
196214
popd
197215
""",
198216
),

sherpa-onnx/pascal-api/sherpa_onnx.pas

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,13 @@ TSherpaOnnxOnlineCtcFstDecoderConfig = record
195195
class operator Initialize({$IFDEF FPC}var{$ELSE}out{$ENDIF} Dest: TSherpaOnnxOnlineCtcFstDecoderConfig);
196196
end;
197197

198+
TSherpaOnnxHomophoneReplacerConfig = record
199+
DictDir: AnsiString;
200+
Lexicon: AnsiString;
201+
RuleFsts: AnsiString;
202+
function ToString: AnsiString;
203+
end;
204+
198205
TSherpaOnnxOnlineRecognizerConfig = record
199206
FeatConfig: TSherpaOnnxFeatureConfig;
200207
ModelConfig: TSherpaOnnxOnlineModelConfig;
@@ -212,6 +219,7 @@ TSherpaOnnxOnlineRecognizerConfig = record
212219
BlankPenalty: Single;
213220
HotwordsBuf: AnsiString;
214221
HotwordsBufSize: Integer;
222+
Hr: TSherpaOnnxHomophoneReplacerConfig;
215223
function ToString: AnsiString;
216224
class operator Initialize({$IFDEF FPC}var{$ELSE}out{$ENDIF} Dest: TSherpaOnnxOnlineRecognizerConfig);
217225
end;
@@ -352,6 +360,7 @@ TSherpaOnnxOfflineRecognizerConfig = record
352360
RuleFsts: AnsiString;
353361
RuleFars: AnsiString;
354362
BlankPenalty: Single;
363+
Hr: TSherpaOnnxHomophoneReplacerConfig;
355364
class operator Initialize({$IFDEF FPC}var{$ELSE}out{$ENDIF} Dest: TSherpaOnnxOfflineRecognizerConfig);
356365
function ToString: AnsiString;
357366
end;
@@ -601,6 +610,7 @@ implementation
601610
{$linklib sherpa-onnx-kaldifst-core}
602611
{$linklib sherpa-onnx-fstfar}
603612
{$linklib sherpa-onnx-fst}
613+
{$linklib kissfft-float}
604614
{$linklib kaldi-native-fbank-core}
605615
{$linklib piper_phonemize}
606616
{$linklib espeak-ng}
@@ -668,6 +678,13 @@ SherpaOnnxOnlineCtcFstDecoderConfig = record
668678
Graph: PAnsiChar;
669679
MaxActive: cint32;
670680
end;
681+
682+
SherpaOnnxHomophoneReplacerConfig = record
683+
DictDir: PAnsiChar;
684+
Lexicon: PAnsiChar;
685+
RuleFsts: PAnsiChar;
686+
end;
687+
671688
SherpaOnnxOnlineRecognizerConfig = record
672689
FeatConfig: SherpaOnnxFeatureConfig;
673690
ModelConfig: SherpaOnnxOnlineModelConfig;
@@ -685,6 +702,7 @@ SherpaOnnxOnlineRecognizerConfig = record
685702
BlankPenalty: cfloat;
686703
HotwordsBuf: PAnsiChar;
687704
HotwordsBufSize: cint32;
705+
Hr: SherpaOnnxHomophoneReplacerConfig;
688706
end;
689707

690708
PSherpaOnnxOnlineRecognizerConfig = ^SherpaOnnxOnlineRecognizerConfig;
@@ -763,6 +781,7 @@ SherpaOnnxOfflineRecognizerConfig = record
763781
RuleFsts: PAnsiChar;
764782
RuleFars: PAnsiChar;
765783
BlankPenalty: cfloat;
784+
Hr: SherpaOnnxHomophoneReplacerConfig;
766785
end;
767786

768787
PSherpaOnnxOfflineRecognizerConfig = ^SherpaOnnxOfflineRecognizerConfig;
@@ -1238,6 +1257,12 @@ function TSherpaOnnxOnlineCtcFstDecoderConfig.ToString: AnsiString;
12381257
[Self.Graph, Self.MaxActive]);
12391258
end;
12401259

1260+
function TSherpaOnnxHomophoneReplacerConfig.ToString: AnsiString;
1261+
begin
1262+
Result := Format('TSherpaOnnxHomophoneReplacerConfig(DictDir := %s, Lexicon := %s, RuleFsts := %s)',
1263+
[Self.DictDir, Self.Lexicon, Self.RuleFsts]);
1264+
end;
1265+
12411266
function TSherpaOnnxOnlineRecognizerConfig.ToString: AnsiString;
12421267
begin
12431268
Result := Format('TSherpaOnnxOnlineRecognizerConfig(FeatConfig := %s, ' +
@@ -1253,15 +1278,16 @@ function TSherpaOnnxOnlineRecognizerConfig.ToString: AnsiString;
12531278
'CtcFstDecoderConfig := %s, ' +
12541279
'RuleFsts := %s, ' +
12551280
'RuleFars := %s, ' +
1256-
'BlankPenalty := %.1f' +
1281+
'BlankPenalty := %.1f, ' +
1282+
'Hr := %s' +
12571283
')'
12581284
,
12591285
[Self.FeatConfig.ToString, Self.ModelConfig.ToString,
12601286
Self.DecodingMethod, Self.MaxActivePaths, Self.EnableEndpoint.ToString,
12611287
Self.Rule1MinTrailingSilence, Self.Rule2MinTrailingSilence,
12621288
Self.Rule3MinUtteranceLength, Self.HotwordsFile, Self.HotwordsScore,
12631289
Self.CtcFstDecoderConfig.ToString, Self.RuleFsts, Self.RuleFars,
1264-
Self.BlankPenalty
1290+
Self.BlankPenalty, Self.Hr.ToString
12651291
]);
12661292
end;
12671293

@@ -1336,6 +1362,9 @@ constructor TSherpaOnnxOnlineRecognizer.Create(Config: TSherpaOnnxOnlineRecogniz
13361362
C.RuleFsts := PAnsiChar(Config.RuleFsts);
13371363
C.RuleFars := PAnsiChar(Config.RuleFars);
13381364
C.BlankPenalty := Config.BlankPenalty;
1365+
C.Hr.DictDir := PAnsiChar(Config.Hr.DictDir);
1366+
C.Hr.Lexicon := PAnsiChar(Config.Hr.Lexicon);
1367+
C.Hr.RuleFsts := PAnsiChar(Config.Hr.RuleFsts);
13391368

13401369
Self.Handle := SherpaOnnxCreateOnlineRecognizer(@C);
13411370
Self._Config := Config;
@@ -1574,12 +1603,13 @@ function TSherpaOnnxOfflineRecognizerConfig.ToString: AnsiString;
15741603
'HotwordsScore := %.1f, ' +
15751604
'RuleFsts := %s, ' +
15761605
'RuleFars := %s, ' +
1577-
'BlankPenalty := %1.f' +
1606+
'BlankPenalty := %1.f, ' +
1607+
'Hr := %s' +
15781608
')',
15791609
[Self.FeatConfig.ToString, Self.ModelConfig.ToString,
15801610
Self.LMConfig.ToString, Self.DecodingMethod, Self.MaxActivePaths,
15811611
Self.HotwordsFile, Self.HotwordsScore, Self.RuleFsts, Self.RuleFars,
1582-
Self.BlankPenalty
1612+
Self.BlankPenalty, Self.Hr.ToString
15831613
]);
15841614
end;
15851615

@@ -1640,6 +1670,10 @@ constructor TSherpaOnnxOfflineRecognizer.Create(Config: TSherpaOnnxOfflineRecogn
16401670
C.RuleFars := PAnsiChar(Config.RuleFars);
16411671
C.BlankPenalty := Config.BlankPenalty;
16421672

1673+
C.Hr.DictDir := PAnsiChar(Config.Hr.DictDir);
1674+
C.Hr.Lexicon := PAnsiChar(Config.Hr.Lexicon);
1675+
C.Hr.RuleFsts := PAnsiChar(Config.Hr.RuleFsts);
1676+
16431677
Self.Handle := SherpaOnnxCreateOfflineRecognizer(@C);
16441678
Self._Config := Config;
16451679
end;

0 commit comments

Comments
 (0)