Подтвердить что ты не робот

Любая простая реализация VAD?

Я ищу код C/С++ для VAD (обнаружение активности голоса).

В основном, мое приложение считывает кадры PCM с устройства. Я хотел бы знать, когда пользователь говорит. Я не ищу алгоритм распознавания речи, но только для обнаружения голоса.

Я хотел бы знать, когда пользователь говорит, и когда он заканчивает:

bool isVAD (короткий * pcm, size_t count);

4b9b3361

Ответ 1

Существуют проекты с открытым исходным кодом в проектах Sphinx и Freeswitch. Я думаю, что они все детекторы, основанные на энергии, не нуждаются в какой-либо модели.

Sphinx 4 (Java, но его легко переносить на C/С++)

PocketSphinx

Freeswitch

Ответ 2

Google open-source WebRTC код имеет модуль VAD, написанный на C. Он использует модель Gaussian Mixxt Model (GMM), которая обычно намного эффективнее простого детектора с порогом энергии, особенно в ситуации с динамическими уровнями и типами фоновых шумов. По моему опыту он также намного эффективнее, чем MoATAR-Homayounpour VAD, о котором Гилад упоминает в их комментарии.

Код VAD является частью гораздо более крупного репозитория WebRTC, но его очень легко вытащить и скомпилировать самостоятельно. Например. webrtcvad Пакет Python включает только источник VAD C.

API VR API WebRTC очень прост в использовании. Во-первых, звук должен быть моно-16-битным PCM с частотой дискретизации 8 кГц, 16 кГц или 32 кГц. Каждый кадр аудио, который вы отправляете в VAD, должен быть длиной 10, 20 или 30 миллисекунд.

Здесь контур примера, который предполагает audio_frame, составляет 10 мс (320 байт) аудио на частоте 16000 Гц:

#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);

Ответ 3

Как насчет LibVAD? www.libvad.com

Похоже, это делает именно то, что вы описываете.

Раскрытие информации: я разработчик LibBAD