[PYTHON] Lernen Sie Librosa mit einem Tutorial 1

Einführung

Dieser Artikel richtet sich an Personen, die librosa verwenden möchten, aber nicht wissen, wo sie anfangen sollen. Ich bin einer von ihnen (lacht)

Anhand des librosa-Tutorials können Sie hier Ihre eigene Interpretation und Ihr Verständnis der Aktivitäten im Tutorial teilen. Ich denke Während ich das ursprüngliche Tutorial auf Japanisch kommentiere, werde ich es in Form einer Ergänzung des Verhaltens erklären, indem ich den Inhalt und die Zahlen der Variablen zeige. Da ich selbst Anfänger bin, habe ich nicht viel Schwieriges geschrieben.

Dies ist der erste Artikel, also schauen Sie bitte warm. Wenn Sie Fehler haben, können Sie diese gerne darauf hinweisen!

Diesmal ist es soweit

--Laden der Sample-Soundquelle

Klicken Sie hier, um zu erfahren, wie librosa installiert wird (https://librosa.github.io/librosa/install.html)!

Dieses Mal ist ein schneller Start des librosa-Tutorials. Zuallererst fühlt es sich wie die Grundlagen an. Ich möchte mich nach und nach an Librosa gewöhnen!

Laden der Sample-Soundquelle

Lassen Sie uns zunächst den Pfad (Ort) der Sample-Soundquelle ermitteln.

#Librosa importieren
import librosa
#Holen Sie sich den Pfad der Beispiel-Ogg-Datei
filename = librosa.util.example_audio_file()
print(filename) # C:~\Python\Python36\site-packages\librosa\util\example_data\Kevin_MacLeod_-_Vibe_Ace.ogg

Hier wird die Datei Kevin_MacLeod - Vibe_Ace.ogg als Beispiel-Soundquelle geladen. Sie können jede Tonquelle laden, indem Sie diesen Dateinamen ändern. Übrigens, wie der Dateiname schon sagt, ist dieses Lied Vibe Ace von Kevin Macleod. Google Play Music gemäß dem E3% 83% BB% E3% 83% 9E% E3% 82% AF% E3% 83% AD% E3% 83% BC% E3% 83% 89 + Atmosphäre + As & Stick = H4sIAAAAAAAAAONgFuLVT9c3NEwqN7IwME_OUYJwk7PzUopMstK0RLOTrfRzS4szk_UTc5JKc62K8_PSixexqjxu2vi4efLj5s2Pm3c_bp73uGn94-a1j5v3PG7uVCjLTEpVSExO3cHKCACxHq1VYQAAAA & ved = 2ahUKEwiq_5qyl93pAhVGHaYKHQnECMkQri4wKHoECBUQUw), Song Die Länge ist so kurz wie 1:05 und das Genre scheint Jazz zu sein.

Was ist eine Ogg-Datei? Laut Wikipedia

Ogg ist ein Container, in dem ein oder mehrere Codecs als Inhalt gespeichert sind. Der typischste Code von Ogg ist der Sprachcodierer Vorbis. Das Ogg, in dem Vorbis gespeichert ist, heißt Ogg Vorbis (sowie andere Codecs). Ogg Vorbis wird manchmal einfach als Ogg bezeichnet, aber es sollte beachtet werden, dass Ogg der Name des Containers ist, nicht der Codec. (Weggelassen) Ursprünglich definierte die Xiph.Org Foundation die gemeinsame Erweiterung für Ogg als .ogg, änderte jedoch 2007 die allgemeine Erweiterung in .ogx, die Videoerweiterung in .ogv und die Audioerweiterung in .oga. .. Die ursprüngliche allgemeine Erweiterung .ogg wird aus Kompatibilitätsgründen nur mit Ogg Vorbis-Audiodateien verwendet.

Es scheint, dass der Inhalt ein Dateiformat namens Vorbis ist.

Laden wir es jetzt.

#Laden Sie mit dem vorherigen Pfad
#y: Wellenform
#sr: Abtastrate
y, sr = librosa.load(filename)
print(type(y)) # <class 'numpy.ndarray'>
print(y.shape) # (1355168,)
print(type(sr), sr) # <class 'int'> 22050

Dies ist die Methode zum Lesen der Audiodatei Es scheint die meisten Audiodateiformate wie WAV, FLAC und AIFF zu unterstützen.

Die Ausgänge "y" und "sr" werden durch numpy Arrays bzw. Ints dargestellt. Unter print (y.shape) können Sie sehen, dass y 1355168 Zahlen enthält. Außerdem ist "sr" standardmäßig 22050 Hz, was bedeutet, dass 22050-Zahlen 1 Sekunde entsprechen.

Holen Sie sich Beat-Informationen

Als nächstes erfolgt die Erfassung von Beat-Informationen.

Was hier wichtig ist, ist ein ** Frame **, der die numerischen Werte einiger Wellenformen zusammenfasst (die durch "hop_length" definierte Zahl). Standardmäßig ist "hop_length = 512", daher lautet die Zahl 512 → 1 Frame. Dieses Mal erhalten wir den Frame, der der Beat (Punkt) ist.

# tempo:BPM
# beat_Frames: Schlagen Sie Timing-Frames
#512 Samples pro Frame(hop_length=512)
tempo, beat_frames = librosa.beat.beat_track(y=y, sr=sr)
print('Estimated tempo: {:.2f} beats per minute'.format(tempo)) # Estimated tempo: 129.20 beats per minute
print(beat_frames) 
# [   5   24   43   63   83  103  122  142  162  182  202  222  242  262
#   281  301  321  341  361  382  401  421  441  461  480  500  520  540
#   560  580  600  620  639  658  678  698  718  737  758  777  798  817
#   837  857  877  896  917  936  957  976  996 1016 1036 1055 1075 1095
#  1116 1135 1155 1175 1195 1214 1234 1254 1275 1295 1315 1334 1354 1373
#  1394 1414 1434 1453 1473 1493 1513 1532 1553 1573 1593 1612 1632 1652
#  1672 1691 1712 1732 1752 1771 1791 1811 1831 1850 1871 1890 1911 1931
#  1951 1971 1990 2010 2030 2050 2070 2090 2110 2130 2150 2170 2190 2209
#  2229 2249 2269 2289 2309 2328 2348 2368 2388 2408 2428 2448 2468 2488
#  2508 2527 2547]

Mit dieser Methode können Sie den BPM von Musik abrufen. In diesem Fall ist "BPM = 129,20", was bedeutet, dass 129,2 Schläge pro Minute vorliegen. Aus print (beat_frames) können Sie auch ersehen, dass der Beat im 5. Frame, 24. Frame, .... Es scheint, dass der Beat alle 20 Frames kommt.

Als nächstes schauen wir uns das Timing des Beats in Bezug auf die Zeit an.

# beat_frames->beat_times
#Verwenden Sie diese Option, wenn Sie das Timing des Beats nach Zeit wissen möchten
beat_times = librosa.frames_to_time(beat_frames, sr=sr)
#Die Berechnungsformel lautet wie folgt
# beat_times[i] = beat_frames[i] * hop_length / sr
print(beat_times)
#     [ 0.11609977  0.55727891  0.99845805  1.46285714  1.92725624  2.39165533
#   2.83283447  3.29723356  3.76163265  4.22603175  4.69043084  5.15482993
#   5.61922902  6.08362812  6.52480726  6.98920635  7.45360544  7.91800454
#   8.38240363  8.87002268  9.31120181  9.77560091 10.24       10.70439909
#  11.14557823 11.60997732 12.07437642 12.53877551 13.0031746  13.4675737
#  13.93197279 14.39637188 14.83755102 15.27873016 15.74312925 16.20752834
#  16.67192744 17.11310658 17.60072562 18.04190476 18.52952381 18.97070295
#  19.43510204 19.89950113 20.36390023 20.80507937 21.29269841 21.73387755
#  22.2214966  22.66267574 23.12707483 23.59147392 24.05587302 24.49705215
#  24.96145125 25.42585034 25.91346939 26.35464853 26.81904762 27.28344671
#  27.7478458  28.18902494 28.65342404 29.11782313 29.60544218 30.06984127
#  30.53424036 30.9754195  31.43981859 31.88099773 32.36861678 32.83301587
#  33.29741497 33.7385941  34.2029932  34.66739229 35.13179138 35.57297052
#  36.06058957 36.52498866 36.98938776 37.43056689 37.89496599 38.35936508
#  38.82376417 39.26494331 39.75256236 40.21696145 40.68136054 41.12253968
#  41.58693878 42.05133787 42.51573696 42.9569161  43.44453515 43.88571429
#  44.37333333 44.83773243 45.30213152 45.76653061 46.20770975 46.67210884
#  47.13650794 47.60090703 48.06530612 48.52970522 48.99410431 49.4585034
#  49.92290249 50.38730159 50.85170068 51.29287982 51.75727891 52.221678
#  52.6860771  53.15047619 53.61487528 54.05605442 54.52045351 54.98485261
#  55.4492517  55.91365079 56.37804989 56.84244898 57.30684807 57.77124717
#  58.23564626 58.6768254  59.14122449]

Die folgenden Berechnungen werden hier durchgeführt.

\mathrm{beat\_times[i]=beat\_frames[i] \times hop\_length / sr}\\

Zum Beispiel im Fall von $ \ mathrm {i = 0} $

\begin{align}
\mathrm{beat\_times}[0]&=\mathrm{beat\_frames[0]} \times \mathrm{hop\_length} / \mathrm{sr}\\
&=5 \times 512 / 22050\\
&=0.1160997732...\\
&\simeq0.11609977
\end{align}

Daraus wurde herausgefunden, dass "beat_times" aus "beat_frames" und "sr" berechnet werden kann.

abschließend

Das erste Mal war das Tutorial Quickstart, wie war es? Wir würden uns freuen, wenn Sie den Artikel sowie den Inhalt kommentieren könnten.

Das nächste Mal das Tutorial Erweiterte Verwendung, dann Erweiterte Beispiele Ich hoffe ich kann zu .html # advanced gehen).

Recommended Posts

Lernen Sie Librosa mit einem Tutorial 1
AWS-Schrittfunktionen zum Lernen anhand eines Beispiels
Lerne Python mit ChemTHEATER
A4 Größe mit Python-Pptx
Lerne Zundokokiyoshi mit LSTM
Pandas lernen mit Chemoinfomatik
Scikit-Lernen mit Chemoinfomatik
CIFAR-10-Tutorial mit Keras
Lernen Sie mit Chemo Informatics Matplotlib
Lernen Sie mit Chemo Informatics NumPy
DCGAN mit TF Learn
Mit Dekorateur dekorieren
Lernen Sie Pendulum-v0 mit DDPG
Fangen Sie mit Django an! ~ Tutorial ⑤ ~
Zeichnen Sie mit NetworkX ein Diagramm
Versuchen Sie, mit einer Shell zu programmieren!
Erstellen Sie eine Homepage mit Django
Lernen Sie mit Chainer elliptische Bahnen
[PyTorch Tutorial ④] AUSBILDUNG EINES KLASSIFIERERS
Fangen Sie mit Django an! ~ Tutorial ④ ~
Lernen Sie neue Daten mit PaintsChainer
Fangen Sie mit Django an! ~ Tutorial ⑥ ~
Pfeffer-Tutorial (5): Verwenden eines Tablets
Verwenden eines Druckers mit Debian 10
Machen Sie eine Lotterie mit Python
Erstellen Sie ein Verzeichnis mit Python
Ein bisschen im Kettenschiff stecken
Zeichnen Sie mit networkx ein Diagramm
Einfach cProfile mit einem Dekorateur
Machen Sie ein Feuer mit kdeplot
Dateningenieure lernen DevOps im Hinblick auf MLOps. ① Erste Schritte
Erstellen einer Kubernetes-Umgebung mit ansible 2
[Python] Was ist eine with-Anweisung?
Löse ABC163 A ~ C mit Python
Bedienen Sie den Belegdrucker mit Python
Spiele mit einer Schildkröte mit Schildkrötengrafiken (Teil 1)
Zeichne ein Diagramm mit Julia + PyQtGraph (2)
Lerne Zundokokiyoshi mit einem einfachen RNN
Generieren Sie mit SciPy eine Normalverteilung
[PyTorch Tutorial ⑤] PyTorch anhand von Beispielen lernen (Teil 2)
Erstellen eines bestimmten Baums mit Scikit-Learn
Lernen Sie mit Causal ML Package Meta-Learner
Lassen Sie uns eine GUI mit Python erstellen.
Machen Sie einen Sound mit Jupyter Notebook
Auflisten von Dateien mit bestimmten Erweiterungen
Lernen Sie mit PyTorch Graph Convolutional Networks
Erstellen eines Flask-Servers mit Docker
Erstellen Sie eine Deb-Datei mit Docker
Löse ABC166 A ~ D mit Python
[TensorFlow 2] Lernen Sie RNN mit CTC-Verlust
Lass uns mit Selene Deep SEA lernen
Zeichnen Sie mit matplotlib ein loses Diagramm
Stellen Sie die Django-Anwendung mit Docker bereit
Machen wir einen Blockbruch mit wxPython
Erstellen Sie eine virtuelle Umgebung mit Python!
Ich habe mit Python eine Lotterie gemacht.
Zeichne einen schönen Kreis mit Numpy