demo_vad_online.py 930 B

12345678910111213141516171819202122232425262728
  1. from funasr_onnx import Fsmn_vad_online
  2. import soundfile
  3. from pathlib import Path
  4. model_dir = "damo/speech_fsmn_vad_zh-cn-16k-common-pytorch"
  5. wav_path = '{}/.cache/modelscope/hub/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch/example/vad_example.wav'.format(Path.home())
  6. model = Fsmn_vad_online(model_dir)
  7. ##online vad
  8. speech, sample_rate = soundfile.read(wav_path)
  9. speech_length = speech.shape[0]
  10. #
  11. sample_offset = 0
  12. step = 1600
  13. param_dict = {'in_cache': []}
  14. for sample_offset in range(0, speech_length, min(step, speech_length - sample_offset)):
  15. if sample_offset + step >= speech_length - 1:
  16. step = speech_length - sample_offset
  17. is_final = True
  18. else:
  19. is_final = False
  20. param_dict['is_final'] = is_final
  21. segments_result = model(audio_in=speech[sample_offset: sample_offset + step],
  22. param_dict=param_dict)
  23. if segments_result:
  24. print(segments_result)