# Select talk not music from podcast

I listen to a podcast with interesting talk separated with horrible music. I'd like to rewrite the podcast automatically to delete this "noise".

Edit: the talk and music is not simultaneously, it's talk for a couple of minutes, then a horrible song, then talk etc. Erring on the side of caution is OK, some seconds of the beginning and end of music is OK.

Ideas?

If this is a typical case of a podcast that sounds like a radio broadcast then you could discriminate between music and speech purely based on the "shape" of the spectrum.

I am not sure if there is special software that could handle this but I will provide a simple example using Audacity further below.

The main idea is that a mixed track coming from a variety of different instruments would be expected to occupy a wider range of the spectrum than just someone talking.

Here is a quick test using Audacity:

Just by visual inspection, a set of "noisy bands" appear in the spectrum view. These are the locations where it is either music played along with someone speaking or just music playing.

My settings for this image (Edit->Preferences->Spectrogram): Window-size 4096, window:Blackman, minFreq:0, maxFreq:8kHz, Gain:20, Range:80, freqGain:0, use grayscale.

To switch to this view, load your podcast into Audacity and then click on its track name and select "Spectrogram".

To achieve the same thing in an automatic way, you would have to create a very simple classifier. The classifier would break down the incoming signal into "chunks" and obtain their spectrum. This is roughly what Audacity does to generate each one of the vertical columns that make up the spectrogram of the sound. The classifier would then "scan" these columns from left to right deciding what each column represents ("Music", "Speech", ..., other?). The decision would be based on the relative amplitude of each harmonic in the spectrum. After this, you could decide to drop or silence those frames that have been characterised as "Music".

But all this means writing some form of code in a programming language (e.g. Python). I can expand this response with the simplest of classifiers that could work for this problem but only if that would be seen as useful (?).

Of course, this technique would work with mixed tracks whose full spectrum (including all their possible harmonics) extends well beyond the spectrum of the human voice. There might indeed be some special cases as mentioned earlier by robert bristow-johnson where the discrimination is much more difficult and more complex techniques would be required but for a generic podcast, just basing the decision on the spectrum might do just fine.

By the way, the podcast I used in this example is this one.

If you had a file of the music they are playing, you could use an adaptive filter to get rid of the the music. But as a fair warning, this will not be an easy venture.

• Music and talk is not at the same time. – Lenne Dec 30 '15 at 0:31
• I see. In that case, I guess you could come up with a way of distinguishing the frequency spectrum during speech versus during music. That would allow some sort of algorithm to identify and remove certain time intervals. – soultrane Dec 30 '15 at 0:33
• non-simultaneous talk and music is helpful. but how would one differentiate between a single person talking and a single note playing (or singing) solo? – robert bristow-johnson Jan 29 '16 at 2:07
• It is hard to answer that in general terms. I think it's possible, but you have to look at a specific case and determine what types of tools can be used in that particular situation. – soultrane Jan 29 '16 at 4:07

okay so you'll have a little problem quantifying the "horrible" in the music. it's not such an identifiable parameter is this would depict:

(source: iawti.org)

to differentiate a talking voice from any music might be possible with some really good and responsive tracking pitch detection and looking for the inflections of pitch that resemble that of a normally animated talking voice.