Add more Python examples for SenseVoice (#1179)
This commit is contained in:
@@ -12,12 +12,12 @@ Supported file formats are those supported by ffmpeg; for instance,
|
||||
Note that you need a non-streaming model for this script.
|
||||
|
||||
Please visit
|
||||
https://github.com/snakers4/silero-vad/raw/master/src/silero_vad/data/silero_vad.onnx
|
||||
https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/silero_vad.onnx
|
||||
to download silero_vad.onnx
|
||||
|
||||
For instance,
|
||||
|
||||
wget https://github.com/snakers4/silero-vad/raw/master/src/silero_vad/data/silero_vad.onnx
|
||||
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/silero_vad.onnx
|
||||
|
||||
(1) For paraformer
|
||||
|
||||
@@ -58,7 +58,17 @@ wget https://github.com/snakers4/silero-vad/raw/master/src/silero_vad/data/siler
|
||||
--num-threads=2 \
|
||||
/path/to/test.mp4
|
||||
|
||||
(4) For WeNet CTC models
|
||||
(4) For SenseVoice CTC models
|
||||
|
||||
./python-api-examples/generate-subtitles.py \
|
||||
--silero-vad-model=/path/to/silero_vad.onnx \
|
||||
--sense-voice=./sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17/model.onnx \
|
||||
--tokens=./sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17/tokens.txt \
|
||||
--num-threads=2 \
|
||||
/path/to/test.mp4
|
||||
|
||||
|
||||
(5) For WeNet CTC models
|
||||
|
||||
./python-api-examples/generate-subtitles.py \
|
||||
--silero-vad-model=/path/to/silero_vad.onnx \
|
||||
@@ -130,6 +140,13 @@ def get_args():
|
||||
help="Path to the model.onnx from Paraformer",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--sense-voice",
|
||||
default="",
|
||||
type=str,
|
||||
help="Path to the model.onnx from SenseVoice",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--wenet-ctc",
|
||||
default="",
|
||||
@@ -242,6 +259,7 @@ def assert_file_exists(filename: str):
|
||||
def create_recognizer(args) -> sherpa_onnx.OfflineRecognizer:
|
||||
if args.encoder:
|
||||
assert len(args.paraformer) == 0, args.paraformer
|
||||
assert len(args.sense_voice) == 0, args.sense_voice
|
||||
assert len(args.wenet_ctc) == 0, args.wenet_ctc
|
||||
assert len(args.whisper_encoder) == 0, args.whisper_encoder
|
||||
assert len(args.whisper_decoder) == 0, args.whisper_decoder
|
||||
@@ -262,6 +280,7 @@ def create_recognizer(args) -> sherpa_onnx.OfflineRecognizer:
|
||||
debug=args.debug,
|
||||
)
|
||||
elif args.paraformer:
|
||||
assert len(args.sense_voice) == 0, args.sense_voice
|
||||
assert len(args.wenet_ctc) == 0, args.wenet_ctc
|
||||
assert len(args.whisper_encoder) == 0, args.whisper_encoder
|
||||
assert len(args.whisper_decoder) == 0, args.whisper_decoder
|
||||
@@ -277,6 +296,19 @@ def create_recognizer(args) -> sherpa_onnx.OfflineRecognizer:
|
||||
decoding_method=args.decoding_method,
|
||||
debug=args.debug,
|
||||
)
|
||||
elif args.sense_voice:
|
||||
assert len(args.wenet_ctc) == 0, args.wenet_ctc
|
||||
assert len(args.whisper_encoder) == 0, args.whisper_encoder
|
||||
assert len(args.whisper_decoder) == 0, args.whisper_decoder
|
||||
|
||||
assert_file_exists(args.sense_voice)
|
||||
recognizer = sherpa_onnx.OfflineRecognizer.from_sense_voice(
|
||||
model=args.sense_voice,
|
||||
tokens=args.tokens,
|
||||
num_threads=args.num_threads,
|
||||
use_itn=True,
|
||||
debug=args.debug,
|
||||
)
|
||||
elif args.wenet_ctc:
|
||||
assert len(args.whisper_encoder) == 0, args.whisper_encoder
|
||||
assert len(args.whisper_decoder) == 0, args.whisper_decoder
|
||||
@@ -406,6 +438,9 @@ def main():
|
||||
vad.accept_waveform(buffer[:window_size])
|
||||
buffer = buffer[window_size:]
|
||||
|
||||
if is_silence:
|
||||
vad.flush()
|
||||
|
||||
streams = []
|
||||
segments = []
|
||||
while not vad.empty():
|
||||
|
||||
Reference in New Issue
Block a user