<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Asymptotic Labs (Posts about audio)</title><link>http://asymptoticlabs.com/</link><description></description><atom:link href="http://asymptoticlabs.com/categories/audio.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2022 &lt;a href="mailto:quidditymaster@gmail.com"&gt;Tim Anderton&lt;/a&gt; </copyright><lastBuildDate>Wed, 31 Aug 2022 21:28:38 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Audio Yo</title><link>http://asymptoticlabs.com/posts/audio-yo.html</link><dc:creator>Tim Anderton</dc:creator><description>&lt;div class="cell border-box-sizing text_cell rendered"&gt;&lt;div class="prompt input_prompt"&gt;
&lt;/div&gt;&lt;div class="inner_cell"&gt;
&lt;div class="text_cell_render border-box-sizing rendered_html"&gt;
&lt;p&gt;This is the notebook for the presentation that I will be giving at the SLC python meetup tomorrow. This slide and other slides like these containing the rough planned text of the talk are "skip" slides and should (hopefully) get removed when I compile the notebook into a slides format. (Bet you didn't know nbconvert could do that!).&lt;/p&gt;
&lt;p&gt;To make a notebook into a slide show you will also need to annotate the cells of the notebook to say whether they represent a new slide, a continuation of the previous slide (slide type indicated by a "-"), a sub-slide (optional material for a slide which can be navigated with up/down or skipped by going left right), a fragment (which is on the previous slide but appears when you next hit right), or is to be skipped all together. This information can be added by changing the cell toolbar type to slideshow ( View-&amp;gt;Cell Toolbar-&amp;gt;slideshow)&lt;/p&gt;
&lt;p&gt;you can then launch the slideshow using an nbconvert command like the following,&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;jupyter nbconvert slideshow.ipynb --to slides --post serve&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Anyway the style of this post will be slightly different than normal and you will just have to imagine me waving my hands around frantically and waiting for dramatic ... pauses.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://asymptoticlabs.com/posts/audio-yo.html"&gt;Read more…&lt;/a&gt; (8 min remaining to read)&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;
</description><category>audio</category><guid>http://asymptoticlabs.com/posts/audio-yo.html</guid><pubDate>Wed, 02 Oct 2019 02:10:57 GMT</pubDate></item><item><title>Eigen-Techno</title><link>http://asymptoticlabs.com/posts/eigen-techno.html</link><dc:creator>Tim Anderton</dc:creator><description>&lt;div class="cell border-box-sizing text_cell rendered"&gt;&lt;div class="prompt input_prompt"&gt;
&lt;/div&gt;&lt;div class="inner_cell"&gt;
&lt;div class="text_cell_render border-box-sizing rendered_html"&gt;
&lt;p&gt;I recently found an analysis of techno music using principal component analysis (PCA).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.math.uci.edu/~isik/posts/Eigentechno.html"&gt;https://www.math.uci.edu/~isik/posts/Eigentechno.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The author, Umut Isik, extracted more than 90,000 clips of one bar worth of music from 10,000 different techno music tracks and stretched the music to all have the same tempo of 128 bpm. Then Isik fed those tracks through PCA and then analyzed the resulting principal vectors and the quality of music approximation with a growing number of components. Since the principal vectors are modeling sound we can listen to them which is rather fun. I won't cover all the same material as Isik did in that post and it is worth a read so nip over and give it a look if you haven't already. Isik has very kindly bundled up the source data and made it available for others to use (theres a link at the end of the post linked above). Playing around with such a fun data set is too tempting to resist so I'm going to do my own "eigentechno" analysis here.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://asymptoticlabs.com/posts/eigen-techno.html"&gt;Read more…&lt;/a&gt; (31 min remaining to read)&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;
</description><category>audio</category><category>music</category><category>PCA</category><guid>http://asymptoticlabs.com/posts/eigen-techno.html</guid><pubDate>Mon, 26 Mar 2018 14:24:13 GMT</pubDate></item><item><title>Extracting Phonemes</title><link>http://asymptoticlabs.com/posts/extracting-phonemes.html</link><dc:creator>Tim Anderton</dc:creator><description>&lt;div tabindex="-1" id="notebook" class="border-box-sizing"&gt;
    &lt;div class="container" id="notebook-container"&gt;

&lt;div class="cell border-box-sizing text_cell rendered"&gt;&lt;div class="prompt input_prompt"&gt;
&lt;/div&gt;
&lt;div class="inner_cell"&gt;
&lt;div class="text_cell_render border-box-sizing rendered_html"&gt;
&lt;h2 id="Extracting-Phonemes-From-Speech-Samples"&gt;Extracting Phonemes From Speech Samples&lt;a class="anchor-link" href="http://asymptoticlabs.com/posts/extracting-phonemes.html#Extracting-Phonemes-From-Speech-Samples"&gt;¶&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;My best single model for the recent &lt;a href="https://www.kaggle.com/c/tensorflow-speech-recognition-challenge"&gt; speech recognition &lt;/a&gt; kaggle competition. Was a model based on the idea of extracting a probabilistic map of the phonemes present in a particular speech sample and to then using that phoneme map as a feature set to predict the word.&lt;/p&gt;
&lt;p&gt;The dataset provided consists of examples of 30 different words with one word appearing in each 1 second sample. Since there is no phonetic information provided other than which word is which the first step was to turn each word into a phonetic spelling.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://asymptoticlabs.com/posts/extracting-phonemes.html"&gt;Read more…&lt;/a&gt; (24 min remaining to read)&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;
</description><category>audio</category><category>neural networks</category><category>phonemes</category><category>speech</category><guid>http://asymptoticlabs.com/posts/extracting-phonemes.html</guid><pubDate>Wed, 24 Jan 2018 17:37:19 GMT</pubDate></item><item><title>3D CNN for audio data</title><link>http://asymptoticlabs.com/posts/audio-3DCNN.html</link><dc:creator>Tim Anderton</dc:creator><description>&lt;div class="cell border-box-sizing text_cell rendered"&gt;&lt;div class="prompt input_prompt"&gt;
&lt;/div&gt;&lt;div class="inner_cell"&gt;
&lt;div class="text_cell_render border-box-sizing rendered_html"&gt;
&lt;h2 id="3D-Time/Frequency/Phase-Representation-of-Audio-for-Speech-Recognition."&gt;3D Time/Frequency/Phase Representation of Audio for Speech Recognition.&lt;a class="anchor-link" href="http://asymptoticlabs.com/posts/audio-3DCNN.html#3D-Time/Frequency/Phase-Representation-of-Audio-for-Speech-Recognition."&gt;¶&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;I recently participated in a &lt;a href="https://www.kaggle.com/c/tensorflow-speech-recognition-challenge"&gt; speech recognition &lt;/a&gt; kaggle competition. Although I didn't come close to the top of the leaderboard (238th place with 87% accuracy vs 91% accuracy for the winners) I learned quite a bit about handling audio data and had a lot of fun. One of the more novel things I tried during the competition was to spatially encode the phase information in the audio and pass the results into a 3D CNN.&lt;/p&gt;
&lt;p&gt;A common pre-processing step in speech recognition is to turn the 1D audio into a 2D &lt;a href="https://en.wikipedia.org/wiki/Spectrogram"&gt;spectrogram&lt;/a&gt;. The spectrogram the volume of the audio as a function of time and at a particular frequency. Spectrograms are a great way of summarizing the important information in an audio clip in a way that makes it accessible visually. Here is a spectrogram of an utterance of the word "marvin".&lt;/p&gt;
&lt;p&gt;&lt;img src="http://asymptoticlabs.com/images/marvin_specgram.jpg" alt="marvin_specgram"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://asymptoticlabs.com/posts/audio-3DCNN.html"&gt;Read more…&lt;/a&gt; (22 min remaining to read)&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;
</description><category>audio</category><category>neural networks</category><category>speech recognition</category><guid>http://asymptoticlabs.com/posts/audio-3DCNN.html</guid><pubDate>Mon, 22 Jan 2018 07:00:00 GMT</pubDate></item><item><title>Wavelet Spectrograms for Speech Recognition</title><link>http://asymptoticlabs.com/posts/waveletSpectrogramsTFSR.html</link><dc:creator>Tim Anderton</dc:creator><description>&lt;div tabindex="-1" id="notebook" class="border-box-sizing"&gt;
    &lt;div class="container" id="notebook-container"&gt;

&lt;div class="cell border-box-sizing text_cell rendered"&gt;&lt;div class="prompt input_prompt"&gt;
&lt;/div&gt;
&lt;div class="inner_cell"&gt;
&lt;div class="text_cell_render border-box-sizing rendered_html"&gt;
&lt;h2 id="Wavelet-Features-For-Speech-Recognition."&gt;Wavelet Features For Speech Recognition.&lt;a class="anchor-link" href="http://asymptoticlabs.com/posts/waveletSpectrogramsTFSR.html#Wavelet-Features-For-Speech-Recognition."&gt;¶&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;I've been partipating in the TensorFlow speech recognition challenge.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.kaggle.com/c/tensorflow-speech-recognition-challenge"&gt;https://www.kaggle.com/c/tensorflow-speech-recognition-challenge&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It seems like the most common approach is to begin by turning the audio into a spectrogram and then feeding that into a 2D CNN. One trouble with spectrograms is that you have to trade off resolution in frequency for resolution in time and vice versa. In principle you can get higher resolution in time for higher frequencies than you can for lower frequencies but when you pick an input length for your short time fourier transform you lose temporal resolution much below the window length.&lt;/p&gt;
&lt;p&gt;Wavelets are one possible way around this limitation &lt;/p&gt;&lt;p&gt;&lt;a href="http://asymptoticlabs.com/posts/waveletSpectrogramsTFSR.html"&gt;Read more…&lt;/a&gt; (17 min remaining to read)&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;
</description><category>audio</category><category>kaggle</category><category>machine learning</category><category>neural networks</category><category>speech recognition</category><category>wavelets</category><guid>http://asymptoticlabs.com/posts/waveletSpectrogramsTFSR.html</guid><pubDate>Mon, 08 Jan 2018 07:00:00 GMT</pubDate></item></channel></rss>