Add C# API for FireRedAsr Model (#1875)
This commit is contained in:
4
.github/scripts/test-dot-net.sh
vendored
4
.github/scripts/test-dot-net.sh
vendored
@@ -34,6 +34,10 @@ rm -fv *.wav
|
|||||||
rm -rfv sherpa-onnx-pyannote-*
|
rm -rfv sherpa-onnx-pyannote-*
|
||||||
|
|
||||||
cd ../offline-decode-files
|
cd ../offline-decode-files
|
||||||
|
|
||||||
|
./run-fire-red-asr.sh
|
||||||
|
rm -rf sherpa-onnx-fire-red-asr-*
|
||||||
|
|
||||||
./run-moonshine.sh
|
./run-moonshine.sh
|
||||||
rm -rf sherpa-onnx-*
|
rm -rf sherpa-onnx-*
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,14 @@ class OfflineDecodeFiles
|
|||||||
[Option("model-type", Required = false, Default = "", HelpText = "model type")]
|
[Option("model-type", Required = false, Default = "", HelpText = "model type")]
|
||||||
public string ModelType { get; set; } = string.Empty;
|
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")]
|
[Option("whisper-encoder", Required = false, Default = "", HelpText = "Path to whisper encoder.onnx. Used only for whisper models")]
|
||||||
public string WhisperEncoder { get; set; } = string.Empty;
|
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.UncachedDecoder = options.MoonshineUncachedDecoder;
|
||||||
config.ModelConfig.Moonshine.CachedDecoder = options.MoonshineCachedDecoder;
|
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
|
else
|
||||||
{
|
{
|
||||||
Console.WriteLine("Please provide a model");
|
Console.WriteLine("Please provide a model");
|
||||||
|
|||||||
17
dotnet-examples/offline-decode-files/run-fire-red-asr.sh
Executable file
17
dotnet-examples/offline-decode-files/run-fire-red-asr.sh
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/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
|
||||||
21
scripts/dotnet/OfflineFireRedAsrModelConfig.cs
Normal file
21
scripts/dotnet/OfflineFireRedAsrModelConfig.cs
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
/// 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 = "";
|
TeleSpeechCtc = "";
|
||||||
SenseVoice = new OfflineSenseVoiceModelConfig();
|
SenseVoice = new OfflineSenseVoiceModelConfig();
|
||||||
Moonshine = new OfflineMoonshineModelConfig();
|
Moonshine = new OfflineMoonshineModelConfig();
|
||||||
|
FireRedAsr = new OfflineFireRedAsrModelConfig();
|
||||||
}
|
}
|
||||||
public OfflineTransducerModelConfig Transducer;
|
public OfflineTransducerModelConfig Transducer;
|
||||||
public OfflineParaformerModelConfig Paraformer;
|
public OfflineParaformerModelConfig Paraformer;
|
||||||
@@ -56,5 +57,6 @@ namespace SherpaOnnx
|
|||||||
|
|
||||||
public OfflineSenseVoiceModelConfig SenseVoice;
|
public OfflineSenseVoiceModelConfig SenseVoice;
|
||||||
public OfflineMoonshineModelConfig Moonshine;
|
public OfflineMoonshineModelConfig Moonshine;
|
||||||
|
public OfflineFireRedAsrModelConfig FireRedAsr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user