Podstawowy tutorial ze strony librosa
# Beat tracking example
from __future__ import print_function
import librosa
from IPython.display import Audio
import librosa.display
import matplotlib.pyplot as plt
# 1. Get the file path to the included audio example
filename = librosa.util.example_audio_file()
# 2. Load the audio as a waveform `y`
# Store the sampling rate as `sr`
y, sr = librosa.load(filename)
# 3. Run the default beat tracker
tempo, beat_f = librosa.beat.beat_track(y=y, sr=sr)
print('Estimated tempo: {:.2f} beats per minute'.format(tempo))
# 4. Convert the frame indices of beat events into timestamps
beat_times = librosa.frames_to_time(beat_f, sr=sr)
print(beat_times[:10])
Audio(data = y, rate = sr)
Przebiegi czasowe i częstotliwościowe. Spektorgramy dla okien o różnych szerokościach
librosa.display.waveplot(y, sr)
plt.show()
librosa.display.waveplot(y[sr*10:sr*11], sr)
plt.show()
librosa.display.waveplot(y[sr*10:sr*10+500], sr)
plt.show()
import numpy as np
D = librosa.amplitude_to_db(np.abs(librosa.stft(y)), ref=np.max)
librosa.display.specshow(D, y_axis='linear')
plt.colorbar(format='%+2.0f dB')
plt.title('Linear-frequency power spectrogram')
plt.show()
librosa.display.specshow(D, y_axis='log')
plt.colorbar(format='%+2.0f dB')
plt.title('Log-frequency power spectrogram')
plt.show()
D = librosa.amplitude_to_db(np.abs(librosa.stft(y, n_fft= sr*2)), ref=np.max)
librosa.display.specshow(D, y_axis='log')
plt.colorbar(format='%+2.0f dB')
plt.show()
D = librosa.amplitude_to_db(np.abs(librosa.stft(y, n_fft = 128)), ref=np.max)
librosa.display.specshow(D, y_axis='log')
plt.colorbar(format='%+2.0f dB')
plt.show()
Transformata STFT jest bezstratna, chyba że ustalimy złą wartość kroku okna
z = y
z = librosa.stft(z, n_fft= sr, hop_length=sr)
z = librosa.istft(z, hop_length=sr, win_length=sr)
Audio(data=z, rate = sr)
z = y
z = librosa.stft(z, n_fft= sr, hop_length=sr*2)
z = librosa.istft(z, hop_length=sr*2, win_length=sr)
Audio(data=z, rate = sr)
Generacja stałego tonu oraz tonu zmiennego. Efekty złego doboru szybkości próbkowania.
tone = librosa.tone(440, duration=2.5)
Audio(data=tone, rate = 22050)
chirp_bad = librosa.chirp(20, 40000, duration = 8)
Audio(data=chirp_bad, rate = 22050)
chirp = librosa.chirp(20, 40000, duration = 8, sr = 80000)
Audio(data=chirp, rate = 80000)
D = librosa.amplitude_to_db(np.abs(librosa.stft(chirp_bad)), ref=np.max)
librosa.display.specshow(D, y_axis='log', sr= 22050)
plt.colorbar(format='%+2.0f dB')
plt.show()
D = librosa.amplitude_to_db(np.abs(librosa.stft(chirp)), ref=np.max)
librosa.display.specshow(D, y_axis='log', sr= 80000)
plt.colorbar(format='%+2.0f dB')
plt.show()
D = librosa.amplitude_to_db(np.abs(librosa.stft(tone)), ref=np.max)
librosa.display.specshow(D, y_axis='log')
plt.colorbar(format='%+2.0f dB')
plt.show()
D = librosa.amplitude_to_db(np.abs(librosa.stft(chirp)), ref=np.max)
librosa.display.specshow(D, y_axis='log', sr= 80000)
plt.colorbar(format='%+2.0f dB')
plt.show()
D = librosa.amplitude_to_db(np.abs(librosa.stft(chirp, n_fft= 40000)), ref=np.max)
librosa.display.specshow(D, y_axis='log', sr= 80000)
plt.colorbar(format='%+2.0f dB')
plt.show()
D = librosa.amplitude_to_db(np.abs(librosa.stft(chirp, n_fft=128)), ref=np.max)
librosa.display.specshow(D, y_axis='log', sr= 80000)
plt.colorbar(format='%+2.0f dB')
plt.show()
Różne metody przyspieszania i spowalniania sygnałów dźwiękowych
Audio(data = y, rate = sr/3)
D = librosa.stft(y)
D = librosa.phase_vocoder(D, 0.33)
y_fast = librosa.istft(D)
Audio(data = y_fast, rate = sr)