@@ -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]);
12391258end ;
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+
12411266function TSherpaOnnxOnlineRecognizerConfig.ToString : AnsiString;
12421267begin
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 ]);
12661292end ;
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 ]);
15841614end ;
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;
16451679end ;
0 commit comments