Click and Noise-Removal from Voice/Speech-Recording

Hello,

a friend has made some Dictaphone recordings, but as they are now, only let one guess on its content. What to do to enhance the speech quality at least to be (mostly) understandable?

I am myself a beginner with Audio-Editing, so I pass on the question to the pros! :wink:

The dictaphoner cannot record in 44.1, only in 22.05 kHz in WAVE-format. Is the frequency for
voice/speech-recordings (basically) sufficient or is this already the reason for the bad recording quality?

If possible, no new recording device should be bought, the recording needs to be only basically understandable, even if it requires much concentration.

I tested the noise-reduction/-removal (Audacity 1.3.8), it helps in some parts of the recording, but is not overall satisfactory.

Heres a link to part of the recording:

Download DW_C0054_sample.wav from FileFactory.com

Grateful for tips and tricks (of the trade). :slight_smile:

I think our first tip needs to be how to listen to that file.

Koz

Those voice recorders, (no I won’t do the Dick-to-phone joke), can suffer from clock noise.
If the recording does suffer from clock noise when you analyse the frequency content of a “silent” part of the recording you will see large spikes occurring at particular frequencies, (often equally spaced e.g. 4000Hz, 8000Hz, 12000Hz). You can use a notch filter to remove these clock noise spikes.
I’ve attached such a notch filter. Put in the frequency of the spike, and use q = 5 to 15 for a big spike and q= 50 to 200 to remove smaller spikes.
Notch filter plugin for Audacity.zip (557 Bytes)

I really want to figure out how to listen to that file. The impression I got was that the show is mostly unintelligible garbage and we need to try to make the voice buried inside a little less unintelligible.

There doesn’t seem to be any part of that web site willing to either let me listen to or download the sample.

Koz

to download the audio-file, go to the URL, click the ‘Free download’ web-form button, a second page will appear with a timer counting down for 30 seconds, then the final dynamic link ‘‘Click here to begin your download’’ will appear to download.

Forget my notch filter suggestion, this is unsalvageable, a hopeless case, (sample attached).

I have a cheap and nasty voice recorder and it sounds infinitely better,
i.e. your recording is not typical of these voice recorder thingys.

The signal to noise ratio is very poor, have you amplified this sample ?
Corvinian’s voice recorder, (After then before Cleaning).zip (450 KB)

The signal to noise ratio is very poor, have you amplified this sample ?

I think he has not (not so tech-savvy).
Should I try to amplifiy it? I thought it would weaken the signal further and noise should be removed first.
Which Effect(s) should I use to amplify it?

I am experimenting now with the noisegate.ny effect and I get the following error, although the ‘gate.ny’ is working.

Nymquist

error: bad place form
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
  LOFREQ
  20
  (COMMA 0)
1> error: bad place form
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
  HIFREQ
  20000
  (COMMA 0)
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
  LOFREQ
  20
  (COMMA 0)
2> error: bad place form
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
  LEVEL-RED
  -12
  (COMMA 0)
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
  HIFREQ
  20000
  (COMMA 0)
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
  LOFREQ
  20
  (COMMA 0)
3> error: bad place form
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
  THRESH
  -24
  (COMMA 0)
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
  LEVEL-RED
  -12
  (COMMA 0)
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
  HIFREQ
  20000
  (COMMA 0)
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
  LOFREQ
  20
  (COMMA 0)
4> error: bad place form
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
  ATTACK
  49
  (COMMA 600000)
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
  THRESH
  -24
  (COMMA 0)
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
  LEVEL-RED
  -12
  (COMMA 0)
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
  HIFREQ
  20000
  (COMMA 0)
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
  LOFREQ
  20
  (COMMA 0)
5> 0.251189
5> 0.0630957
5> 0
5> 0
5> #<Sound: #91d0c98>
5> 4> 3> 2> 1>

when I copy the text content of the noisegate.ny effect to the ‘Nymquist commandline’
and click ‘Diagnose’, the following is returned:

error: unbound variable - LEVEL-RED
if continued: try evaluating symbol again
Function: #<FSubr-SETQ: #7ed6b90>
Arguments:
  LEVEL-RED
  (DB-TO-LINEAR LEVEL-RED)
1> error: unbound variable - THRESH
if continued: try evaluating symbol again
Function: #<FSubr-SETQ: #7ed6b90>
Arguments:
  THRESH
  (DB-TO-LINEAR THRESH)
Function: #<FSubr-SETQ: #7ed6b90>
Arguments:
  LEVEL-RED
  (DB-TO-LINEAR LEVEL-RED)
2> error: unbound variable - ATTACK
if continued: try evaluating symbol again
Function: #<FSubr-SETQ: #7ed6b90>
Arguments:
  ATTACK
  (/ ATTACK 1000)
Function: #<FSubr-SETQ: #7ed6b90>
Arguments:
  THRESH
  (DB-TO-LINEAR THRESH)
Function: #<FSubr-SETQ: #7ed6b90>
Arguments:
  LEVEL-RED
  (DB-TO-LINEAR LEVEL-RED)
3> error: unbound variable - ATTACK
if continued: try evaluating symbol again
Function: #<FSubr-SETQ: #7ed6b90>
Arguments:
  LOOK
  (SUM ATTACK ATTACK)
Function: #<FSubr-SETQ: #7ed6b90>
Arguments:
  ATTACK
  (/ ATTACK 1000)
Function: #<FSubr-SETQ: #7ed6b90>
Arguments:
  THRESH
  (DB-TO-LINEAR THRESH)
Function: #<FSubr-SETQ: #7ed6b90>
Arguments:
  LEVEL-RED
  (DB-TO-LINEAR LEVEL-RED)
4> error: unbound variable - LOFREQ
if continued: try evaluating symbol again
Function: #<FSubr-OR: #7ed5c90>
Arguments:
  (>= LOFREQ (MULT *SOUND-SRATE* 0.4))
  (AND (< HIFREQ 20000) (>= HIFREQ (MULT *SOUND-SRATE* 0.4)))
Function: #<FSubr-IF: #7ed5cf0>
Arguments:
  (OR (>= LOFREQ (MULT *SOUND-SRATE* 0.4)) (AND (< HIFREQ 20000) (>= HIFREQ (MULT *SOUND-SRATE* 0.4))))
  (PRINT "ErrornSample rate too low for selected filter settings.nCheck filter settings.")
  (PROGN (DEFUN NOISEGATE (S-IN GATE-S LOOKAHEAD RISETIME FALLTIME FLOOR THRESHOLD) (MULT GATE-S (CLIP (GATE S-IN LOOKAHEAD RISETIME FALLTIME FLOOR THRESHOLD) 1))) (DEFUN STEREOGATE (S-IN GATE-S LOOKAHEAD RISETIME FALLTIME FLOOR THRESHOLD) (SETQ MONO-SOUND (MULT (SUM (AREF S-IN 0) (AREF S-IN 1)) 0.5)) (VECTOR (MULT (AREF GATE-S 0) (CLIP (GATE MONO-SOUND LOOKAHEAD RISETIME FALLTIME FLOOR THRESHOLD) 1)) (MULT (AREF GATE-S 1) (CLIP (GATE MONO-SOUND LOOKAHEAD RISETIME FALLTIME FLOOR THRESHOLD) 1)))) (DEFUN PROCESS (S-IN GATE-S) (IF (ARRAYP S-IN) (STEREOGATE S-IN GATE-S LOOK ATTACK ATTACK LEVEL-RED THRESH) (NOISEGATE S-IN GATE-S LOOK ATTACK ATTACK LEVEL-RED THRESH))) (DEFUN GATEHIGH (S-IN FREQ) (IF (ARRAYP S) (SETQ S-PASS (VECTOR (LOWPASS8 (AREF S-IN 0) FREQ) (LOWPASS8 (AREF S-IN 1) FREQ))) (SETQ S-PASS (LOWPASS8 S-IN FREQ))) (IF (ARRAYP S) (SETQ S-GATE (PROCESS S (VECTOR (HIGHPASS8 (AREF S 0) FREQ) (HIGHPASS8 (AREF S 0) FREQ)))) (SETQ S-GATE (PROCESS S (HIGHPASS8 S FREQ)))) (SIM S-PASS S-GATE)) (DEFUN GATELOW (S-IN FREQ) (IF (ARRAYP S) (SETQ S-PASS (VECTOR (HIGHPASS8 (AREF S-IN 0) FREQ) (HIGHPASS8 (AREF S-IN 1) FREQ))) (SETQ S-PASS (HIGHPASS8 S-IN FREQ))) (IF (ARRAYP S) (SETQ S-GATE (PROCESS S (VECTOR (LOWPASS8 (AREF S 0) FREQ) (LOWPASS8 (AREF S 0) FREQ)))) (SETQ S-GATE (PROCESS S (LOWPASS8 S FREQ)))) (SIM S-PASS S-GATE)) (IF (AND (<= LOFREQ 20) (>= HIFREQ 20000)) (PROCESS S S) (IF (AND (> LOFREQ 20) (>= HIFREQ 20000)) (GATEHIGH S LOFREQ) (IF (AND (< HIFREQ 20000) (<= LOFREQ 20)) (GATELOW S HIFREQ) (GATELOW (GATEHIGH S LOFREQ) HIFREQ)))))
Function: #<FSubr-SETQ: #7ed6b90>
Arguments:
  LOOK
  (SUM ATTACK ATTACK)
Function: #<FSubr-SETQ: #7ed6b90>
Arguments:
  ATTACK
  (/ ATTACK 1000)
Function: #<FSubr-SETQ: #7ed6b90>
Arguments:
  THRESH
  (DB-TO-LINEAR THRESH)
Function: #<FSubr-SETQ: #7ed6b90>
Arguments:
  LEVEL-RED
  (DB-TO-LINEAR LEVEL-RED)
5> 4> 3> 2> 1>

I use Audacity 1.3.8 on WinXP (SP3), is this plugin working for others?

I was not suggesting that you should amplify it but enquiring if you had amplified it:
amplification of a weak signal may explain the poor signal to noise ratio of your sample.
If it has not been amplified then I can only think you have a hardware fault with your voice recorder.

BTW #1 Forget using a gate on your sample it would not help one bit,
I’m trying to be constructive and prevent you wasting your time.

If you listened to my attempt to clean your sample, (attached to my post above),
that is about the best you can expect of it using Audacity or any other DAW.

BTW #2 if you need a free gate for Audacity try GGate, (a VST plugin).
You’ll need the VST enabler to use VST plugins on Audacity, (even then not all VST plugins work in Audacity, but “GGate” does).

Hi Trevor,
thanks for clarifying the amplification issue and your advice,
I will recommend a new voice recorder.

A late reply, but just spotted this when searching for something else.

The error message:

error: bad place form
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
LOFREQ
20
(COMMA 0)
1> error: bad place form
Function: #<FSubr-SETF: #7edd7b0>
Arguments:
HIFREQ
20000
(COMMA 0)
Function: #<FSubr-SETF: #7edd7b0>

is due to a recurring limitation in Audacity where commas (,) are not recognised as decimal separators, even when the system language is a European language that should accept the comma as a decimal separator. This has been fixed numerous times and has broken again an equal number of times. It is currently broken http://bugzilla.audacityteam.org/show_bug.cgi?id=173

The simple workaround is to use a dot (.) rather than a comma (,) as the decimal separator.

Plug-ins that require user input are not supported by the Nyquist Prompt effect.

The reason for this is that the Nyquist Prompt effect processes the Nyquist code only and not any of the code that is intended for Audacity. The user controls are written into the plug-in as Nyquist comments, so that they are ignored by the Nyquist Interpreter. Audacity “sees” these special comments and produces the appropriate input controls.

An example of a “control” in a Nyquist plug-in could be something like:

;control thresh "Threshold" real "dB" -20 -100 0

The semicolon at the beginning tells Nyquist to ignore the line (it’s a comment)
but Audacity will read that line and produce a “slider widget”
The text in quotes is displayed as the slider control text, so in this case it will produce a slider like this:

Threshold [ -20 ] -------[]----------- dB

and the value entered is given to a variable called “thresh”

If the code is run in the Nyquist Prompt, this code is ignored, so the variable “thresh” has no value assigned, so producing the error:

error: unbound variable - THRESH

It is possible to get round this problem by adding Nyquist code that will assign the required value.
The code to do this is quite simple:

(setq thresh -20.0)

This will create a variable called “thresh” and assign the value -20.0 to it.
This would need to be done for each of the ;control lines