Machine Learning/Device

로컬 vad(voice activity detection) 사용기 (Sirelo)

jinmc 2024. 12. 2. 17:25
반응형

프로젝트를 하다가 앱을 만드는데 있어서 음성 녹음을 받아서 chatgpt한테 넘겨주는 애플리케이션을 만드는 데 있어서, vad의 중요성을 알게 되었습니다. 관련 아티클 : https://thegradient.pub/one-voice-detector-to-rule-them-all/ 

 

One Voice Detector to Rule Them All

VAD is among the most important and fundamental algorithms in any production or data preparation pipelines related to speech

thegradient.pub

 

VAD의 필요성은, STT를 사용하려면 wav file 또는 mp3 파일이 있어야지 그걸 STT 모델에 전달 할 수 있을 텐데, 이를 자를려면 VAD가 있어야 함을 알게 되었습니다. 만약 VAD가 없다면, 다른 해결방법이 있긴 합니다. socket 통신으로 streaming으로 서버에 계속 보내는 형식으로 STT를 할 수 있는데, 그러는 경우 여러가지 방법이 있긴 한데, 

 

Google STT의 경우 무료로 사용가능한 library 인 만큼 2초 정도 말을 안하면 자동으로 끊기는 문제점이 있었습니다.

Azure STT의 경우 유료이긴 하지만, hackathon으로 사용할 정도의 비용은 되고, 또 끊기는 문제점이 없어서 사용은 가능할 것으로 보였습니다. 하지만 Azure나 Google STT의 경우 둘 다 인터넷을 사용한 api 서비스 이기 때문에, 좋은 폰에서는 굳이 로컬 기능을 사용하지 않을 이유가 없어 보였습니다. 

 

사실 몇 달 전만 하더라도 로컬에서 사용할 정도의 성능이 나오지 않는 것으로 알고 있었는데, 얼마 전에 업데이트가 되어서 로컬 VAD 뿐만 아니라, https://github.com/char5742/flutter_silero_vad javascript 라이브러리 사용하는 vad도 사용이 가능한 것으로 보입니다. https://pub.dev/packages/vad/versions/0.0.3 .

 

더군다나 Sirelo VAD의 경우 MIT license라서 사용도 용이한 것으로 보입니다. 로컬모델의 경우 onnx 모델을 다운받아서 사용하면 되는 것으로 보입니다. 

반응형