# VoiceActivityDetector

<a id="voiceactivitydetector"></a>

# VoiceActivityDetector

```cpp
#include <icy/speech/voiceactivitydetector.h>

class VoiceActivityDetector
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:57](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L57)

Detects speech in decoded audio by its energy and emits speech:start, speech:update and speech:end events.

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void(const [`SpeechEvent`](https://auscaster.com/icey/docs/api-reference/icy-speech-SpeechEvent.md#speechevent) &)> | [`Event`](#event-1)  |  |

---

<a id="event-1"></a>

### Event

```cpp
Signal< void(const SpeechEvent &)> Event
```

Type: [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void(const [`SpeechEvent`](https://auscaster.com/icey/docs/api-reference/icy-speech-SpeechEvent.md#speechevent) &)>

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:68](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L68)

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`VoiceActivityDetector`](#voiceactivitydetector-1) `explicit` |  |
| `void` | [`setConfig`](#setconfig)  |  |
| [`VoiceActivityDetectorConfig`](https://auscaster.com/icey/docs/api-reference/icy-speech-VoiceActivityDetectorConfig.md#voiceactivitydetectorconfig) | [`config`](#config-1) `const` |  |
| [`VoiceActivityDetectorStats`](https://auscaster.com/icey/docs/api-reference/icy-speech-VoiceActivityDetectorStats.md#voiceactivitydetectorstats) | [`stats`](#stats) `const` |  |
| `void` | [`reset`](#reset-23)  |  |
| `void` | [`process`](#process-17)  |  |

---

<a id="voiceactivitydetector-1"></a>

### VoiceActivityDetector

`explicit`

```cpp
explicit VoiceActivityDetector(VoiceActivityDetectorConfig config = {})
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:70](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L70)

---

<a id="setconfig"></a>

### setConfig

```cpp
void setConfig(VoiceActivityDetectorConfig config)
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:72](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L72)

---

<a id="config-1"></a>

### config

`const`

```cpp
VoiceActivityDetectorConfig config() const
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:73](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L73)

---

<a id="stats"></a>

### stats

`const`

```cpp
VoiceActivityDetectorStats stats() const
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:74](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L74)

---

<a id="reset-23"></a>

### reset

```cpp
void reset()
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:75](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L75)

---

<a id="process-17"></a>

### process

```cpp
void process(const av::PlanarAudioPacket & packet)
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:77](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L77)

## Private Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`VoiceActivityDetectorConfig`](https://auscaster.com/icey/docs/api-reference/icy-speech-VoiceActivityDetectorConfig.md#voiceactivitydetectorconfig) | [`_config`](#_config)  |  |
| `uint64_t` | [`_sequence`](#_sequence)  |  |
| `uint64_t` | [`_seen`](#_seen)  |  |
| `uint64_t` | [`_emitted`](#_emitted)  |  |
| `int64_t` | [`_lastUpdateUsec`](#_lastupdateusec)  |  |
| `int64_t` | [`_lastBelowThresholdUsec`](#_lastbelowthresholdusec)  |  |
| `bool` | [`_active`](#_active-1)  |  |
| `float` | [`_lastLevel`](#_lastlevel)  |  |
| `float` | [`_lastPeak`](#_lastpeak)  |  |

---

<a id="_config"></a>

### _config

```cpp
VoiceActivityDetectorConfig _config
```

Type: [`VoiceActivityDetectorConfig`](https://auscaster.com/icey/docs/api-reference/icy-speech-VoiceActivityDetectorConfig.md#voiceactivitydetectorconfig)

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:87](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L87)

---

<a id="_sequence"></a>

### _sequence

```cpp
uint64_t _sequence = 0
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:88](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L88)

---

<a id="_seen"></a>

### _seen

```cpp
uint64_t _seen = 0
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:89](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L89)

---

<a id="_emitted"></a>

### _emitted

```cpp
uint64_t _emitted = 0
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:90](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L90)

---

<a id="_lastupdateusec"></a>

### _lastUpdateUsec

```cpp
int64_t _lastUpdateUsec = 0
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:91](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L91)

---

<a id="_lastbelowthresholdusec"></a>

### _lastBelowThresholdUsec

```cpp
int64_t _lastBelowThresholdUsec = 0
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:92](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L92)

---

<a id="_active-1"></a>

### _active

```cpp
bool _active = false
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:93](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L93)

---

<a id="_lastlevel"></a>

### _lastLevel

```cpp
float _lastLevel = 0.0f
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:94](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L94)

---

<a id="_lastpeak"></a>

### _lastPeak

```cpp
float _lastPeak = 0.0f
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:95](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L95)

## Private Methods

| Return | Name | Description |
|--------|------|-------------|
| [`Levels`](https://auscaster.com/icey/docs/api-reference/icy-speech-VoiceActivityDetector-Levels.md#levels) | [`measure`](#measure) `const` |  |
| `void` | [`emitEvent`](#emitevent)  |  |

---

<a id="measure"></a>

### measure

`const`

```cpp
Levels measure(const av::PlanarAudioPacket & packet) const
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:81](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L81)

---

<a id="emitevent"></a>

### emitEvent

```cpp
void emitEvent(const char * type, const av::PlanarAudioPacket & packet, const Levels & levels, bool active)
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:82](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L82)

## Private Static Methods

| Return | Name | Description |
|--------|------|-------------|
| [`VoiceActivityDetectorConfig`](https://auscaster.com/icey/docs/api-reference/icy-speech-VoiceActivityDetectorConfig.md#voiceactivitydetectorconfig) | [`sanitize`](#sanitize) `static` |  |

---

<a id="sanitize"></a>

### sanitize

`static`

```cpp
static VoiceActivityDetectorConfig sanitize(VoiceActivityDetectorConfig config)
```

[Defined in src/speech/include/icy/speech/voiceactivitydetector.h:80](https://github.com/auscaster/icey/blob/main/src/speech/include/icy/speech/voiceactivitydetector.h#L80)
