Effects, Recipes, Interfacing with other software, etc.
-
steve
- Site Admin
- Posts: 80677
- Joined: Sat Dec 01, 2007 11:43 am
- Operating System: Linux *buntu
Post
by steve » Tue Jan 12, 2010 9:47 pm
westwind wrote:Wow that works! I just tried it on a 55 minute track and it handled that fine.
Wow that's a lot better than expected
westwind wrote:Would I be able to incorporate it into a chain??
Unfortunately no. Currently chains only support effects that are hard coded into Audacity.
Improving Chains is another commonly requested feature.
westwind wrote:My application is probably a bit obscure,
"a
bit" !!!
westwind wrote:but I think this effect would be a very useful addition to Audacity for use in transcribing audio; I've often done that in the past and usually end up contstantly backtracking to get it right. I've also used change speed for that as well but to be able to lengthen silences would likely be a much better way to do it.
Hmm, you could have a point there.
The plug-in is open source, so if anyone wants to polish it up they are most welcome to do so. I may have another go at it myself at some point, but I've got a few other things on the go at the moment.
-
westwind
- Posts: 27
- Joined: Tue Jun 23, 2009 7:58 pm
- Operating System: Linux *buntu
Post
by westwind » Wed Jan 13, 2010 10:43 am
I'm indebted to you Steve - for this, and of course to the whole Audacity team. I use Audacity a lot and its great, and the way it keeps improving so quickly is great too - oh and the quick responses here are great as well of course. At the rate you are going, I expect you'll be getting offers from Adobe before long.
-
steve
- Site Admin
- Posts: 80677
- Joined: Sat Dec 01, 2007 11:43 am
- Operating System: Linux *buntu
Post
by steve » Wed Jan 13, 2010 10:56 am
Your welcome.
-
trickyt57
- Posts: 4
- Joined: Sat Mar 05, 2011 1:57 pm
- Operating System: Please select
Post
by trickyt57 » Sat Mar 05, 2011 3:17 pm
Dear Steve, I really do need to get this code to lengthen silences. However I just can't figure out how to put the plug-in into my my Audacity's plug in folder on a MAC. As far as I can see, the Audacity program resides on the mac in some kind of virtual volume, and it seems to be locked. There is no way I can find to add or change any files in my audacity virtual disk, or in the "plug-ins" folder on it. Please can you tell me how to install it on a MAC. Thanks
I need to automatically insert silences because I have long Language Audio files for learning Chinese. It is very difficult to repeat the phrases, but there is only a gap of a few seconds between each phrase for me to repeat it. I want to extend those silent gaps to around 10 or 15 seconds each.
Thanks TrickyT
-
billw58
- Forum Staff
- Posts: 5565
- Joined: Wed Aug 12, 2009 2:10 am
- Operating System: macOS 10.15 Catalina or later
Post
by billw58 » Sat Mar 05, 2011 4:15 pm
trickyt57:
It sounds like you are trying to run Audacity from the disk image. Don't do that. Not only with Audacity, but any program. Create a folder inside your Applications folder. Call it anything, but "Audacity 1.3" is a good name. Now copy the entire contents of the .dmg (the "virtual disk") into that folder. Eject the disk image. Run Audacity from the folder in your Applications folder.
-- Bill
-
trickyt57
- Posts: 4
- Joined: Sat Mar 05, 2011 1:57 pm
- Operating System: Please select
Post
by trickyt57 » Sat Mar 05, 2011 9:46 pm
Bill many thanks for the advice. I did as you suggested and lengthening the silences in audacity files works fine on my Mac. I just took a 35 minute language repetition tape and expanded it to over 2 hours by automatically inserting 20 second pauses between phrases and then duplicating it and time shifting so now everything gets said twice and with much longer pauses. Just one point to note. It could not do the whole file in one go without crashing. I had to highlight 4 minute stretches at a time and lengthen the silence for that section only. Still its much faster than expanding it phrase by phrase. Steve, thanks again for a great useful program or add-in.
-
steve
- Site Admin
- Posts: 80677
- Joined: Sat Dec 01, 2007 11:43 am
- Operating System: Linux *buntu
Post
by steve » Sun Mar 06, 2011 2:53 am
trickyt57 wrote: Just one point to note. It could not do the whole file in one go without crashing. I had to highlight 4 minute stretches at a time and lengthen the silence for that section only.
Sorry about that, but as it says earlier in this topic it's just a bit of an ugly hack, but glad you've found it useful.
-
silencesound
- Posts: 20
- Joined: Thu Nov 29, 2012 5:48 pm
- Operating System: Please select
Post
by silencesound » Thu Nov 29, 2012 6:25 pm
Is there any further developed version of silencelength.ny?
Is there another similar plug-in?
Truncate Silence would do it, but unfortunately it end at 1:1, so I can't do an decompression.
Any other tips?
-
silencesound
- Posts: 20
- Joined: Thu Nov 29, 2012 5:48 pm
- Operating System: Please select
Post
by silencesound » Fri Nov 30, 2012 11:30 am
Here is a stereo expansion of SilenceLength.ny
My anyone have a look or try it , whether there are any bugs?
Code: Select all
;nyquist plug-in
;version 1
;type process
;categories "http://lv2plug.in/ns/lv2core#AnalyserPlugin"
;name "Silence Lengthen 2"
;action "Inserting silence..."
;info "Based on Silence Finder by Alex S. BrownnReleased under terms of the GNU General Public License version 2nHacked by Steve Daulton as a 'proof of concept'.nn"
;control sil-lev "Treat audio below this level as silence [ -dB]" real "" 26 0 100
;control sil-dur "Minimum duration of silence [seconds]" real "" 1.0 0.1 5.0
;control slen "Length of Silence to Insert" real "[seconds]" 1 0.1 30
(setq labelbeforedur (/ sil-dur 2.0))
;Create a function to make the sum the two channels if they are stereo
(defun mono-s (s-in) (if (arrayp s-in) (snd-add (aref s-in 0) (aref s-in 1))
s-in))
;Create a function to reduce the sample rate and prepare the signal for
;analysis. RMS is good to monitor volume the way humans hear it, but is not
;available in Audacity. Used a peak-calculating function instead.
;NOTE: this is the place to add any processing to improve the quality of the
;signal. Noise filters could improve the quality of matches for noisy signals.
;PERFORMANCE vs. ACCURACY
;Reducing the samples per second should improve the performance and decrease
;the accuracy of the labels. Increasing the samples per second will do the
;opposite. The more samples checked, the longer it takes. The more samples
;checked, the more precisely the program can place the silence labels.
;my-srate-ratio determines the number of samples in my-s. Set the number after (snd-srate s)
;higher to increase the number of samples.
(defun my-s (s-in)
(setq my-srate-ratio (truncate (/ (snd-srate (mono-s s-in)) 100)))
(snd-avg (mono-s s-in) my-srate-ratio my-srate-ratio OP-PEAK)
)
(defun space (s-in time)
(stretch-abs 1.0
(sim
(at 0 (s-rest time))
(at time (seq (cue s-in)(cue (s-rest time)))))))
;Set the silence threshold level (convert it to a linear form)
(setq thres (db-to-linear (* -1 sil-lev)))
;Store the sample rate of the sound
(setq s1-srate (snd-srate (my-s s)))
;Initialize the variable that will hold the length of the sound.
;Do not calculate it now with snd-length, because it would waste memory.
;We will calculate it later.
(setq s1-length 0)
;Initialize the silence counter and the labels variable
(setq sil-c 0)
(setq l NIL)
;Convert the silence duration in seconds to a length in samples
(setq sil-length (* sil-dur s1-srate))
;Define a function to add new items to the list of labels
(defun add-label (l-time l-text)
(setq l (cons (list l-time l-text) l))
)
;The main working part of the program, it counts
;the number of sequential samples with volume under
;the threshold. It adds to a list of markers ever time
;there is a longer period of silence than the silence
;duration amount.
;It runs through a loop, adding to the list of markers (l)
;each time it finds silence.
(let (s1) ;Define s1 as a local variable to allow efficient memory use
; Get the sample into s1, then free s to save memory
(setq s1 (my-s s))
;Capture the result of this "do" loop, because we need the sountd's legnth
;in samples.
(setq s1-length
;Keep repeating, incrementing the counter and getting another sample
;each time through the loop.
(do ((n 1 (+ n 1)) (v (snd-fetch s1) (setq v (snd-fetch s1))))
;Exit when we run out of samples (v is nil) and return the number of
;samples processed (n)
((not v) n)
;Start the execution part of the do loop
;if found silence, increment the silence counter
(if (< v thres) (setq sil-c (+ sil-c 1)))
;If this sample is NOT silent and the previous samples were silent
;then mark the passage.
(if (and (> v thres) (> sil-c sil-length))
;Mark the user-set number of seconds BEFORE this point to avoid clipping the start
;of the material.
(add-label (- (/ n s1-srate) labelbeforedur) "S")
)
;If this sample is NOT silent, then reset the silence counter
(if (> v thres)
(setq sil-c 0)
)
)
)
)
;Check for a long period of silence at the end
;of the sample. If so, then mark it.
(if (> sil-c sil-length)
;If found, add a label
;Label time is the time the silence began plus the silence duration target
;amount. We calculate the time the silence began as the end-time minus the
;final value of the silence counter
(add-label (+ (/ (- s1-length sil-c) s1-srate) sil-dur) "S")
)
;If no silence markers were found, return a message
(if (null l)
(setq l "No silences found. Try reducing the silencenlevel and minimum silence duration")
)
(setf insert (list (get-duration 1)))
(dotimes (times (length L))
(setf insert (push (car (nth times L)) insert)))
(setq insert (push 0.0 insert))
(setq slist (list (multichan-expand #'extract-abs (nth 0 insert)(nth 1 insert) s)(multichan-expand #'extract-abs (nth 1 insert)(nth 2 insert) s)))
(setf slist ())
(setq seg (1- (length insert))) ; number of segments
(dotimes (var seg)
(setf slist (push (multichan-expand #'extract-abs (nth (- seg (1+ var)) insert)(nth (- seg var) insert) s) slist)))
(seqrep (var seg)
(seq
;(cue (nth var slist))
;(cue (stretch-abs 1.0 (s-rest slen)))
(multichan-expand #'space (cue (nth var slist)) slen)
))