@@ -35,6 +35,10 @@ function freeConfig(config, Module) {
35
35
freeConfig ( config . whisper , Module )
36
36
}
37
37
38
+ if ( 'fireRedAsr' in config ) {
39
+ freeConfig ( config . fireRedAsr , Module )
40
+ }
41
+
38
42
if ( 'moonshine' in config ) {
39
43
freeConfig ( config . moonshine , Module )
40
44
}
@@ -651,6 +655,35 @@ function initSherpaOnnxOfflineMoonshineModelConfig(config, Module) {
651
655
}
652
656
}
653
657
658
+ function initSherpaOnnxOfflineFireRedAsrModelConfig ( config , Module ) {
659
+ const encoderLen = Module . lengthBytesUTF8 ( config . encoder || '' ) + 1 ;
660
+ const decoderLen = Module . lengthBytesUTF8 ( config . decoder || '' ) + 1 ;
661
+
662
+ const n = encoderLen + decoderLen ;
663
+ const buffer = Module . _malloc ( n ) ;
664
+
665
+ const len = 2 * 4 ; // 2 pointers
666
+ const ptr = Module . _malloc ( len ) ;
667
+
668
+ let offset = 0 ;
669
+ Module . stringToUTF8 ( config . encoder || '' , buffer + offset , encoderLen ) ;
670
+ offset += encoderLen ;
671
+
672
+ Module . stringToUTF8 ( config . decoder || '' , buffer + offset , decoderLen ) ;
673
+ offset += decoderLen ;
674
+
675
+ offset = 0 ;
676
+ Module . setValue ( ptr , buffer + offset , 'i8*' ) ;
677
+ offset += encoderLen ;
678
+
679
+ Module . setValue ( ptr + 4 , buffer + offset , 'i8*' ) ;
680
+ offset += decoderLen ;
681
+
682
+ return {
683
+ buffer : buffer , ptr : ptr , len : len ,
684
+ }
685
+ }
686
+
654
687
function initSherpaOnnxOfflineTdnnModelConfig ( config , Module ) {
655
688
const n = Module . lengthBytesUTF8 ( config . model || '' ) + 1 ;
656
689
const buffer = Module . _malloc ( n ) ;
@@ -755,6 +788,13 @@ function initSherpaOnnxOfflineModelConfig(config, Module) {
755
788
} ;
756
789
}
757
790
791
+ if ( ! ( 'fireRedAsr' in config ) ) {
792
+ config . fireRedAsr = {
793
+ encoder : '' ,
794
+ decoder : '' ,
795
+ } ;
796
+ }
797
+
758
798
if ( ! ( 'tdnn' in config ) ) {
759
799
config . tdnn = {
760
800
model : '' ,
@@ -789,8 +829,11 @@ function initSherpaOnnxOfflineModelConfig(config, Module) {
789
829
const moonshine =
790
830
initSherpaOnnxOfflineMoonshineModelConfig ( config . moonshine , Module ) ;
791
831
832
+ const fireRedAsr =
833
+ initSherpaOnnxOfflineFireRedAsrModelConfig ( config . fireRedAsr , Module ) ;
834
+
792
835
const len = transducer . len + paraformer . len + nemoCtc . len + whisper . len +
793
- tdnn . len + 8 * 4 + senseVoice . len + moonshine . len ;
836
+ tdnn . len + 8 * 4 + senseVoice . len + moonshine . len + fireRedAsr . len ;
794
837
795
838
const ptr = Module . _malloc ( len ) ;
796
839
@@ -884,11 +927,15 @@ function initSherpaOnnxOfflineModelConfig(config, Module) {
884
927
offset += senseVoice . len ;
885
928
886
929
Module . _CopyHeap ( moonshine . ptr , moonshine . len , ptr + offset ) ;
930
+ offset += moonshine . len ;
931
+
932
+ Module . _CopyHeap ( fireRedAsr . ptr , fireRedAsr . len , ptr + offset ) ;
933
+ offset += fireRedAsr . len ;
887
934
888
935
return {
889
936
buffer : buffer , ptr : ptr , len : len , transducer : transducer ,
890
937
paraformer : paraformer , nemoCtc : nemoCtc , whisper : whisper , tdnn : tdnn ,
891
- senseVoice : senseVoice , moonshine : moonshine ,
938
+ senseVoice : senseVoice , moonshine : moonshine , fireRedAsr : fireRedAsr
892
939
}
893
940
}
894
941
0 commit comments