Kami telah menerbitkan Detektor Aktivitas Suara modern dan banyak lagi

gambar







Saat bekerja dengan ucapan, beberapa pertanyaan yang sangat "sederhana" selalu muncul, yang solusinya tidak banyak alat yang nyaman, terbuka, dan sederhana: deteksi kehadiran suara (atau musik), deteksi keberadaan angka, dan klasifikasi bahasa .







Untuk mengatasi masalah deteksi suara (Voice Activity Detector, VAD), ada alat yang cukup populer dari Google - webRTC VAD . Ini tidak menuntut dalam sumber daya dan kompak, tetapi kerugian utamanya adalah ketidakstabilan terhadap kebisingan, sejumlah besar positif palsu dan ketidakmungkinan penyesuaian. Jelas bahwa jika kita merumuskan kembali masalah bukan menjadi deteksi suara, tetapi menjadi deteksi diam (diam adalah tidak adanya suara dan kebisingan), maka masalah ini diselesaikan dengan cara yang sangat sepele (ambang energi, misalnya), tetapi dengan kekurangan dan keterbatasan yang sama. Hal yang paling tidak menyenangkan adalah seringkali keputusan seperti itu rapuh dan beberapa ambang batas kode keras tidak ditransfer ke domain lain.







STT ( PyTorch ONNX), , , , VAD , MIT. .









"VAD"?







  • VAD — , ;
  • Number detector — , ;
  • Language classifier — ;
  • 4 (, , , ), VAD ( — - , , VAD !);


"" :







  • 4 ;
  • VAD WebRTC ;
  • ;
  • , 1 ;
  • edge ;
  • (PyTorch, ONNX);
  • WebRTC , ;
  • PyTorch (JIT), ONNX;




  • ;
  • ;
  • (- , , STT);
  • edge ;
  • ONNX ;
  • VAD 16 kHz, 8 kHz;




colab . , :







  • PyTorch ONNX;
  • — VAD — , / ;
  • — . VAD ;
  • , ( , 1 , - );


, VAD :







import torch
torch.set_num_threads(1)

model, utils = torch.hub.load(repo_or_dir='snakers4/silero-vad',
                              model='silero_vad',
                              force_reload=True)

(get_speech_ts,
 _, read_audio,
 _, _, _) = utils

files_dir = torch.hub.get_dir() + '/snakers4_silero-vad_master/files'

wav = read_audio(f'{files_dir}/en.wav')
speech_timestamps = get_speech_ts(wav, model,
                                  num_steps=4)
print(speech_timestamps)
      
      





VAD



, VAD. .







  • 250 . , 100 , 30-50. ( 100 250 );
  • VAD ( );
  • 500 ( 200 ) 4 8 ;
  • ;
  • , "" "". - ;




1 AMD Ryzen Threadripper 3960X. :







torch.set_num_threads(1) # pytorch
ort_session.intra_op_num_threads = 1 # onnx
ort_session.inter_op_num_threads = 1 # onnx
      
      





, :







  • num_steps — "";
  • number of audio streams — ;
  • , num_steps * number of audio streams;


:







Batch size Pytorch latency, ms Onnx latency, ms
2 9 2
4 11 4
8 14 7
16 19 12
40 36 29
80 64 55
120 96 85
200 157 137


, 1 :







Batch size num_steps Pytorch model RTS Onnx model RTS
40 4 68 86
40 8 34 43
80 4 78 91
80 8 39 45
120 4 78 88
120 8 39 44
200 4 80 91
200 8 40 46




, , VAD . WebRT, 0 1?







WebRTC 0 1. - 30 , 250 8 . , 0 1 .







:







gambar









, VAD , . , . VAD.








All Articles