Fangjun Kuang
Committed by GitHub

Add Go API for FireRedAsr AED Model (#1879)

@@ -160,6 +160,10 @@ jobs: @@ -160,6 +160,10 @@ jobs:
160 go build 160 go build
161 ls -lh 161 ls -lh
162 162
  163 + echo "Test FireRedAsr"
  164 + ./run-fire-red-asr.sh
  165 + rm -rf sherpa-onnx-fire-red-asr-*
  166 +
163 echo "Test Moonshine" 167 echo "Test Moonshine"
164 ./run-moonshine.sh 168 ./run-moonshine.sh
165 rm -rf sherpa-onnx-* 169 rm -rf sherpa-onnx-*
@@ -28,6 +28,9 @@ func main() { @@ -28,6 +28,9 @@ func main() {
28 28
29 flag.StringVar(&config.ModelConfig.NemoCTC.Model, "nemo-ctc", "", "Path to the NeMo CTC model") 29 flag.StringVar(&config.ModelConfig.NemoCTC.Model, "nemo-ctc", "", "Path to the NeMo CTC model")
30 30
  31 + flag.StringVar(&config.ModelConfig.FireRedAsr.Encoder, "fire-red-asr-encoder", "", "Path to the FireRedAsr encoder model")
  32 + flag.StringVar(&config.ModelConfig.FireRedAsr.Decoder, "fire-red-asr-decoder", "", "Path to the FireRedAsr decoder model")
  33 +
31 flag.StringVar(&config.ModelConfig.Whisper.Encoder, "whisper-encoder", "", "Path to the whisper encoder model") 34 flag.StringVar(&config.ModelConfig.Whisper.Encoder, "whisper-encoder", "", "Path to the whisper encoder model")
32 flag.StringVar(&config.ModelConfig.Whisper.Decoder, "whisper-decoder", "", "Path to the whisper decoder model") 35 flag.StringVar(&config.ModelConfig.Whisper.Decoder, "whisper-decoder", "", "Path to the whisper decoder model")
33 flag.StringVar(&config.ModelConfig.Whisper.Language, "whisper-language", "", "Language of the input wave. You can leave it empty ") 36 flag.StringVar(&config.ModelConfig.Whisper.Language, "whisper-language", "", "Language of the input wave. You can leave it empty ")
  1 +#!/usr/bin/env bash
  2 +
  3 +set -ex
  4 +
  5 +if [ ! -f ./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/encoder.int8.onnx ]; then
  6 + curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16.tar.bz2
  7 + tar xvf sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16.tar.bz2
  8 + rm sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16.tar.bz2
  9 + ls -lh sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16
  10 +fi
  11 +
  12 +go mod tidy
  13 +go build
  14 +
  15 +./non-streaming-decode-files \
  16 + --fire-red-asr-encoder=./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/encoder.int8.onnx \
  17 + --fire-red-asr-decoder=./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/decoder.int8.onnx \
  18 + --tokens=./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/tokens.txt \
  19 + ./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/test_wavs/0.wav
  20 +
  1 +../../../../go-api-examples/non-streaming-decode-files/run-fire-red-asr.sh
@@ -385,6 +385,11 @@ type OfflineWhisperModelConfig struct { @@ -385,6 +385,11 @@ type OfflineWhisperModelConfig struct {
385 TailPaddings int 385 TailPaddings int
386 } 386 }
387 387
  388 +type OfflineFireRedAsrModelConfig struct {
  389 + Encoder string
  390 + Decoder string
  391 +}
  392 +
388 type OfflineMoonshineModelConfig struct { 393 type OfflineMoonshineModelConfig struct {
389 Preprocessor string 394 Preprocessor string
390 Encoder string 395 Encoder string
@@ -416,6 +421,7 @@ type OfflineModelConfig struct { @@ -416,6 +421,7 @@ type OfflineModelConfig struct {
416 Tdnn OfflineTdnnModelConfig 421 Tdnn OfflineTdnnModelConfig
417 SenseVoice OfflineSenseVoiceModelConfig 422 SenseVoice OfflineSenseVoiceModelConfig
418 Moonshine OfflineMoonshineModelConfig 423 Moonshine OfflineMoonshineModelConfig
  424 + FireRedAsr OfflineFireRedAsrModelConfig
419 Tokens string // Path to tokens.txt 425 Tokens string // Path to tokens.txt
420 426
421 // Number of threads to use for neural network computation 427 // Number of threads to use for neural network computation
@@ -538,6 +544,12 @@ func NewOfflineRecognizer(config *OfflineRecognizerConfig) *OfflineRecognizer { @@ -538,6 +544,12 @@ func NewOfflineRecognizer(config *OfflineRecognizerConfig) *OfflineRecognizer {
538 c.model_config.moonshine.cached_decoder = C.CString(config.ModelConfig.Moonshine.CachedDecoder) 544 c.model_config.moonshine.cached_decoder = C.CString(config.ModelConfig.Moonshine.CachedDecoder)
539 defer C.free(unsafe.Pointer(c.model_config.moonshine.cached_decoder)) 545 defer C.free(unsafe.Pointer(c.model_config.moonshine.cached_decoder))
540 546
  547 + c.model_config.fire_red_asr.encoder = C.CString(config.ModelConfig.FireRedAsr.Encoder)
  548 + defer C.free(unsafe.Pointer(c.model_config.fire_red_asr.encoder))
  549 +
  550 + c.model_config.fire_red_asr.decoder = C.CString(config.ModelConfig.FireRedAsr.Decoder)
  551 + defer C.free(unsafe.Pointer(c.model_config.fire_red_asr.decoder))
  552 +
541 c.model_config.tokens = C.CString(config.ModelConfig.Tokens) 553 c.model_config.tokens = C.CString(config.ModelConfig.Tokens)
542 defer C.free(unsafe.Pointer(c.model_config.tokens)) 554 defer C.free(unsafe.Pointer(c.model_config.tokens))
543 555