.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "acoustic/acoustic_transform_tutorial.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_acoustic_acoustic_transform_tutorial.py: Acoustic Preprocssing.Transfrom Tutorial ============================================================== .. GENERATED FROM PYTHON SOURCE LINES 7-8 !pip install pysensing .. GENERATED FROM PYTHON SOURCE LINES 10-12 In this tutorial, we will be implementing a simple acoustic.preprocessing.transform .. GENERATED FROM PYTHON SOURCE LINES 12-18 .. code-block:: Python import torch import torchaudio import matplotlib.pyplot as plt import librosa import pysensing.acoustic.preprocessing.transform as transform .. GENERATED FROM PYTHON SOURCE LINES 19-22 Load the audio ----------------------------------- First, the example audio is loaded .. GENERATED FROM PYTHON SOURCE LINES 22-49 .. code-block:: Python # Define the plot function def plot_wave(waveform,sample_rate): plt.figure(figsize=(10, 5)) plt.plot(waveform.t().numpy()) plt.title('Waveform') plt.xlabel('Sample') plt.ylabel('Amplitude') plt.tight_layout() plt.show() def plot_spec(waveform,sample_rate,feature_extractor,title): specgram = torch.abs(feature_extractor(waveform)) # specgram = transform.aplitude2db()(specgram) plt.figure(figsize=(10,5)) plt.imshow(specgram[0].squeeze().numpy(), aspect='auto', origin='lower', cmap='inferno', extent=[0, waveform.size(1) / sample_rate, 0, sample_rate / 2]) plt.title(title) plt.ylim(0,5000) plt.xlabel('Time (s)') plt.ylabel('Frequency (Hz)') # Load the data # Load the data waveform, sample_rate = torchaudio.load('example_data/example_audio.wav') plot_wave(waveform,sample_rate) .. image-sg:: /acoustic/images/sphx_glr_acoustic_transform_tutorial_001.png :alt: Waveform :srcset: /acoustic/images/sphx_glr_acoustic_transform_tutorial_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 50-52 1. STFT ------------------------ .. GENERATED FROM PYTHON SOURCE LINES 52-56 .. code-block:: Python stft_trans = transform.stft(n_fft=2048,hop_length=1024) plot_spec(waveform,sample_rate,stft_trans,'STFT') .. image-sg:: /acoustic/images/sphx_glr_acoustic_transform_tutorial_002.png :alt: STFT :srcset: /acoustic/images/sphx_glr_acoustic_transform_tutorial_002.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 57-59 2. ISTFT ------------------------ .. GENERATED FROM PYTHON SOURCE LINES 59-65 .. code-block:: Python stft_result = stft_trans(waveform) ifft_trans = transform.istft(n_fft=2048,hop_length=1024,return_complex=False) ifft_result = ifft_trans(stft_result) plot_wave(ifft_result,sample_rate) .. image-sg:: /acoustic/images/sphx_glr_acoustic_transform_tutorial_003.png :alt: Waveform :srcset: /acoustic/images/sphx_glr_acoustic_transform_tutorial_003.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 66-68 3. Spectrogram ------------------------ .. GENERATED FROM PYTHON SOURCE LINES 68-72 .. code-block:: Python spectrogram_trans = transform.spectrogram(n_fft=2048,hop_length=1024,power=None) plot_spec(waveform,sample_rate,spectrogram_trans,'spectrogram') .. image-sg:: /acoustic/images/sphx_glr_acoustic_transform_tutorial_004.png :alt: spectrogram :srcset: /acoustic/images/sphx_glr_acoustic_transform_tutorial_004.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 73-75 4. Inversespectrogram ------------------------ .. GENERATED FROM PYTHON SOURCE LINES 75-81 .. code-block:: Python spectrogram_result = spectrogram_trans(waveform) ispec_trans = transform.inversespectrogram(n_fft=2048,hop_length=1024) ispec_result = ispec_trans(spectrogram_result) plot_wave(ispec_result,sample_rate) .. image-sg:: /acoustic/images/sphx_glr_acoustic_transform_tutorial_005.png :alt: Waveform :srcset: /acoustic/images/sphx_glr_acoustic_transform_tutorial_005.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 82-84 5. Melspectrogram ------------------------ .. GENERATED FROM PYTHON SOURCE LINES 84-97 .. code-block:: Python def plot_melspectrogram(specgram, title=None, ylabel="freq_bin", ax=None): if ax is None: _, ax = plt.subplots(1, 1,figsize=(10,5)) if title is not None: ax.set_title(title) ax.set_ylabel(ylabel) ax.imshow(librosa.power_to_db(specgram), origin="lower", aspect="auto", interpolation="nearest") melspectrogram_trans = transform.melspectrogram(sample_rate=sample_rate,n_fft=2048,hop_length=1024) melspec = melspectrogram_trans(waveform)[0].numpy() plot_melspectrogram(melspec,'melspectrogram') .. image-sg:: /acoustic/images/sphx_glr_acoustic_transform_tutorial_006.png :alt: melspectrogram :srcset: /acoustic/images/sphx_glr_acoustic_transform_tutorial_006.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 98-99 And that's it. We're done with our acoustic preprocessing tutorials. Thanks for reading. .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.915 seconds) .. _sphx_glr_download_acoustic_acoustic_transform_tutorial.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: acoustic_transform_tutorial.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: acoustic_transform_tutorial.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_