diff --git a/code/client/cl_main.c b/code/client/cl_main.c
index 3fa0933b..13de133a 100644
--- a/code/client/cl_main.c
+++ b/code/client/cl_main.c
@@ -35,6 +35,7 @@ cvar_t	*cl_mumbleScale;
 
 #if USE_VOIP
 cvar_t	*cl_voipUseVAD;
+cvar_t	*cl_voipVADThreshold;
 cvar_t	*cl_voipSend;
 cvar_t	*cl_voipSendTarget;
 cvar_t	*cl_voipGainDuringCapture;
@@ -384,7 +385,7 @@ void CL_CaptureVoip(void)
 			clc.voipPower = voipPower / (32768.0f * 32768.0f *
 			              ((float) (clc.speexFrameSize * speexFrames)));
 
-			if ((useVad) && (clc.voipPower > 0.25f)) {
+			if ((useVad) && (clc.voipPower < cl_voipVADThreshold->value)) {
 				CL_VoipNewGeneration();  // no "talk" for at least 1/4 second.
 			} else {
 				clc.voipOutgoingDataSize = wpos;
@@ -3082,6 +3083,7 @@ void CL_Init( void ) {
 	cl_voipSendTarget = Cvar_Get ("cl_voipSendTarget", "all", 0);
 	cl_voipGainDuringCapture = Cvar_Get ("cl_voipGainDuringCapture", "0.2", CVAR_ARCHIVE);
 	cl_voipUseVAD = Cvar_Get ("cl_voipUseVAD", "0", CVAR_ARCHIVE);
+	cl_voipVADThreshold = Cvar_Get ("cl_voipVADThreshold", "0.0025", CVAR_ARCHIVE);
 	voip = Cvar_Get ("voip", "1", CVAR_USERINFO | CVAR_ARCHIVE | CVAR_LATCH);
 
 	// This is a protocol version number.
diff --git a/code/client/client.h b/code/client/client.h
index 1514582d..329d67ac 100644
--- a/code/client/client.h
+++ b/code/client/client.h
@@ -412,6 +412,7 @@ extern	cvar_t	*cl_mumbleScale;
 //  send to no one, or a comma-separated list of client numbers:
 //  "0,7,2,23" ... an empty string is treated like "all".
 extern	cvar_t	*cl_voipUseVAD;
+extern	cvar_t	*cl_voipVADThreshold;
 extern	cvar_t	*cl_voipSend;
 extern	cvar_t	*cl_voipSendTarget;
 extern	cvar_t	*cl_voipGainDuringCapture;