2017-12-30 22 views
1

Ich brauche Hilfe herauszufinden, wie man eine Probe von sagen wir 0,25 bis 1 Sekunde mit librosa package dehnt. Ich nehme an, librosa.effects.time _stretch ist eine Funktion, dies zu tun, aber anstatt ein Signal zu dehnen, tut es etwas anderes. Was ist der richtige Weg, um es oder eine andere librosa oder numpy Funktion (oder pydub) anzuwenden?Python | librosa: wie man das Signal in der Zeit dehnt, indem man mehr Punkte hinzufügt

Hier ist mein Versuch mit 16 kHz Abtastrate, d. H. 4K Proben wird über 0,25 Sekunden Zeit gegeben. Als Ausgabe benötige ich 16K-Samples für die gesamte Dauer von 1 Sekunde, wobei die Abtastrate konstant bleibt.

import numpy as np, librosa 
x = np.sin(np.linspace(-np.pi, np.pi, 4000)) # wav sample 
y = librosa.effects.time_stretch(x, rate=4000/16000) 
plt.plot(x) # plotted in blue 
plt.plot(y) # plotted in orange 

, die die folgende Handlung ergibt:

enter image description here

Bemerkenswerter wurde, das Sinussignal nicht gestreckt. Ich benutze sin() als Beispiel. Die Absicht ist, Sprach-Audio-WAV-Dateien zu strecken, bei denen die analytische Funktion unbekannt ist.

Antwort

1

Ich denke, dass time_stretch einige Verarbeitung anwendet, um zu versuchen, die Tonhöhe des Audios zu erhalten. Was Sie wollen, ist wahrscheinlich

y = librosa.core.resample(x, 4000, 16000) 

, die dieses Grundstück gibt:

enter image description here

+0

Dank. Ich werde es versuchen. Ich dachte, die Tonhöhe wäre niedriger, wenn ich mich dehne. Ihre Handlung scheint zu zeigen, was ich hoffentlich mit einer neuen Stichprobengröße von 16.000 Punkten brauche. –

Verwandte Themen