[Audacity-devel] EffectTruncSilence almost working ... newbie requesting help to finish
A free multi-track audio editor and recorder
Brought to you by:
aosiniao
From: Lynn A. <l_d...@ad...> - 2005-01-14 13:37:52
|
<alert comment="newbie"> I've uploaded TruncSilenceEffect.zip to: http://osdn.dl.sourceforge.net/sourceforge/inverse/TruncSilenceEffect.zip I "claim" it is about 90+% working as far as truncating long silent gaps in mono vocal tracks (but that may be naive on my part :-) It is "cloned" from Dominic's EffectNormalize code. The .zip includes the following files: * TruncSilence.cpp * TruncSilence.h * LoadEffects.cpp * audacity.dsw ... Visual Studio project file to reference above files These files are in a directory structure that should unzip into the standard Audacity 1.2.3 directories: Audacity ... src ... src\effects\TruncSilence.cpp ... src\effects\TruncSilence.h ... src\effects\LoadEffects.cpp ... win\audacity.dsp There is a .wav file input.wav in http://osdn.dl.sourceforge.net/sourceforge/inverse/TruncSilence.zip that can be used to test the effect. It is about 30 seconds long, with quite a few silent gaps. Caveats: ************** * Developed using Visual Studio 98 (Visual C++ 6.0 sp6). The equivalent of makefiles for other platforms would need to be adjusted to incorporate TruncSilence.cpp and TruncSilence.h ************** * Assumes mono track that has been normalized and had noise removed. Otherwise, there may be residual noise that will appear to be a signal that should be removed retain. (Click/pop removal would be very helpful when that is eventually implemented.) ************** * Dialog to acquire parameters is "stubbed". It should use wxWidget text boxes to acquire parameters for: - what length of time is considered silence (current code is "hard-wired" to 0.2 sec of continuous signal strength beneath a 0.01 threshold), - a parameter as to what db is considered silence (current code is "hard-wired to 0.01, which is about -40db), - a parameter as to what length of time is considered speech (something under 0.01 might be considered a click/pop so don't reset the counter for a long silence ... not implemented at all in the code ... mea culpa). - I have effectively zilch wxWidget experience, so was hoping to get help from someone with LOTS more wxWidget experience than myself. TIA! ************** * I'm baffled by how tracks are made up of sequences and/or blocks. The current code detects silent gaps over 0.2 seconds, and correctly replaces them with a 0.2 sec of silence. But my attempts to use: WaveTrack::cut or track->GetEnvelope()->CollapseRegion were less than successful. The mono track retains some of the "right hand side" that should be removed. (e.g. a track has 5 seconds of silence, 3 sec of continuous speech, 5 sec of silence, 8 sec of speech, 2 sec of silence = 23 seconds overall. The three long silent gaps are each replaced by 0.2 sec of silence. The speech is retained and "pulled to the left" correctly. But instead of the overall track being 0.2 + 3.0 + 0.2 + 8.0 + 0.2 = 11.6 seconds, it is about 15 seconds long. It is shortened in overall duration, but not sufficiently. There is still unaltered speech on the "right hand side" of the remaining track.) ************** At this point, I would appreciate assistance from someone with LOTS more audacity experience than myself regarding sequences and blocks. TIA! Let me know if you have questions, and my apologies for residual deficiencies in the code. I probably should have stared at it longer, and scratched my head until I got it working, but the code seems to be in a state where someone who knows what he/she is doing can get it working a LOT faster than I can, and in such a way to be more consistent with the rest of Audacity. </alert> |