Author Topic: noise-cancellation/post-processing  (Read 4440 times)

0 Members and 1 Guest are viewing this topic.

tria

  • Jr. Member
  • **
  • Posts: 22
  • Karma: 0
    • View Profile
noise-cancellation/post-processing
« on: February 25, 2012, 08:44:09 AM »
Hello,

While testing many mics I realized that what affect the accuracy the most is not the level of the voice, but rather the clearness of the voice. Some of the mics provide great coverage, but have high noise level which make detection impossible even if you are close to the mic.

Wouldn't it be great if VC can do noise cancellation to improve the accuracy. It can be trained to detect the noise for the mic. For example, the user record a sample under quite condition (to determine the noise) for a few seconds, and this will be like a noise profile for the mic. Then this will be used with any further recorded/listened speech to (subtract) the noise from the speech. This while it will not remove all the noise, it will end up with a much clearer voice. Also, another way is to filter low/high freq bands, allow the use of different sample rates and so fourth. You can also make this step use external utility specialized in this kind of processing.

Kalle

  • $upporter
  • Hero Member
  • *****
  • Posts: 2319
  • Karma: 47
    • View Profile
Re: noise-cancellation/post-processing
« Reply #1 on: February 25, 2012, 09:20:08 AM »
Hello,

While testing many mics I realized that what affect the accuracy the most is not the level of the voice, but rather the clearness of the voice. Some of the mics provide great coverage, but have high noise level which make detection impossible even if you are close to the mic.

Wouldn't it be great if VC can do noise cancellation to improve the accuracy. It can be trained to detect the noise for the mic. For example, the user record a sample under quite condition (to determine the noise) for a few seconds, and this will be like a noise profile for the mic. Then this will be used with any further recorded/listened speech to (subtract) the noise from the speech. This while it will not remove all the noise, it will end up with a much clearer voice. Also, another way is to filter low/high freq bands, allow the use of different sample rates and so fourth. You can also make this step use external utility specialized in this kind of processing.
Hi tria, yes you can use a noisegate by hard or software side, but software to do this need many resources of cpu for audio processing. If you use a software like "WaveLab by Steinberg" is to much expensive and it is better you buy a good mic with noisecancelling on board.
The most wireless headsets have it on board and work great with VC. The only thing with same great results is the "Wireless Audio Box". You can find a short review in the mic threat.

Kalle
***********  get excited and make things  **********

tria

  • Jr. Member
  • **
  • Posts: 22
  • Karma: 0
    • View Profile
Re: noise-cancellation/post-processing
« Reply #2 on: February 25, 2012, 10:06:40 AM »
Yes true. But simpler software processing algorithm might introduce improvements.

I have a noise cancelling mic, and it works great. However, I am wishing to use one of the microphone array that have better coverage, but poor noise cancellation. Can you suggest any good microphone array?

Also, can you suggest software (driver-level) to do noise-cancellation. Same with hardware, can you suggest a device that can be used with PC (usb maybe?) that accept any mic and cancel it's noise.

Thanks.

Kalle

  • $upporter
  • Hero Member
  • *****
  • Posts: 2319
  • Karma: 47
    • View Profile
Re: noise-cancellation/post-processing
« Reply #3 on: February 25, 2012, 11:07:27 AM »
Yes true. But simpler software processing algorithm might introduce improvements.

I have a noise cancelling mic, and it works great. However, I am wishing to use one of the microphone array that have better coverage, but poor noise cancellation. Can you suggest any good microphone array?

Also, can you suggest software (driver-level) to do noise-cancellation. Same with hardware, can you suggest a device that can be used with PC (usb maybe?) that accept any mic and cancel it's noise.

Thanks.
I think this mic array http://www.acousticmagic.com/ has great potential, but it is very expensive. For hardware noise-gate you can take a look to any store for musicans.
For a hardware/software solution you can take a look here: http://shop.andreaelectronics.com/

Kalle
***********  get excited and make things  **********

jitterjames

  • Administrator
  • Hero Member
  • *****
  • Posts: 7713
  • Karma: 116
    • View Profile
    • VoxCommando
Re: noise-cancellation/post-processing
« Reply #4 on: February 25, 2012, 01:00:31 PM »
True noise cancellation is only possible with two microphones positioned close to the speaker (the person speaking).  The sound coming from the mic which is pointed away from the speaker is subtracted from the sound entering the mic which is pointed toward the speaker.  Anything else is noise reduction.  It is not possible to do true noise cancellation with software alone.  In a single microphone situation all we can do is filter certain frequencies out but this does not necessarily help.  Even frequencies which are outside of the range normally thought of as the range of human voice, can be useful to the engine (sibilants etc.)

In my experience with both good and bad quality microphones, software noise cancellation usually reduces the quality of the recognition, or has no noticeable effect.  I have also yet to see beam forming used in array mics to help recognition accuracy, but maybe it's possible with more expensive mics.

In many cases the best way to get better recognition is to reduce the input level of your microphone.

I do not know of any way to get sound fed into to the MS speech engine anyway other than feeding it the default microphone input, or letting it read a wav file.  This is something they overlooked when they came out with sapi 5.3.  I am sure this can be done at a lower level before the stage where the sound is made available to the OS but this is beyond my ability.  As you can see I don't even know the correct terminology  :bonk.  As you say: "driver-level".  So the issue is sort of a non-issue anyway.
« Last Edit: February 25, 2012, 01:06:31 PM by jitterjames »

tria

  • Jr. Member
  • **
  • Posts: 22
  • Karma: 0
    • View Profile
Re: noise-cancellation/post-processing
« Reply #5 on: February 25, 2012, 04:28:25 PM »
I totally agree with you jitterjames. But noise reduction using a noise-only profile to subtract from speech with noise is a close approximation to the true cancellation you described (which is by all means better as the noise is real time, and not pre-recorded). I saw lots of software do it, and the results were acceptable (human-ear-wise). I am not saying it is better or worse, or whether you should do it or not. I just think it is a good approximation that work at least for human ear (recording/playback). Will it be better for recognition, I am not so sure now since you say it might be worse, and since I cannot try enabling/disabling it (it is either with the mic or not).

You are right about the level. I tried that before and it increased the recognition a *little* bit. I still think the reason is due to the fact that noise become less hear-able. But I could be wrong.

I see you are using SAPI 5.3, didn't know you relay on such lib (and that you can end up with such great and flexible program). I think I under estimated it. Then do you use .NET, and if so, what language (C++,C#,VB,...), of course if you don't mind me asking.

Oh and no, it is not a bug (issue), it is a feature :)
But that doesn't mean I expect it being implemented, as I do know how hard to do driver-level hooks (also you will end up with unsigned code). It is just I wish for a hand-free and head/ear-free solution with high accuracy. I am willing to invest in the more expensive ones, but only if they prove to be like the head ones, but from a distance.

Thank you guys for your valuable discussion. I believe all my posts drift away from the topic.
« Last Edit: February 25, 2012, 04:31:55 PM by tria »

Kalle

  • $upporter
  • Hero Member
  • *****
  • Posts: 2319
  • Karma: 47
    • View Profile
Re: noise-cancellation/post-processing
« Reply #6 on: February 25, 2012, 04:50:08 PM »
And here for all other user they have no plan of what we discuss  ::wave

How work an array microphone? - see pic below

Kalle
***********  get excited and make things  **********

jitterjames

  • Administrator
  • Hero Member
  • *****
  • Posts: 7713
  • Karma: 116
    • View Profile
    • VoxCommando
Re: noise-cancellation/post-processing
« Reply #7 on: February 25, 2012, 04:54:55 PM »
Yes, C#.  I love C# and I love visual studio.  The only problem is that it has spoiled me a bit for more "hands-on" type programming.  If anyone is interested in writing their own plugins for VoxCommando in C# I would be happy to help them get started.

If you are interested in testing and you have access to some software that can process wav files and then save them as wav files, then you can do some quantitative tests to see if there is anything to be gained.

VC has a feature where it can watch a folder and when it sees a new wav file show up it will read it and analyse the speech recorded therein.  You can therefore test the same .wav file before and after applying any software filters that you want to try.  Just be aware that you should switch back and forth a few times because the learning feature may kick in and affect your results.

Part of the problem is we need to define what "noise" is.  Is it the sound of air moving around your house, the squeak of your chair, a fan or compressor on our fridge etc.  or is it music, a movie or TV show playing, other people talking etc.  I think you are thinking of more traditional simple noise like a fan.  This is of course easier to remove, but on the other hand, I think the speech engine already handles this kind of thing in a fairly intelligent manner.  (It's a bit of a black box so I can't say for sure).

If you want to try the .wav watcher you can enable it in the VC Options, but it hasn't been tested for ages so it may require some attention ;)

tria

  • Jr. Member
  • **
  • Posts: 22
  • Karma: 0
    • View Profile
Re: noise-cancellation/post-processing
« Reply #8 on: February 26, 2012, 04:21:24 AM »
Thanks jitterjames. I am not currently thinking about doing noise reduction, but I might in the future.

But your wav-watcher idea got my attention, is there a similar wav-spitter (if you don't mind the name :D) where it spit/output the recorded/voice from your application in real time (and is able to call something else with every update to the file). This will be useful for the other utility I'm planing doing. Check your PM please.

Kalle, did you just ripped that from Andrea website :biglaugh
But I agree, it is a great diagram, I knew what "array" was all about after seeing it.

Thanks guys.

Kalle

  • $upporter
  • Hero Member
  • *****
  • Posts: 2319
  • Karma: 47
    • View Profile
Re: noise-cancellation/post-processing
« Reply #9 on: February 26, 2012, 05:57:01 AM »
Thanks jitterjames. I am not currently thinking about doing noise reduction, but I might in the future.

But your wav-watcher idea got my attention, is there a similar wav-spitter (if you don't mind the name :D) where it spit/output the recorded/voice from your application in real time (and is able to call something else with every update to the file). This will be useful for the other utility I'm planing doing. Check your PM please.

Kalle, did you just ripped that from Andrea website :biglaugh
But I agree, it is a great diagram, I knew what "array" was all about after seeing it.

Thanks guys.
Yes it is a snapshot from a pdf  ;)  Ha ha, I written "for all other user they have no plan ..."  :biglaugh

Kalle
***********  get excited and make things  **********

jitterjames

  • Administrator
  • Hero Member
  • *****
  • Posts: 7713
  • Karma: 116
    • View Profile
    • VoxCommando
Re: noise-cancellation/post-processing
« Reply #10 on: February 26, 2012, 08:03:20 AM »
Quote
"for all other user they have no plan ..."

for all the other users who have no idea... or no clue what we are talking about.  ;D

jitterjames

  • Administrator
  • Hero Member
  • *****
  • Posts: 7713
  • Karma: 116
    • View Profile
    • VoxCommando
Re: noise-cancellation/post-processing
« Reply #11 on: February 26, 2012, 08:30:54 AM »
But your wav-watcher idea got my attention, is there a similar wav-spitter (if you don't mind the name :D) where it spit/output the recorded/voice from your application in real time (and is able to call something else with every update to the file). This will be useful for the other utility I'm planing doing. Check your PM please.
Something like this should be possible but I don't know if it makes sense for it to be in VoxCommando.