Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/mumblekit.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/MKAudioInput.m18
-rw-r--r--src/MumbleKit/MKAudio.h8
2 files changed, 19 insertions, 7 deletions
diff --git a/src/MKAudioInput.m b/src/MKAudioInput.m
index 2ee8f4d..875d9c0 100644
--- a/src/MKAudioInput.m
+++ b/src/MKAudioInput.m
@@ -695,14 +695,18 @@ static OSStatus inputCallback(void *udata, AudioUnitRenderActionFlags *flags, co
_peakCleanMic = -96.0f;
}
- // Crude probability-based VAD
if (_settings.transmitType == MKTransmitTypeVAD) {
- spx_int32_t prob = 0;
- speex_preprocess_ctl(_private->preprocessorState, SPEEX_PREPROCESS_GET_PROB, &prob);
- if (!_lastTransmit) {
- _doTransmit = prob > 75;
- } else {
- _doTransmit = prob > 55;
+ float level = _speechProbability;
+ if (_settings.vadKind == MKVADKindAmplitude) {
+ level = ((_peakCleanMic)/96.0f) + 1.0;
+ }
+ _doTransmit = NO;
+ if (_settings.vadMax == 0 && _settings.vadMin == 0) {
+ _doTransmit = NO;
+ } else if (level > _settings.vadMax) {
+ _doTransmit = YES;
+ } else if (level > _settings.vadMin && _lastTransmit) {
+ _doTransmit = YES;
}
} else if (_settings.transmitType == MKTransmitTypeContinuous) {
_doTransmit = YES;
diff --git a/src/MumbleKit/MKAudio.h b/src/MumbleKit/MKAudio.h
index e14438b..0c64a8f 100644
--- a/src/MumbleKit/MKAudio.h
+++ b/src/MumbleKit/MKAudio.h
@@ -47,9 +47,17 @@ typedef enum _MKTransmitType {
MKTransmitTypeContinuous,
} MKTransmitType;
+typedef enum _MKVADKind {
+ MKVADKindSignalToNoise,
+ MKVADKindAmplitude,
+} MKVADKind;
+
typedef struct _MKAudioSettings {
MKCodecFormat codec;
MKTransmitType transmitType;
+ MKVADKind vadKind;
+ float vadMax;
+ float vadMin;
int quality;
int audioPerPacket;
int noiseSuppression;