Refreshed episodes/hosts/comments/series from hpr.sql, and added official HPR transcripts for the 180 episodes aired since the last sync (hpr4516-hpr4695).
584 lines
39 KiB
Plaintext
584 lines
39 KiB
Plaintext
Episode: 4658
|
|
Title: Audio Revisited
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4658/hpr4658.mp3
|
|
Transcribed: 2026-07-31 16:16:07 (official HPR transcript)
|
|
|
|
---
|
|
|
|
This is Hacker Public Radio Episode 4658, for 2026-06-10
|
|
Today's show is entitled, "Audio Revisited"
|
|
The host is Whiskeyjack and the duration is 00:50:23
|
|
The flag is Clean, and the license is CC-BY-SA
|
|
The summary is "This is a follow up to the series on Simple Podcasting showing the results of filtering experiments"
|
|
This is a follow-up to my four-part series on simple podcasting.
|
|
In this episode, I will discuss a number of experiments with audio filtering.
|
|
These experiments were inspired by comments by listeners and by other discussions about
|
|
audio on HPR.
|
|
I am not an audio expert, so I am doing this partly in order to learn something, but mainly
|
|
in order to have a bit of fun.
|
|
I hope that you find this entertaining as well.
|
|
In a comment on the first episode, a listener mentioned something called solo cast
|
|
and said that the method bore resemblance to the method that I was using.
|
|
Here is this comment.
|
|
Comment by Rito.
|
|
It reminds me about solo cast, high whiskey jack, I really liked your podcast and the topic.
|
|
I cannot remember about your last, but the sound quality of this one was good in my mobile
|
|
speakers.
|
|
The concept reminded me about the program from Norris T, another host on HPR, while similar
|
|
does it have some differences in HPR 3496, and then it gives the URL to the episode.
|
|
As I am not on the future feed, I look forward to your next episode.
|
|
Here is Rito.
|
|
End of comment.
|
|
I did not recall having heard the episode on solo cast, but this sounded very interesting.
|
|
Solo cast was an HPR episode 3496 and was released by Norris T on the 20th of December 2021.
|
|
I listened to that episode and it does indeed use the same basic concept of recording
|
|
short segments of audio and combining them later instead of creating one big recording and
|
|
editing it with an audio editor.
|
|
The main difference is that the workflow that I described involves a lot of manual steps,
|
|
while solo cast is a short Python program that automates the entire process of presenting
|
|
your script, recording the segments, combining the segments, and filtering and normalizing
|
|
the result.
|
|
I won't try to describe solo cast in detail instead I would recommend just listening
|
|
to the HPR episode 3496 to get Norris T's explanation directly.
|
|
Well, I wanted to make sure that a credited Norris T with having come up with this concept
|
|
four years before I did, this won't be the focus of this episode.
|
|
Instead, I will talk about audio filtering and various experiments that are ran on different
|
|
methods.
|
|
While looking at the source code for solo cast, I noticed that it used a filtering method
|
|
that resembled one used by JiveTalk, a podcast production program that caught the attention
|
|
of one of the HPR community news presenters.
|
|
This method involves taking a sample of quiet audio where there is no speaking taking place
|
|
and then using this as input to a noise reduction filter which is applied to the voice recording.
|
|
The filters subtracts the quiet sample from the voice audio which should theoretically
|
|
remove the ambient noise.
|
|
I decided to apply this method to a number of different audio test recordings which were recorded
|
|
under different circumstances using different hardware.
|
|
In this way, I could see if the method worked equally well under all circumstances, or
|
|
if there were some sorts of noise which it was suited to and some sorts that were not.
|
|
While I was at it, I also picked several other filter methods to see how they worked as
|
|
well.
|
|
Potentially, some methods may be better under some conditions while other methods were
|
|
better suited to others.
|
|
I won't present all of my experiments as that would be a bit dull to listen to.
|
|
Instead, I will describe each method and then present audio samples which illustrate
|
|
my conclusions.
|
|
There are two pieces of audio software involved, both of which were also used in my series
|
|
on simple podcasting.
|
|
The first is Sox, spelled SOx and which is short for sound exchange.
|
|
Sox is a command line program for audio manipulation.
|
|
Sox is free software, released under the GPL V2 or later.
|
|
The other is FFMPEG, which is also a command line program.
|
|
FFMPEG is also free software, released under the LGPL V2.1 later and GPL V2 or later.
|
|
Sox actually uses FFMPEG for certain operations.
|
|
For recording hardware, I use the following.
|
|
Maxwell Headset, the first is a cheap Maxwell Headset that has an electrical noise problem.
|
|
Unfortunately, I don't have a model number for this headset.
|
|
I described this hardware, the noise problems that I had with it and how I created filters
|
|
to deal with the noise in my series on simple podcasting.
|
|
Briefly though, this is a headset that has a built-in microphone on a boom, which allows
|
|
the microphone to be positioned close to the mouth.
|
|
It connects with a USB cable.
|
|
Born, earpiece and inline microphone.
|
|
This is a set of earplugs that go in your ears and connect it by wires and a very small
|
|
microphone built into a small bulge in the cable.
|
|
It connects using a 3.5mm jack.
|
|
The model number seems to be BUD250-BL.
|
|
X-Tryk headset.
|
|
This is a gaming headset similar to the Maxwell headset described above.
|
|
The model number is GH-510.
|
|
It uses a USB connection.
|
|
Yann May condenser microphone.
|
|
This is a microphone that comes with a small tripod stand.
|
|
The model number is SF-910.
|
|
It uses a 3.5mm audio jack.
|
|
This is not a review of the hardware.
|
|
Rather, I was trying to create audio problems so that I could test ways to fix them.
|
|
Therefore do not take the above list as a recommendation of what to buy.
|
|
However, you can see that I am not using any expensive audio hardware.
|
|
If you want to make an HPR podcast, you do not need professional level hardware.
|
|
Audio samples.
|
|
The audio samples are as follows.
|
|
Quiet.
|
|
This was recorded in a quiet environment at my desk.
|
|
This is my normal podcasting environment and represents optimal conditions.
|
|
The main reason for this method is to see how the various filter methods perform when
|
|
dealing with electrical noise from the Maxwell headset.
|
|
Small fan.
|
|
This is a small USB powered table fan approximately 10 cm in diameter.
|
|
It was located roughly 40 cm or less to the left of the microphone, although this varied
|
|
depending on the microphone.
|
|
Traffic.
|
|
This was along a busy street with traffic noise in the background.
|
|
Filter methods.
|
|
Socks.
|
|
Noise RED filter with audio profile.
|
|
This method uses the Socks.
|
|
Noise RED or N-O-I-S-E-R-E-D filter.
|
|
Here is a brief quote from the Socks documentation on this filter.
|
|
Quote.
|
|
Reduce noise in the audio signal by profiling and filtering.
|
|
This effect is moderately effective at removing consistent background noise, such as his or
|
|
hum.
|
|
To use it, first run Socks with the Noise Prof that's N-O-I-S-E-P-R-O-F effect on a section
|
|
of audio that ideally would contain silence, but in fact contains noise.
|
|
Such sections are typically found at the beginning or end of a recording, end of quote.
|
|
For these tests, I recorded a separate noise profile to go with each test.
|
|
Basic manual filter.
|
|
This is a basic, high and low pass filter pair based on the work I had done in my previous
|
|
series on simple podcasting.
|
|
However, based on the tests that I have done for this episode, I decided to get a bit
|
|
more aggressive in terms of filtering.
|
|
I use a high pass filter of 120 Hz and a low pass filter of 8 kHz.
|
|
Each filter is then applied twice to increase the its effect.
|
|
I also added band reject filters to deal specifically with 50 and 60 Hz line noise.
|
|
Complex manual filter.
|
|
This uses the manually constructed filter described in my series on simple podcasting.
|
|
This uses the basic manual filter plus a series of custom band reject filters to fix specific
|
|
noise problems in the Maxwell headset.
|
|
F-F-M-P-G-A-F-F-T-D-N filter.
|
|
The documentation describes this as D-noise audio samples with F-F-T.
|
|
F-M-P-G-A-R-N-D-N filter.
|
|
The documentation describes this as reduced noise from speech using recurrent neural networks.
|
|
F-F-M-P-G-A-T-E filter.
|
|
I will pronounce this as A-G-T for convenience.
|
|
The documentation describes this as A-G-T is mainly used to reduce lower parts of a signal.
|
|
This kind of signal processing reduces disturbing noise between useful signals.
|
|
Method.
|
|
The experimental method used was to take each noise sample and apply different filter methods
|
|
to it.
|
|
For there are parameters which can be adjusted, a script was used to generate a series
|
|
of different sample files with different parameter values.
|
|
Not all possible parameters were experimented with as the goal is to see which method
|
|
produces what sorts of results under different circumstances not to get the best possible
|
|
result for the samples that I happen to have.
|
|
The method in each case was as follows.
|
|
Step 1.
|
|
Convert the audio file to FLAC if it is not already in that format.
|
|
Step 2.
|
|
Apply basic HI and low-pass filter described previously to each sample.
|
|
The reason for this basic filtering is that it eliminates at least some undesired noise
|
|
in a fairly full-proof manner, leaving less for the more advanced filter to deal with.
|
|
This should allow for a better test of the filtering under realistic conditions.
|
|
Step 3.
|
|
Apply the noise reduction filter being tested.
|
|
Step 4.
|
|
Normalize the filtered sample to 17 LUFS according to the EBU R128 standard.
|
|
The EBU standard is described in my series on simple podcasting.
|
|
Normalizing adjust the audio signal to the desired loudness cell level.
|
|
This allows for more consistent sound levels and allows us to hear the results under realistic
|
|
conditions.
|
|
I normalize the audio individually for each sample as different recording hardware requires
|
|
different amounts of loudness adjustment.
|
|
This is different from the typical podcast process where normalizing takes place at the
|
|
very last step in the process, but it was necessary in this case.
|
|
Step 5.
|
|
Concatenate selected sample audio files to one another to allow for better review and comparing.
|
|
Results.
|
|
The results are grouped according to the type of noise which is being mitigated.
|
|
This allows for easier comparison of the effectiveness of each technique under different
|
|
circumstances.
|
|
I've only picked a few examples of interest out of the numerous experiments that I conducted.
|
|
Quite recording environment with Maxwell headset.
|
|
This compares how well various filtering methods work on the noise induced by the electronics
|
|
in the Maxwell headset.
|
|
This electronic noise consisted of noise spikes every one killer hurts.
|
|
This should be representative of electronic noise caused by problems in recording hardware.
|
|
Manual filter.
|
|
The manual filter, applied in narrow, band-reject filter, every one killer hurts from one
|
|
killer hurts to 12 killer hurts.
|
|
Just completely remove the otherwise audible wine caused by the noise.
|
|
FFMPEG, AFFK, DN.
|
|
This method allows for setting a noise floor and specifying how much the noise floor should
|
|
be reduced by.
|
|
The method is very sensitive to getting the noise floor correct for that recording.
|
|
Set the floor to low and nothing happens.
|
|
Set it to high in some distortion results.
|
|
However, it seems to be moderately effective, but it would seem to require checking it
|
|
and possibly adjusting it each time it is used.
|
|
FFMPEG, AFFMPEG, A8.
|
|
That's AG, ATE.
|
|
This method allows setting a noise floor and suppressing all sound which falls below that
|
|
level.
|
|
This method is very sensitive to getting the noise floor correct for that recording.
|
|
If set to low or quiet, it is ineffective.
|
|
If set to high or loud, it distorts words which come after a pause, which would typically
|
|
be between sentences.
|
|
When set correctly, it completely removes noise in the silences between sentences.
|
|
However, the noise is still audible during speech.
|
|
This is because the noise in this case is a higher frequency than the normal speech and
|
|
so stands out more.
|
|
It may not be a significant problem for the noise which is closer to the main vocal frequency
|
|
band.
|
|
Overall, this method is not suitable for this particular problem.
|
|
FFMPEG, ARNN, DN.
|
|
This method uses a standard model.
|
|
A variety of different noise reduction models are available.
|
|
I tested it with only one, STDN, dot R, and NN.
|
|
It does not seem to induce much distortion in the voice signal, even with a high amount
|
|
of mixed parameter.
|
|
However, it is only slightly effective at removing the line from the signal, even with
|
|
a high amount of mixed parameter.
|
|
Overall, this method does not appear to be useful for this sort of noise problem.
|
|
Socks, noise, ARND filter.
|
|
This was effective in removing noise between words, but noise can be heard while words
|
|
are being spoken.
|
|
It was better than a gate, however.
|
|
Overall conclusion for the Maxwell headset noise.
|
|
When dealing with narrow noise bands that occur at known frequencies, the manual filter
|
|
is leagues ahead of any of the other tested alternatives.
|
|
Sample Audio.
|
|
Here is a sample audio recording showing the best overall results.
|
|
The sample is repeated, first with only basic low and high-pass filtering, and then
|
|
with the manually constructed filter.
|
|
In the first sample, you should hear a high-pitched background wine, and the second sample,
|
|
the high-pitched wine is completely removed.
|
|
This is a test, 1, 2, 3, 4, 5.
|
|
This is a test, 1, 2, 3, 4, 5.
|
|
Traffic noise.
|
|
This was recorded using the born in line microphone connected to a mobile phone while walking
|
|
along beside a busy street.
|
|
This was in dry, cool, spring weather, and the road was paved with asphalt.
|
|
This should be reasonably representative of podcasting while walking outdoors in an noisy environment.
|
|
Basic manual filter.
|
|
This used the basic manual filter with high and low-pass filters.
|
|
This did nothing very useful in this case, as the signal was already filtered within
|
|
those limits by the recording hardware anyway.
|
|
The low sample rate of 8 kHz in the phone limited the upper frequency to 4 kHz.
|
|
The sample rate has to be twice the highest frequency that you want to detect.
|
|
Overall, this is not suitable for this sort of problem.
|
|
FFMPEG AFFT-DN.
|
|
With a high noise floor, background noise is reduced, but not eliminated.
|
|
There was not much distortion in the voice.
|
|
This is only slightly useful for this sort of problem.
|
|
FFMPEG A8.
|
|
With the high threshold, background noise is reduced, but not eliminated.
|
|
There was some distortion in the voice.
|
|
The background noise could be heard also heard when speaking, but because the frequency
|
|
of the background signal was similar to the louder voice signal, it was not as noticeable
|
|
as it would have been if the two were very different.
|
|
This is moderately useful for this sort of problem.
|
|
It may be more useful in situation where the background noise was not quite as loud.
|
|
FFMPEG A8-R-N-N-DN.
|
|
With high amounts of noise reduction, much of the background noise is suppressed,
|
|
but there is not a lot of distortion in the voice.
|
|
The background traffic noise is still present, but is significantly less.
|
|
This offers only a moderate improvement.
|
|
Socks noise are ED filter.
|
|
With small amounts of noise reduction, voice is clear, but traffic noise is present
|
|
as a very significant continuous warbling sound at the background.
|
|
This is no improvement on the original, and in fact, could be seen as making it worse.
|
|
With moderate amounts of noise reduction, traffic noise is mostly gone, but there
|
|
are still various squeaks present.
|
|
Voice is noticeably distorted.
|
|
With large amounts of noise reduction, traffic noise is gone, but voice is highly distorted.
|
|
This is moderately useful for this sort of problem, but requires careful adjustment.
|
|
FFMPEG A-R-N-N-DN followed by FFMPEG A8.
|
|
This combined two different filters.
|
|
First, it used AR-N-N-DN to suppress the background noise to a lower level without much
|
|
voice distortion.
|
|
Then it applied the A8 filter to suppress the noise levels between words still further.
|
|
This used the same amount of mix and threshold as was found to be most effective when
|
|
each of these filters was used on its own.
|
|
The background noise is almost completely gone, while distortion of the voice signal is
|
|
low.
|
|
Overall, conclusion for traffic noise.
|
|
The AR-N-N-DN filter combined with the A8 filter was the most successful at suppressing
|
|
background noise while limiting the amount of voice signal distortion.
|
|
Sample audio.
|
|
Here is an audio sample for what I felt to be the best overall results.
|
|
The AR-N-N-DN filter combined with the A8 filter.
|
|
First is the original audio with basic filtering.
|
|
This is followed by the same audio after being passed through the AR-N-N-DN and A8 filters.
|
|
This is a test.
|
|
This is a test.
|
|
One, two, three, four, five.
|
|
Another sample.
|
|
Here is a second audio sample showing the SOX noise AR-N-D profile-based filter.
|
|
I have included this to show how a profile-based filter can make things worse if you are
|
|
not careful how you use it.
|
|
This repeats the test audio for times.
|
|
The first is with basic filtering only.
|
|
The second uses low amounts of noise reduction.
|
|
The third uses moderate amounts of noise reduction.
|
|
The fourth uses high amounts of noise reduction.
|
|
The test is the test, one, two, three, four, five.
|
|
This is a test, this is a test, one, two, three, four, five.
|
|
This is a test, this is a test, one, two, three, four, five.
|
|
Spall fan noise with the anime microphone.
|
|
This was recorded using the anime condenser microphone.
|
|
The small fan was set up behind into the left of the microphone.
|
|
This is intended to represent situations where someone may have a fan or air conditioner running
|
|
in the background due to hot weather or has allowed computer fan.
|
|
A condenser microphone was used for this test as they are more prone to picking up unwanted
|
|
noise.
|
|
However, for practical recording purposes, this sort of microphone is unsuitable for this type
|
|
of environment.
|
|
This is a basic manual filter.
|
|
This uses the basic manual filter with high and low pass filters.
|
|
This did nothing useful as the fan noise was in the same frequency range as the voice signal.
|
|
This may be of more help in cases where the noise is below the 120 Hertz cut off used
|
|
in the low pass filter.
|
|
With high amounts of noise reduction, much of the background noise is suppressed, but
|
|
there is some distortion in the voice.
|
|
The background fan noise is still present, but is significantly less.
|
|
Overall, this is moderately effective.
|
|
FFMPEG A gate.
|
|
This was effective in removing noise between words, but noise can be heard while words are
|
|
being spoken.
|
|
However, this was a small voice sample and it is possible that more problems could occur.
|
|
With less fan noise than was in this sample, this technique may work much better.
|
|
FFMPEG A are NNDN.
|
|
With high amounts of noise reduction, much of the background noise is suppressed, but there
|
|
is not a lot of distortion in the voice.
|
|
The background fan noise is still present, but is significantly less.
|
|
Overall, this was fairly effective.
|
|
Socks noise are ED filter.
|
|
With small amounts of noise reduction, voice is clear, but fan noise is present as a slight
|
|
orbling sound in the background.
|
|
With moderate amounts of noise reduction, fan noise is gone, but voice is somewhat distorted.
|
|
With large amounts of noise reduction, fan noise is gone, but voice is very distorted.
|
|
In general, this method is fairly successful at dealing with this sort of problem.
|
|
However, there is a trade-off between background noise and voice quality.
|
|
Getting that trade-off correct takes experiment and judgment for each specific situation.
|
|
FFMPEG A are NNDN followed by FFMPEG A gate.
|
|
Discombined two different filters.
|
|
First it used AR and NDN to suppress the background noise to a lower level without much
|
|
voice distortion.
|
|
Then it applied the A gate filter to suppress the noise levels between words still further.
|
|
This got rid of virtually all of the background noise between words.
|
|
If you listen carefully however, there is a slight buzzing sound in the voice signal.
|
|
For all conclusion, for fan noise, with the NMA microphone.
|
|
Of the methods used, the AR and NDN followed by A gate filter seemed to offer the most improvement
|
|
for the least effort and the least voice distortion.
|
|
The AR and NDN filter on its own seemed to be the next most preferable to me, despite leaving
|
|
some fan noise in the background.
|
|
Audio sample
|
|
Here is an audio sample for what I felt to be the best overall results.
|
|
The AR and NDN filter combined with the A gate filter.
|
|
First is the original audio with basic filtering.
|
|
This is followed with the same audio after being passed through the AR and NDN at A gate filters.
|
|
This is a test 1, 2, 3, 4, 5.
|
|
This is a test 1, 2, 3, 4, 5.
|
|
Small fan noise recorded with headset.
|
|
The following is an observation, rather than a filtering technique.
|
|
When a recording was made using the Maxwell headset and listened to on the headset later,
|
|
or with speakers, the fan was virtually inaudible.
|
|
When the same recording was listened to with the extra headset, it was barely audible with
|
|
careful listening and only detectable as a fan because I knew it was there.
|
|
In situations where there is ambient noise, the best noise reduction technique is probably
|
|
to move the microphone as close to your mouth as possible, although not directly in front of it,
|
|
and reduce the gain if there is a gain adjustment in the microphone.
|
|
This will work far better than trying to remove the noise later.
|
|
If you are recording an HDR episode at a desk, then an inexpensive headset with boom mic
|
|
may do the job just fine with minimal effort and expense.
|
|
Conclusions I have tested three noise scenarios, electronic noise in the audio hardware
|
|
at specific frequencies, recording outdoors with an inline microphone in a noisy traffic
|
|
environment, a noisy fan creating background noise in an office, by conclusion on these
|
|
are as follows. Electronic noise in the audio hardware at specific frequencies.
|
|
If you can use audacity or some other means to find the frequencies which are causing the noise,
|
|
the best solution, assuming you don't just replace the hardware, is to manually construct
|
|
filters to remove those specific frequencies. This is a safest solution in terms of only doing
|
|
what you tell it to and not producing unexpected surprises sometime down the road when something
|
|
changed in the environment. If you are looking for a fairly automatic filtering method,
|
|
these socks noise RED profile-based filter seems to work fairly well.
|
|
There is the equivalent filter in FFMPEG, but I did not include that in my experiments,
|
|
as it is harder to use in a script because it does not use a separate noise profile file.
|
|
Recording outdoors with an inline microphone in a noisy traffic environment.
|
|
In this situation, the FFMPEG AR and NDN combined with A8 filters seem to be the most successful.
|
|
The socks noise RED filter may work, but at the cost of more distortion in the voice
|
|
that is seen in the other methods. An inherent problem with any profile-based noise reduction method
|
|
is that if the background noise is not constant, which it seldom is in that sort of environment,
|
|
the profile may not represent the background noise which is present later on in the recording.
|
|
This risks adding more distortion in the voice as the profile and later environments diverge.
|
|
However, for this application, a different microphone that provided a better recording
|
|
would appear to be advisable. A solution which brought the microphone much closer to the
|
|
and so resulted in a better ratio of voice signal compared to background noise
|
|
would appear to be necessary after which the question of what sort of noise reduction to use
|
|
would then need to be re-evaluated. A noisy fan creating background noise in an office.
|
|
The socks noise RED filter and the FFMPEG AR and NDN, AFFT DN, and A8 methods all work to some degree.
|
|
However, they all need correct selection of parameters to achieve the proper results.
|
|
When I compared all four methods side by side, I found the AR and NDN combined with the A8
|
|
filter to be preferable in terms of the trade-off between background noise and distortion of the voice signal.
|
|
The AR and NDN filter on its own seemed the next post-prefable to me despite leaving some
|
|
fan noise in the background. However, that is a subjective judgment of a specific noise sample
|
|
when recorded using a specific microphone. Keep in mind though that many listeners will not
|
|
be listening in an ideal environment. They may be doing things where background noise is present
|
|
rather than in a very quiet room and so may find a small amount of background noise in the
|
|
recording to be less of a problem than distortion in the voice signal which may make some word
|
|
harder to understand. When I conducted the same experiment recorded with the X-TryCAD set,
|
|
I found that AR and NDN seemed to offer no noticeable improvement. This may be because the amount
|
|
of audible fan noise was far less with the X-TryCAD set to begin with. In other words,
|
|
there is no single best solution here and you may have to be prepared to try different
|
|
options to see which one works best in your situation. The important thing is to
|
|
avoid making things worse by applying filtering that is not appropriate for that situation.
|
|
The best method may be to use a recording method that doesn't pick up the fan noise to begin with.
|
|
This could include just using a gaming headset with boom mic.
|
|
I have one final observation on this point regarding headsets. The Maxwell headset has a foam
|
|
cover over the microphone, while the X-TryCAD set does not. There was some slight audible wind
|
|
buffeting noise picked up by the X-TryCAD set. There was not observed with the Maxwell.
|
|
This seemed to offer particular problems with these socks, noise, AR, ED, profile,
|
|
base filter, as this noise was irregular and after filtering would show up as a wobbling sound.
|
|
If you use a headset and plan to use it in conjunction with a fan, it may be advisable to apply
|
|
some sort of wind cover over it. Combining complex filters. In several cases, I found that combining
|
|
several complex filters offered better results than using any single one on its own.
|
|
The basic strategy though is to first use a method which is good at reducing undesirable noise
|
|
without introducing excessive voice distortion. Then apply a different filter which is good at
|
|
reducing small levels of background noise to an even lower level while affecting the voice signal
|
|
as little as possible. This uses the relative strengths of different filter types to compensate
|
|
for the weaknesses of the other. Different combinations of filters were most effective for different
|
|
types of problems. I did not try all possible combinations, however. Perhaps a further
|
|
exploration of this would be worth doing in a later podcast. K Study, noise in another HPR episode
|
|
audio. In the comments to my second episode on simple podcasting, which is HPR 4618, where I discussed
|
|
basic filtering a couple of listeners brought up an interesting point. Antoine mentions
|
|
deep clicking in a post, Vance replied. Antoine, thanks for mentioning the click removal capability
|
|
in Audacity. While I already knew about its noise removal filter, I wasn't aware that it also had
|
|
click removal. It might have helped me for HPR 4637, where some sort of electromagnetic signal was
|
|
picked up by my microphone and recorder, a Zoom H2. The tapping sound was not present in the room
|
|
where I recorded. While click removal does seem to distort speech when applied to it,
|
|
though to my ears it doesn't sound as weird as when noise removal is done with speech. I could
|
|
have applied the filter only to the pauses, where the tapping sound is most noticeable. I will
|
|
consider doing this in the event that I'm not able to eliminate the source of interference in
|
|
the future, which would be the best way to go. And of quote, I found this interesting as it sounded
|
|
like another audio problem that could be experimented with. I found a sample of the episode which
|
|
had the clicks and cut a copy of that segment out to experiment with. These sounds are like a series
|
|
of clicks or ticks, which would be another way to describe them in the quiet part of the audio
|
|
between sentences or phrases. Next, I use audacity to study the sound spectrum. I found a massive
|
|
60 hertz noise spike. However, my speakers won't reproduce sound that low, and filtering this out
|
|
didn't reduce the clicks. The clicks turn out to be bursts of noise across the 100 to
|
|
800 hertz band, which is right where the main vocal band also is. This makes it difficult to filter
|
|
based on frequency. The most promising approach would seem to be to filter based on sound level.
|
|
I tried all of the individual audio filter techniques mentioned in the other experiments above.
|
|
None produced satisfactory results except for a gate, which makes quiet audio quieter.
|
|
This completely suppressed the clicks. However, when applied to the entire episode,
|
|
it also distorted the start of a few sentences which began with single short syllables.
|
|
The A gate filter has a number of parameters which could be adjusted to try to deal with these
|
|
cases, although I did not spend the time to do so. Another solution to this distortion problem
|
|
is to simply not apply the filter to those parts of the audio, which are affected.
|
|
If we record the audio as a series of small individual files, it would be relatively easy to
|
|
filter before concatenating the files together, while skipping those files which contained audio,
|
|
which is not suited to this method. Here are the results of the experiments.
|
|
FFMPEG, AFFT, DN. This reduces the size of the ticks, but they are still present. However,
|
|
they may be reduced to a level, which is considered acceptable. FFMPEG, A gate. This was very effective
|
|
in removing clicks with the right parameters. However, it can introduce some voice distortion
|
|
in the form of cutting out the start of a few sentences which began with single short syllables.
|
|
This can be corrected with a very short attack parameter to turn off the filter when a detects
|
|
sound above a set threshold. FFMPEG, AR and DN. This was relatively ineffective.
|
|
Socks, noise, AR, ED. This was effective in removing the sounds between phrases. However,
|
|
it introduces some distortion in the voice signal. I also tried combining filters.
|
|
FFMPEG, AFFT, DN, followed by A gate. This combined two different filters.
|
|
First, used AFFT DN to suppress the background noise to a lower level without much voice distortion.
|
|
Then it applied the A gate filter to suppress the noise levels between words still further.
|
|
This got rid of virtually all of the background noise between words.
|
|
Here is a short audio sample from HPR 4637. First is the unfiltered audio.
|
|
Second is the filtered audio using the combined AFFT DN plus A gate filters.
|
|
Since the clicks are very quiet, you may not hear them unless you are in a quiet environment.
|
|
Quite a few listeners would probably not be aware of the perceived audio problem in this episode
|
|
if it had not been discussed here. Nonetheless, it makes for an interesting experiment. Here it is.
|
|
But many desktops are not. If nothing is output, but many desktops are not.
|
|
If nothing is output, overall conclusion for noise ticks. The AFFT DN combined with A gate filters
|
|
seemed to offer the best overall results when used with the right parameters.
|
|
However, the author Vance speaks very clearly and evenly and so his voice is ideally suited for
|
|
use with this filter. Another author's voice may not be as suited to this filter.
|
|
These socks noise RED profile-based filter offers various degrees of trade-off between
|
|
suppressing noise and distorting the voice signal. As to whether this is an acceptable trade-off,
|
|
depends on the particular voice in question and how easily understood it is under normal circumstances
|
|
without additional distortion. The AFFT DN filter may be a fairly safe filter to use on its own
|
|
while producing acceptable if not perfect output. Overall conclusions. I have presented only a
|
|
few of the experiments that I conducted. By overall conclusion after all of this
|
|
is that there is no universal audio filtering method that works best in all circumstances.
|
|
There are instead a number of tools in the toolbox and picking the right one for the job
|
|
takes a bit of trial and error. However, if you have a repeatable recording environment,
|
|
then once you have decided what tool you need, use your creative script for it so that you
|
|
can have a repeatable processing set up. These conclusions apply to voice pod casting.
|
|
Music has a different set of criteria and techniques that work well with basic voice pod
|
|
casting may produce poor results when applied to music, which has a broader range of frequency
|
|
and just as importantly a broad range of loudness. If you are used using filters and effects
|
|
in audacity, many of the settings on those correspond to arguments in the command line version
|
|
of FFMPEG. It is worth learning how to use FFMPEG directly to automate your recording process.
|
|
The experiments that I conducted were greatly assisted by writing scripts, which created
|
|
multiple versions of audio files with different settings, thereby allowing me to try many
|
|
different alternatives relatively easily. It also allowed me to concatenate different audio samples
|
|
into a single audio file and so listen to different versions in quick succession,
|
|
making subjective listening judgments more reliable. It is important to keep in mind in all this,
|
|
but I am playing with audio filtering, mainly to have fun. It is not necessary to do any of
|
|
this if you think your podcast episode sounds just fine without it. So don't let any of what
|
|
I have talked about in all this discourage you from simply recording a podcast and sending it in as
|
|
is. I will include copies of the filters I have described here in the show notes. Related matters.
|
|
Hardware characterization using audio signals. I found it useful to characterize the hardware
|
|
that I had in order to understand its limitations better before starting the experiments.
|
|
This is involved playing a signal out through a set of speakers and then recording it through a microphone.
|
|
I use two types of signal for this. One is a type of signal known as a chirp signal.
|
|
This is a sine wave that steadily increases in frequency as it sweeps across the audio spectrum.
|
|
The standard audio range is 20 Hz to 20 kHz, but for my purposes I limited the upper frequency
|
|
to 15 kHz to save time, as anything beyond that is not very useful for voice podcasts.
|
|
By recording the chirps signal with a microphone and analyzing it with a Fourier transform,
|
|
I could quickly see what each device was capable of.
|
|
See my previous series on simple podcasting for an explanation of what a Fourier transform is
|
|
and what software to use to see the results of it. Here is the chirps signal.
|
|
In addition to a chirps signal, I also use these series of simple tones of specific frequencies.
|
|
By using these tones of known frequency, I could gain an understanding of the limitations
|
|
of my speakers and headphones and just as importantly my own ears.
|
|
By understanding these limitations, I was able to narrow the range of frequencies that I need to
|
|
deal with quite considerably and set the high and low-pass filters accordingly.
|
|
These tones are a series of flag files generated with FFMPEG.
|
|
Here is a sample audio tone at 2 kHz frequency.
|
|
Copies of the script to create the chirps signal and the tones are in the show notes.
|
|
A not a review of some of the hardware that I used.
|
|
I said that I would not do a review of the hardware that I used.
|
|
However, some of it deserves mention for either how good or bad it was.
|
|
I will report each section using the hardware being described.
|
|
Maxwell headset. This is my original recording hardware. This is a headset with boom mic and USB
|
|
connection. There is no model number on it so I don't know the model.
|
|
This probably costs between $10 and $25. The earpiece is set on the ears and do not fully
|
|
enclose them. This makes it lightweight and comfortable to wear for extended periods of time.
|
|
It has a problem, however, with electronic noise consisting of a noise spike everyone
|
|
killer hurts. I was able to fix this with a series of filters using FFMPEG.
|
|
Fixing this problem is what got me started in understanding audio.
|
|
I will probably continue to use this headset to make podcasts.
|
|
Extra Headset. Model GH510. This is also a headset with boom mic and USB connection.
|
|
I purchased this headset for the purpose of experimentation for this podcast episode.
|
|
It cost $12.88. I've owned it to be surprisingly good for surprisingly little money.
|
|
It is fully enclosed earpiece, however, which may make it uncomfortable to wear in hot weather.
|
|
I may try doing some of my future broadcasting using this headset.
|
|
Born earpiece and in line microphone. This is a set of earplugs that go in your ears
|
|
and connected by wires and a very small microphone built into a small bolt in the cable.
|
|
It could actually be using a 3.5mm jack. The model number seems to be BUD250BL.
|
|
It costs approximately $3. I bought several sets of these and use them for listening to podcasts
|
|
when MP3 player. The earpieces are pretty good for listening with. A microphone works reasonably
|
|
well when used in a quiet location. It is less good when in a noisy environment.
|
|
It is very important, however, to secure the microphone to your lapel or other location
|
|
reasonably near your mouth and to point the microphone that is the small hole outwards
|
|
and not let it simply dangle freely. If you let it just hang, you will get poor quality
|
|
and inconsistent audio. Jan May condenser microphone model SF-910. I purchased this microphone
|
|
for the purposes of experimentation for this podcast episode. It cost $3.88.
|
|
As a condenser microphone, it is prone to picking up background noise more
|
|
and as such is probably not a good choice for podcasting by a single person sitting at a desk.
|
|
However, it is nonetheless a surprisingly good microphone for surprisingly little money.
|
|
I can't USB microphone model M306. I purchased this microphone for the purposes of experimentation
|
|
for this podcast episode. This has a USB connection. This is also relatively inexpensive at
|
|
$7.99 or roughly twice the price of the N-May microphone. Unlike the N-May, however,
|
|
it is absolutely rich. There was such a high degree of distortion when recording through it
|
|
that I found it could not use it in the fan experiment which I had bought it for.
|
|
I ended up buying the N-May microphone for that instead.
|
|
Easy effects software. The techniques described so far all involve recording audio files
|
|
and then processing them later to produce the desired result. This is probably the simplest
|
|
and most straightforward way of doing things if you are making a typical podcast.
|
|
However, there may be instances where you wish to apply filtering or other effects
|
|
on the live signal immediately and not after the fact. There is audio software which can hook
|
|
into your computer's audio system and do this with a live signal. For Linux, there is a package
|
|
called Easy Effects. This is free software and comes under a GPL V3 or later license.
|
|
I installed it from the Debian repository under Ubuntu 2404. You can create various filters
|
|
and even chain them together to combine them. I played with it a bit but do not know enough about
|
|
it to discuss it seriously at this time. However, I thought it would be worth mentioning
|
|
for the sake of those who bear wish to try it out themselves. Episode conclusion.
|
|
After having had some fun with audio and listening to other HPR members talk about audio,
|
|
I thought it would have some more fun by playing with noise reduction filters.
|
|
I have no intention of becoming an audio professional, but by doing some experiments, I learned a
|
|
few things and had some fun doing it. I hope that the rest of you found this of interest as well.
|
|
I will see you all again later in another episode of Hacker Public Radio.
|
|
You have been listening to the Hacker Public Radio podcast, at hackerpublicradio.org.
|
|
Today's show was contributed by a HPR listener like yourself.
|
|
If you ever thought of recording a podcast, then visit the HPR site to find out how easy it really is.
|
|
Hosting for HPR has been kindly provided by anhonesthost.com, the Internet Archive, rsync.net, and the HPR Community Content Delivery Network.
|
|
Unless otherwise stated, today's show is released under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.
|