Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add C# API for SenseVoice models #1151

Merged
merged 3 commits into from
Jul 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 11 additions & 10 deletions .github/scripts/test-dot-net.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,8 @@

cd dotnet-examples/

cd ./keyword-spotting-from-files
./run.sh

cd ../online-decode-files
./run-transducer-itn.sh
./run-zipformer2-ctc.sh
./run-transducer.sh
./run-paraformer.sh

cd ../offline-decode-files
cd ./offline-decode-files
./run-sense-voice-ctc.sh
./run-paraformer-itn.sh
./run-telespeech-ctc.sh
./run-nemo-ctc.sh
Expand All @@ -21,6 +13,15 @@ cd ../offline-decode-files
./run-whisper.sh
./run-tdnn-yesno.sh

cd ../keyword-spotting-from-files
./run.sh

cd ../online-decode-files
./run-transducer-itn.sh
./run-zipformer2-ctc.sh
./run-transducer.sh
./run-paraformer.sh

cd ../vad-non-streaming-asr-paraformer
./run.sh

Expand Down
11 changes: 11 additions & 0 deletions dotnet-examples/offline-decode-files/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,12 @@ class Options
[Option("telespeech-ctc", Required = false, HelpText = "Path to model.onnx. Used only for TeleSpeech CTC models")]
public string TeleSpeechCtc { get; set; } = "";

[Option("sense-voice-model", Required = false, HelpText = "Path to model.onnx. Used only for SenseVoice CTC models")]
public string SenseVoiceModel { get; set; } = "";

[Option("sense-voice-use-itn", Required = false, HelpText = "1 to use inverse text normalization for sense voice.")]
public int SenseVoiceUseItn { get; set; } = 1;

[Option("num-threads", Required = false, Default = 1, HelpText = "Number of threads for computation")]
public int NumThreads { get; set; } = 1;

Expand Down Expand Up @@ -225,6 +231,11 @@ private static void Run(Options options)
{
config.ModelConfig.Tdnn.Model = options.TdnnModel;
}
else if (!String.IsNullOrEmpty(options.SenseVoiceModel))
{
config.ModelConfig.SenseVoice.Model = options.SenseVoiceModel;
config.ModelConfig.SenseVoice.UseInverseTextNormalization = options.SenseVoiceUseItn;
}
else
{
Console.WriteLine("Please provide a model");
Expand Down
14 changes: 14 additions & 0 deletions dotnet-examples/offline-decode-files/run-sense-voice-ctc.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash

set -ex

if [ ! -d ./sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17 ]; then
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17.tar.bz2
tar xvf sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17.tar.bz2
rm sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17.tar.bz2
fi

dotnet run \
--sense-voice-model=./sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17/model.int8.onnx \
--tokens=./sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17/tokens.txt \
--files ./sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17/test_wavs/zh.wav
6 changes: 3 additions & 3 deletions scripts/dart/release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ windows_x64_wheel=$src_dir/$windows_x64_wheel_filename
function process_linux() {
mkdir -p t
cd t
curl -OL https://$HF_MIRROR/csukuangfj/sherpa-onnx-wheels/resolve/main/$linux_wheel_filename
curl -OL https://$HF_MIRROR/csukuangfj/sherpa-onnx-wheels/resolve/main/cpu/$SHERPA_ONNX_VERSION/$linux_wheel_filename
unzip $linux_wheel_filename
cp -v sherpa_onnx/lib/*.so* ../linux
cd ..
Expand All @@ -50,7 +50,7 @@ function process_linux() {
function process_windows_x64() {
mkdir -p t
cd t
curl -OL https://$HF_MIRROR/csukuangfj/sherpa-onnx-wheels/resolve/main/$windows_x64_wheel_filename
curl -OL https://$HF_MIRROR/csukuangfj/sherpa-onnx-wheels/resolve/main/cpu/$SHERPA_ONNX_VERSION/$windows_x64_wheel_filename
unzip $windows_x64_wheel_filename
cp -v sherpa_onnx-${SHERPA_ONNX_VERSION}.data/data/bin/*.dll ../windows
cd ..
Expand All @@ -60,7 +60,7 @@ function process_windows_x64() {
function process_macos() {
mkdir -p t
cd t
curl -OL https://$HF_MIRROR/csukuangfj/sherpa-onnx-wheels/resolve/main/$macos_wheel_filename
curl -OL https://$HF_MIRROR/csukuangfj/sherpa-onnx-wheels/resolve/main/cpu/$SHERPA_ONNX_VERSION/$macos_wheel_filename
unzip $macos_wheel_filename
cp -v sherpa_onnx/lib/*.dylib ../macos
cd ..
Expand Down
7 changes: 4 additions & 3 deletions scripts/dotnet/OfflineModelConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public OfflineModelConfig()
ModelingUnit = "cjkchar";
BpeVocab = "";
TeleSpeechCtc = "";
SenseVoice = new OfflineSenseVoiceModelConfig();
}
public OfflineTransducerModelConfig Transducer;
public OfflineParaformerModelConfig Paraformer;
Expand Down Expand Up @@ -51,7 +52,7 @@ public OfflineModelConfig()

[MarshalAs(UnmanagedType.LPStr)]
public string TeleSpeechCtc;
}


}
public OfflineSenseVoiceModelConfig SenseVoice;
}
}
24 changes: 24 additions & 0 deletions scripts/dotnet/OfflineSenseVoiceModelConfig.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/// Copyright (c) 2024 Xiaomi Corporation (authors: Fangjun Kuang)

using System.Runtime.InteropServices;

namespace SherpaOnnx
{
[StructLayout(LayoutKind.Sequential)]
public struct OfflineSenseVoiceModelConfig
{
public OfflineSenseVoiceModelConfig()
{
Model = "";
Language = "";
UseInverseTextNormalization = 0;
}
[MarshalAs(UnmanagedType.LPStr)]
public string Model;

[MarshalAs(UnmanagedType.LPStr)]
public string Language;

public int UseInverseTextNormalization;
}
}
10 changes: 5 additions & 5 deletions scripts/dotnet/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ if [ ! -f $src_dir/linux-x64/libsherpa-onnx-c-api.so ]; then
if [ -f $linux_x64_wheel ]; then
cp -v $linux_x64_wheel .
else
curl -OL https://$HF_MIRROR/csukuangfj/sherpa-onnx-wheels/resolve/main/$linux_x64_wheel_filename
curl -OL https://$HF_MIRROR/csukuangfj/sherpa-onnx-wheels/resolve/main/cpu/$SHERPA_ONNX_VERSION/$linux_x64_wheel_filename
fi
unzip $linux_x64_wheel_filename
cp -v sherpa_onnx/lib/*.so* ../
Expand All @@ -73,7 +73,7 @@ if [ ! -f $src_dir/linux-arm64/libsherpa-onnx-c-api.so ]; then
if [ -f $linux_arm64_wheel ]; then
cp -v $linux_arm64_wheel .
else
curl -OL https://$HF_MIRROR/csukuangfj/sherpa-onnx-wheels/resolve/main/$linux_arm64_wheel_filename
curl -OL https://$HF_MIRROR/csukuangfj/sherpa-onnx-wheels/resolve/main/cpu/$SHERPA_ONNX_VERSION/$linux_arm64_wheel_filename
fi
unzip $linux_arm64_wheel_filename
cp -v sherpa_onnx/lib/*.so* ../
Expand All @@ -91,7 +91,7 @@ if [ ! -f $src_dir/macos-x64/libsherpa-onnx-c-api.dylib ]; then
if [ -f $macos_x64_wheel ]; then
cp -v $macos_x64_wheel .
else
curl -OL https://$HF_MIRROR/csukuangfj/sherpa-onnx-wheels/resolve/main/$macos_x64_wheel_filename
curl -OL https://$HF_MIRROR/csukuangfj/sherpa-onnx-wheels/resolve/main/cpu/$SHERPA_ONNX_VERSION/$macos_x64_wheel_filename
fi
unzip $macos_x64_wheel_filename
cp -v sherpa_onnx/lib/*.dylib ../
Expand All @@ -111,7 +111,7 @@ if [ ! -f $src_dir/macos-arm64/libsherpa-onnx-c-api.dylib ]; then
if [ -f $macos_arm64_wheel ]; then
cp -v $macos_arm64_wheel .
else
curl -OL https://$HF_MIRROR/csukuangfj/sherpa-onnx-wheels/resolve/main/$macos_arm64_wheel_filename
curl -OL https://$HF_MIRROR/csukuangfj/sherpa-onnx-wheels/resolve/main/cpu/$SHERPA_ONNX_VERSION/$macos_arm64_wheel_filename
fi
unzip $macos_arm64_wheel_filename
cp -v sherpa_onnx/lib/*.dylib ../
Expand All @@ -131,7 +131,7 @@ if [ ! -f $src_dir/windows-x64/sherpa-onnx-c-api.dll ]; then
if [ -f $windows_x64_wheel ]; then
cp -v $windows_x64_wheel .
else
curl -OL https://$HF_MIRROR/csukuangfj/sherpa-onnx-wheels/resolve/main/$windows_x64_wheel_filename
curl -OL https://$HF_MIRROR/csukuangfj/sherpa-onnx-wheels/resolve/main/cpu/$SHERPA_ONNX_VERSION/$windows_x64_wheel_filename
fi
unzip $windows_x64_wheel_filename
cp -v sherpa_onnx-${SHERPA_ONNX_VERSION}.data/data/bin/*.dll ../
Expand Down
14 changes: 7 additions & 7 deletions scripts/go/release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ function linux() {
dst=$(realpath sherpa-onnx-go-linux/lib/x86_64-unknown-linux-gnu)
mkdir t
cd t
wget -q https://huggingface.co/csukuangfj/sherpa-onnx-wheels/resolve/main/sherpa_onnx-${SHERPA_ONNX_VERSION}-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
wget -q https://huggingface.co/csukuangfj/sherpa-onnx-wheels/resolve/main/cpu/$SHERPA_ONNX_VERSION/sherpa_onnx-${SHERPA_ONNX_VERSION}-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
unzip ./sherpa_onnx-${SHERPA_ONNX_VERSION}-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

cp -v sherpa_onnx/lib/*.so* $dst
Expand All @@ -39,7 +39,7 @@ function linux() {
dst=$(realpath sherpa-onnx-go-linux/lib/aarch64-unknown-linux-gnu)
mkdir t
cd t
wget -q https://huggingface.co/csukuangfj/sherpa-onnx-wheels/resolve/main/sherpa_onnx-${SHERPA_ONNX_VERSION}-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
wget -q https://huggingface.co/csukuangfj/sherpa-onnx-wheels/resolve/main/cpu/$SHERPA_ONNX_VERSION/sherpa_onnx-${SHERPA_ONNX_VERSION}-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
unzip ./sherpa_onnx-${SHERPA_ONNX_VERSION}-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

cp -v sherpa_onnx/lib/*.so* $dst
Expand All @@ -51,7 +51,7 @@ function linux() {
dst=$(realpath sherpa-onnx-go-linux/lib/arm-unknown-linux-gnueabihf)
mkdir t
cd t
wget -q https://huggingface.co/csukuangfj/sherpa-onnx-wheels/resolve/main/sherpa_onnx-${SHERPA_ONNX_VERSION}-cp38-cp38-linux_armv7l.whl
wget -q https://huggingface.co/csukuangfj/sherpa-onnx-wheels/resolve/main/cpu/$SHERPA_ONNX_VERSION/sherpa_onnx-${SHERPA_ONNX_VERSION}-cp38-cp38-linux_armv7l.whl
unzip ./sherpa_onnx-${SHERPA_ONNX_VERSION}-cp38-cp38-linux_armv7l.whl

cp -v sherpa_onnx/lib/*.so* $dst
Expand Down Expand Up @@ -84,7 +84,7 @@ function osx() {

mkdir t
cd t
wget -q https://huggingface.co/csukuangfj/sherpa-onnx-wheels/resolve/main/sherpa_onnx-${SHERPA_ONNX_VERSION}-cp39-cp39-macosx_11_0_x86_64.whl
wget -q https://huggingface.co/csukuangfj/sherpa-onnx-wheels/resolve/main/cpu/$SHERPA_ONNX_VERSION/sherpa_onnx-${SHERPA_ONNX_VERSION}-cp39-cp39-macosx_11_0_x86_64.whl
unzip ./sherpa_onnx-${SHERPA_ONNX_VERSION}-cp39-cp39-macosx_11_0_x86_64.whl

cp -v sherpa_onnx/lib/*.dylib $dst/
Expand All @@ -102,7 +102,7 @@ function osx() {

mkdir t
cd t
wget -q https://huggingface.co/csukuangfj/sherpa-onnx-wheels/resolve/main/sherpa_onnx-${SHERPA_ONNX_VERSION}-cp39-cp39-macosx_11_0_arm64.whl
wget -q https://huggingface.co/csukuangfj/sherpa-onnx-wheels/resolve/main/cpu/$SHERPA_ONNX_VERSION/sherpa_onnx-${SHERPA_ONNX_VERSION}-cp39-cp39-macosx_11_0_arm64.whl
unzip ./sherpa_onnx-${SHERPA_ONNX_VERSION}-cp39-cp39-macosx_11_0_arm64.whl

cp -v sherpa_onnx/lib/*.dylib $dst/
Expand Down Expand Up @@ -137,7 +137,7 @@ function windows() {
dst=$(realpath sherpa-onnx-go-windows/lib/x86_64-pc-windows-gnu)
mkdir t
cd t
wget -q https://huggingface.co/csukuangfj/sherpa-onnx-wheels/resolve/main/sherpa_onnx-${SHERPA_ONNX_VERSION}-cp38-cp38-win_amd64.whl
wget -q https://huggingface.co/csukuangfj/sherpa-onnx-wheels/resolve/main/cpu/$SHERPA_ONNX_VERSION/sherpa_onnx-${SHERPA_ONNX_VERSION}-cp38-cp38-win_amd64.whl
unzip ./sherpa_onnx-${SHERPA_ONNX_VERSION}-cp38-cp38-win_amd64.whl

cp -v sherpa_onnx-${SHERPA_ONNX_VERSION}.data/data/bin/*.dll $dst
Expand All @@ -149,7 +149,7 @@ function windows() {
dst=$(realpath sherpa-onnx-go-windows/lib/i686-pc-windows-gnu)
mkdir t
cd t
wget -q https://huggingface.co/csukuangfj/sherpa-onnx-wheels/resolve/main/sherpa_onnx-${SHERPA_ONNX_VERSION}-cp38-cp38-win32.whl
wget -q https://huggingface.co/csukuangfj/sherpa-onnx-wheels/resolve/main/cpu/$SHERPA_ONNX_VERSION/sherpa_onnx-${SHERPA_ONNX_VERSION}-cp38-cp38-win32.whl
unzip ./sherpa_onnx-${SHERPA_ONNX_VERSION}-cp38-cp38-win32.whl

cp -v sherpa_onnx-${SHERPA_ONNX_VERSION}.data/data/bin/*.dll $dst
Expand Down
Loading