Fangjun Kuang
Committed by GitHub

Add C# API for FireRedAsr Model (#1875)

... ... @@ -34,6 +34,10 @@ rm -fv *.wav
rm -rfv sherpa-onnx-pyannote-*
cd ../offline-decode-files
./run-fire-red-asr.sh
rm -rf sherpa-onnx-fire-red-asr-*
./run-moonshine.sh
rm -rf sherpa-onnx-*
... ...
... ... @@ -34,6 +34,14 @@ class OfflineDecodeFiles
[Option("model-type", Required = false, Default = "", HelpText = "model type")]
public string ModelType { get; set; } = string.Empty;
[Option("fire-red-asr-encoder", Required = false, Default = "", HelpText = "Path to FireRedAsr encoder.int8.onnx. Used only for FireRedAsr models")]
public string FireRedAsrEncoder { get; set; } = string.Empty;
[Option("fire-red-asr-decoder", Required = false, Default = "", HelpText = "Path to FireRedAsr decoder.int8.onnx. Used only for FireRedAsr models")]
public string FireRedAsrDecoder { get; set; } = string.Empty;
[Option("whisper-encoder", Required = false, Default = "", HelpText = "Path to whisper encoder.onnx. Used only for whisper models")]
public string WhisperEncoder { get; set; } = string.Empty;
... ... @@ -252,6 +260,11 @@ to download pre-trained Tdnn models.
config.ModelConfig.Moonshine.UncachedDecoder = options.MoonshineUncachedDecoder;
config.ModelConfig.Moonshine.CachedDecoder = options.MoonshineCachedDecoder;
}
else if (!string.IsNullOrEmpty(options.FireRedAsrEncoder))
{
config.ModelConfig.FireRedAsr.Encoder = options.FireRedAsrEncoder;
config.ModelConfig.FireRedAsr.Decoder = options.FireRedAsrDecoder;
}
else
{
Console.WriteLine("Please provide a model");
... ...
#!/usr/bin/env bash
set -ex
if [ ! -f ./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/encoder.int8.onnx ]; then
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
tar xvf sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16.tar.bz2
rm sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16.tar.bz2
ls -lh sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16
fi
dotnet run \
--num-threads=2 \
--fire-red-asr-encoder=./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/encoder.int8.onnx \
--fire-red-asr-decoder=./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/decoder.int8.onnx \
--tokens=./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/tokens.txt \
--files ./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/test_wavs/0.wav
... ...
/// Copyright (c) 2025 Xiaomi Corporation (authors: Fangjun Kuang)
using System.Runtime.InteropServices;
namespace SherpaOnnx
{
[StructLayout(LayoutKind.Sequential)]
public struct OfflineFireRedAsrModelConfig
{
public OfflineFireRedAsrModelConfig()
{
Encoder = "";
Decoder = "";
}
[MarshalAs(UnmanagedType.LPStr)]
public string Encoder;
[MarshalAs(UnmanagedType.LPStr)]
public string Decoder;
}
}
... ...
... ... @@ -25,6 +25,7 @@ namespace SherpaOnnx
TeleSpeechCtc = "";
SenseVoice = new OfflineSenseVoiceModelConfig();
Moonshine = new OfflineMoonshineModelConfig();
FireRedAsr = new OfflineFireRedAsrModelConfig();
}
public OfflineTransducerModelConfig Transducer;
public OfflineParaformerModelConfig Paraformer;
... ... @@ -56,5 +57,6 @@ namespace SherpaOnnx
public OfflineSenseVoiceModelConfig SenseVoice;
public OfflineMoonshineModelConfig Moonshine;
public OfflineFireRedAsrModelConfig FireRedAsr;
}
}
... ...