Add C++ runtime and Python APIs for Moonshine models (#1473)
This commit is contained in:
@@ -35,7 +35,18 @@ Note that you need a non-streaming model for this script.
|
||||
--sample-rate=16000 \
|
||||
--feature-dim=80
|
||||
|
||||
(3) For Whisper models
|
||||
(3) For Moonshine models
|
||||
|
||||
./python-api-examples/vad-with-non-streaming-asr.py \
|
||||
--silero-vad-model=/path/to/silero_vad.onnx \
|
||||
--moonshine-preprocessor=./sherpa-onnx-moonshine-tiny-en-int8/preprocess.onnx \
|
||||
--moonshine-encoder=./sherpa-onnx-moonshine-tiny-en-int8/encode.int8.onnx \
|
||||
--moonshine-uncached-decoder=./sherpa-onnx-moonshine-tiny-en-int8/uncached_decode.int8.onnx \
|
||||
--moonshine-cached-decoder=./sherpa-onnx-moonshine-tiny-en-int8/cached_decode.int8.onnx \
|
||||
--tokens=./sherpa-onnx-moonshine-tiny-en-int8/tokens.txt \
|
||||
--num-threads=2
|
||||
|
||||
(4) For Whisper models
|
||||
|
||||
./python-api-examples/vad-with-non-streaming-asr.py \
|
||||
--silero-vad-model=/path/to/silero_vad.onnx \
|
||||
@@ -45,7 +56,7 @@ Note that you need a non-streaming model for this script.
|
||||
--whisper-task=transcribe \
|
||||
--num-threads=2
|
||||
|
||||
(4) For SenseVoice CTC models
|
||||
(5) For SenseVoice CTC models
|
||||
|
||||
./python-api-examples/vad-with-non-streaming-asr.py \
|
||||
--silero-vad-model=/path/to/silero_vad.onnx \
|
||||
@@ -192,6 +203,34 @@ def get_args():
|
||||
""",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--moonshine-preprocessor",
|
||||
default="",
|
||||
type=str,
|
||||
help="Path to moonshine preprocessor model",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--moonshine-encoder",
|
||||
default="",
|
||||
type=str,
|
||||
help="Path to moonshine encoder model",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--moonshine-uncached-decoder",
|
||||
default="",
|
||||
type=str,
|
||||
help="Path to moonshine uncached decoder model",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--moonshine-cached-decoder",
|
||||
default="",
|
||||
type=str,
|
||||
help="Path to moonshine cached decoder model",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--blank-penalty",
|
||||
type=float,
|
||||
@@ -251,6 +290,12 @@ def create_recognizer(args) -> sherpa_onnx.OfflineRecognizer:
|
||||
assert len(args.sense_voice) == 0, args.sense_voice
|
||||
assert len(args.whisper_encoder) == 0, args.whisper_encoder
|
||||
assert len(args.whisper_decoder) == 0, args.whisper_decoder
|
||||
assert len(args.moonshine_preprocessor) == 0, args.moonshine_preprocessor
|
||||
assert len(args.moonshine_encoder) == 0, args.moonshine_encoder
|
||||
assert (
|
||||
len(args.moonshine_uncached_decoder) == 0
|
||||
), args.moonshine_uncached_decoder
|
||||
assert len(args.moonshine_cached_decoder) == 0, args.moonshine_cached_decoder
|
||||
|
||||
assert_file_exists(args.encoder)
|
||||
assert_file_exists(args.decoder)
|
||||
@@ -272,6 +317,12 @@ def create_recognizer(args) -> sherpa_onnx.OfflineRecognizer:
|
||||
assert len(args.sense_voice) == 0, args.sense_voice
|
||||
assert len(args.whisper_encoder) == 0, args.whisper_encoder
|
||||
assert len(args.whisper_decoder) == 0, args.whisper_decoder
|
||||
assert len(args.moonshine_preprocessor) == 0, args.moonshine_preprocessor
|
||||
assert len(args.moonshine_encoder) == 0, args.moonshine_encoder
|
||||
assert (
|
||||
len(args.moonshine_uncached_decoder) == 0
|
||||
), args.moonshine_uncached_decoder
|
||||
assert len(args.moonshine_cached_decoder) == 0, args.moonshine_cached_decoder
|
||||
|
||||
assert_file_exists(args.paraformer)
|
||||
|
||||
@@ -287,6 +338,12 @@ def create_recognizer(args) -> sherpa_onnx.OfflineRecognizer:
|
||||
elif args.sense_voice:
|
||||
assert len(args.whisper_encoder) == 0, args.whisper_encoder
|
||||
assert len(args.whisper_decoder) == 0, args.whisper_decoder
|
||||
assert len(args.moonshine_preprocessor) == 0, args.moonshine_preprocessor
|
||||
assert len(args.moonshine_encoder) == 0, args.moonshine_encoder
|
||||
assert (
|
||||
len(args.moonshine_uncached_decoder) == 0
|
||||
), args.moonshine_uncached_decoder
|
||||
assert len(args.moonshine_cached_decoder) == 0, args.moonshine_cached_decoder
|
||||
|
||||
assert_file_exists(args.sense_voice)
|
||||
recognizer = sherpa_onnx.OfflineRecognizer.from_sense_voice(
|
||||
@@ -299,6 +356,12 @@ def create_recognizer(args) -> sherpa_onnx.OfflineRecognizer:
|
||||
elif args.whisper_encoder:
|
||||
assert_file_exists(args.whisper_encoder)
|
||||
assert_file_exists(args.whisper_decoder)
|
||||
assert len(args.moonshine_preprocessor) == 0, args.moonshine_preprocessor
|
||||
assert len(args.moonshine_encoder) == 0, args.moonshine_encoder
|
||||
assert (
|
||||
len(args.moonshine_uncached_decoder) == 0
|
||||
), args.moonshine_uncached_decoder
|
||||
assert len(args.moonshine_cached_decoder) == 0, args.moonshine_cached_decoder
|
||||
|
||||
recognizer = sherpa_onnx.OfflineRecognizer.from_whisper(
|
||||
encoder=args.whisper_encoder,
|
||||
@@ -311,6 +374,22 @@ def create_recognizer(args) -> sherpa_onnx.OfflineRecognizer:
|
||||
task=args.whisper_task,
|
||||
tail_paddings=args.whisper_tail_paddings,
|
||||
)
|
||||
elif args.moonshine_preprocessor:
|
||||
assert_file_exists(args.moonshine_preprocessor)
|
||||
assert_file_exists(args.moonshine_encoder)
|
||||
assert_file_exists(args.moonshine_uncached_decoder)
|
||||
assert_file_exists(args.moonshine_cached_decoder)
|
||||
|
||||
recognizer = sherpa_onnx.OfflineRecognizer.from_moonshine(
|
||||
preprocessor=args.moonshine_preprocessor,
|
||||
encoder=args.moonshine_encoder,
|
||||
uncached_decoder=args.moonshine_uncached_decoder,
|
||||
cached_decoder=args.moonshine_cached_decoder,
|
||||
tokens=args.tokens,
|
||||
num_threads=args.num_threads,
|
||||
decoding_method=args.decoding_method,
|
||||
debug=args.debug,
|
||||
)
|
||||
else:
|
||||
raise ValueError("Please specify at least one model")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user