You can do this by installing virtual audio devices. One such software
is Virtual Audio Cable (or VAC). This can be downloaded from
http://software.muzychenko.net/eng/vac.html.
Using this software, you can install any number of virtual sound
devices and interconnect their inputs and outputs. When you install
VAC, it sets up new system-wide Wave Device named Virtual Audio Cable
appears, having two digital audio (wave) ports: Virtual Cable 1 In for
an input port and Virtual Cable 1 Out for an output port. Any number
of such devices can be configured in the system and their
inputs/outputs interconnected.
VAC seems like a set of real full-duplex sound cards with its digital
outputs hardwired to its digital inputs. Like a sound card, each
virtual cable has two ends - Wave Out audio port, and Wave In audio
port. Source application produces (plays) the sound, sends it to VAC
Out port, VAC driver immediately transfers it to VAC In port, and
destination application receives the sound from VAC In port.
For your case, you need one such VAC device configured. This would be
seen as 'Virtual Cable 1' in list of audio devices installed in device
manager.
This device named 'Virtual Cable 1' should be made preferred recording
device in Control Panel-> Sounds and Multimedia -> Audio-> Sound
Recording. Please read the software's documentation for more details.
This means that waveIn port of Virtual Cable 1 would be opened for
getting sound stream by recording application which is google talk in
you case.
Then the filter C++ code which you have should be enhanced to read
audio stream from the actual sound card device and output noise
filtered audio to waveOut port of Virtual Cable 1. Virtual Cable 1
replicates it to its waveIn.
Thus google talk or other recording applications are able to get the
noise filtered sound directly.
One other software which seems to fit your requirement is Total recorder SDK.
See http://www.highcriteria.com/main_productfr_trsdk_info.htm. |