Irgendeine einfache VAD-Implementierung?

Lesezeit: 3 Minuten

Ich suche nach C/C++-Code für VAD (Voice Activity Detection).

Grundsätzlich liest meine Anwendung PCM-Frames vom Gerät. Ich möchte wissen, wann der Benutzer spricht. Ich suche keinen Spracherkennungsalgorithmus, sondern nur die Spracherkennung.

Ich möchte wissen, wann der Benutzer spricht und wann er fertig ist:

bool isVAD(short* pcm,size_t count);

Benutzeravatar von John Wiseman
John Weisemann

Open Source von Google WebRTC Code verfügt über ein in C geschriebenes VAD-Modul. Es verwendet ein Gaußsches Mischungsmodell (GMM), das typischerweise viel effektiver ist als ein einfacher Energieschwellenwertdetektor, insbesondere in einer Situation mit dynamischen Pegeln und Arten von Hintergrundgeräuschen. Meiner Erfahrung nach ist es auch viel effektiver als das Moattar-Homayounpour VAD, das Gilad in seinem Kommentar erwähnt.

Der VAD-Code ist Teil des viel, viel größeren WebRTC-Repositorys, aber es ist sehr einfach, ihn herauszuziehen und selbst zu kompilieren. Bsp die webrtcvad Python-Wrapper enthält nur die VAD-C-Quelle.

Die WebRTC VAD API ist sehr einfach zu bedienen. Erstens muss das Audio 16-Bit-PCM-Mono sein, mit einer Abtastrate von entweder 8 KHz, 16 KHz oder 32 KHz. Jeder Audioframe, den Sie an den VAD senden, muss 10, 20 oder 30 Millisekunden lang sein.

Hier ist ein Überblick über ein Beispiel, das davon ausgeht audio_frame ist 10 ms (320 Byte) Audio bei 16000 Hz:

#include "webrtc/common_audio/vad/include/webrtc_vad.h"
// ...
VadInst *vad;
WebRtcVad_Create(&vad);
WebRtcVad_Init(vad);
int is_voiced = WebRtcVad_Process(vad, 16000, audio_frame, 160);

  • Ich portiere es auf iOS, aber ich weiß nicht, warum ich etwas eingefügt habe (anderes Audio, viel Hintergrund und Stimmen), es wird 1 zurückgegeben.

    – Kleiner Narr

    18. September 2016 um 11:00 Uhr

  • Mein Problem ist gelöst, es stellt sich heraus, dass dieser Code nur auf Little-Endian LPCM funktioniert, ändern Sie ihn und alles ist erledigt! Danke.

    – Kleiner Narr

    20. September 2016 um 17:15 Uhr

  • @Tinyfool hast du deinen iOS-Port irgendwo gepostet?

    – Chris Raethke

    31. Januar 2017 um 6:47 Uhr

  • Das WebRTC VAD wurde entwickelt, um echte Stimmen zu erkennen, aber manchmal braucht es Zeit/Beispiele, um sich anzupassen. Versuchen Sie zuerst, mit ihm zu sprechen, lassen Sie dann ein Buch fallen und sehen Sie, ob es das Fallgeräusch als Stimme klassifiziert.

    – John Weisemann

    20. November 2017 um 20:50 Uhr

  • Hallo John, ich füge das webRTC VAD-Modul hinzu von:- github.com/wiseman/py-webrtcvad. Jetzt erhalte ich ein Kompilierungsproblem in meiner vorhandenen Anwendung. Ich verwende iOS 12+ meine Anwendung in Objective-C. Bitte schlagen Sie vor, ob Sie Beispielcode für iOS geschrieben haben.

    – Shashank Gupta

    9. Oktober 2020 um 12:09 Uhr

Es gibt Open-Source-Implementierungen in den Projekten Sphinx und Freeswitch. Ich denke, sie sind alle energiebasierte Detektoren, die kein Modell benötigen.

Sphinx 4 (Java, aber es sollte einfach auf C/C++ zu portieren sein)

PocketSphinx

Freeswitch

  • Danke für die Links, der Freeswitch scheint mir der bessere Ansatz zu sein (C), aber es scheint immer noch so, als wäre er in ein komplexeres Framework eingebunden. Ich habe eine Python-Implementierung gefunden (github.com/shriphani/Listener/blob/master/VAD.py), was einfacher erscheint, aber da meine Python-Kenntnisse unterdurchschnittlich sind, suche ich immer noch nach einer C/C++-Implementierung.

    – Gilad Novik

    23. März 2011 um 6:07 Uhr


Benutzeravatar von Charles
Karl

Wie wäre es mit LibVAD? www.libvad.com

Scheint genau das zu tun, was du beschreibst.

Offenlegung: Ich bin der Entwickler hinter LibVAD

  • Charles, ich habe versucht, dich zu erreichen, aber bisher ohne Erfolg.

    – jolittlejohn

    4. September 2017 um 14:28 Uhr

  • @Charles Die Seite www.libvad.com ist für eine lange Zeit nicht erreichbar?

    – CedricSoubrie

    21. Oktober 2019 um 17:15 Uhr

1437430cookie-checkIrgendeine einfache VAD-Implementierung?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy