-1

I am trying to set a threshold in dBFS terms for the input audio from a smartphone (in this case Android), below which the application will demarcate it to be Silence within a case of User speech. What I mean is, say the user is conversing and I am analysing the Audio stream from the MIC input. I need to detect Silence periods within the speech. Examples:

  • When the user is silent and not speaking
  • Silence periods between words and sentences

So what dBFS threshold should I set such that if the current Audio input is below that thresold, I would demarcate this timestamp to be silence? Let us assume an ambient background of an office setting with say an AC running, low hum of devices on and/or a fun running. Can anyone please help me on this?

4

This question, as stated, is not answerable. The answer is "it depends". What you need to determine is the noise level in the file. Silence is rarely silent, but there is a large difference between if there was a quiet fan going in the background vs recording in a crowded and noisy room. It will also vary greatly between different recording hardware as well as based on how sensitive mics are and how the preamp is set. You have to determine what the level of "silence" is and then set to that. We can't tell you what level that will be because there is no consistent or standard level.

One way you could determine it is to use a short recording of silence as a sample and then set the maximum value plus a small safety margin as the "silent" level. A slightly improved version would be to look at the "silent" value determined by looking at the loudest value from silence and compare it to the values obtained while talking. This will give you an idea of the signal to noise ratio (SNR) and will let you set the "silent" point high enough that it can avoid unexpected noises in the background while still picking up all the speech.

  • What would be the level if I am assuming a ambient background of an office setting with say an AC running, low hum of devices on and/or a fun running? – Sushovan Mandal Oct 31 '17 at 6:42
  • @sushovanmandal see my edit. The question you are asking is unanswerable. There is no consistent value. – AJ Henderson Oct 31 '17 at 12:54
  • Ok, so if I understand you correctly, I have to test the device usnder 'silent' conditions and see what dBFS values I am getting and then choose my threshold accordingly? – Sushovan Mandal Oct 31 '17 at 13:39
  • @SushovanMandal - basically, yes. I added a bit more detail to my answer on some ways to determine it. It's a tricky thing to do well though. – AJ Henderson Oct 31 '17 at 13:52
  • 2
    Also note that 'measuring dBFS' can produce very different results depending the time window used (i.e measuring individual samples vs an rms over a sliding window). Finding the best time window is one of the tricks involved in the OP's use case. – audionuma Nov 1 '17 at 6:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.