Hey,
ich bin gerade dabei eine AI auf Stimm Erkennung zu trainieren. Dafür müsste ich meine .wav Datei in kleinere zb. 5 Sekunden lange Dateien speichern. Was wäre der einfachste weg?
.wav Datei Spalten
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
einfach stumpf in 5s Schnipsel teilen oder an passender Stelle (also z.B. immer wenn Stille ist) teilen?
Wenn du eine grafischen Editor brauchst: Audacity ist ein ganz guter, kostenloser Audioeditor.
Gruß, noisefloor
einfach stumpf in 5s Schnipsel teilen oder an passender Stelle (also z.B. immer wenn Stille ist) teilen?
Wenn du eine grafischen Editor brauchst: Audacity ist ein ganz guter, kostenloser Audioeditor.
Gruß, noisefloor
- Bio Salami
- User
- Beiträge: 63
- Registriert: Mittwoch 28. Juli 2021, 14:10
@noisefloor,
ich könnte es auch Manuel machen. Aber ich bräuchte ein Programm welches Audio Dateien (zb. 10 Minuten lang) in 2 Sekunden lange Dateien speichert.
ich könnte es auch Manuel machen. Aber ich bräuchte ein Programm welches Audio Dateien (zb. 10 Minuten lang) in 2 Sekunden lange Dateien speichert.
- __blackjack__
- User
- Beiträge: 13919
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
In der Standardbibliothek gibt es das `wave`-Modul, mit dem man sich so etwas relativ leicht schreiben könnte.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware
Meiner Meinung nach ist SoX ein besonders einfacher Weg (vor allem unter Unix-Systemen; unter Windows geht es aber wohl auch irgendwie). Die Manpage zeigt ein konkretes Beispiel, um eine Wave-Datei in 30-Sekunden-Schnipsel zu teilen.Bio Salami hat geschrieben: ↑Freitag 22. Oktober 2021, 17:24 Dafür müsste ich meine .wav Datei in kleinere zb. 5 Sekunden lange Dateien speichern. Was wäre der einfachste weg?
Lies dich mal in diesen Thread hier ein, insbesondere die Antworten liefern multiple Lösungen für dein Problem.
https://stackoverflow.com/questions/172 ... -in-python
https://stackoverflow.com/questions/172 ... -in-python
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Ich, persönlich finde die von __deets__ vorgeschlagene Methode mit numpy (scipy) am schönsten. Da hat man komfortablen Zugriff auf die Daten und kann zum Beispiel auch schön plotten.
Edit: optionaler Parameter um die Anzahl der Ausgabedateien zu begrenzen
Code: Alles auswählen
import numpy as np
from scipy.io import wavfile
import matplotlib.pyplot as plt
def plot(audio, start, duration):
rate, data = audio
stop = start + duration
fig, ax = plt.subplots(2)
fig.suptitle(f"Start: {start}s, Dauer: {duration}s")
start_index = int(start * rate)
stop_index = int(stop * rate)
samples = int(duration * rate)
time_data = np.linspace(start, stop, samples)
ax[0].set_title("Channel 1")
ax[1].set_title("Channel 2")
ax[0].grid(True)
ax[1].grid(True)
ax[0].plot(time_data, data[start_index:stop_index, 0])
ax[1].plot(time_data, data[start_index:stop_index, 1])
plt.show()
def split(audio, seconds, max_parts=None):
rate, data = audio
total_samples, _channels = data.shape
part_samples = seconds * rate
indices = np.arange(part_samples, total_samples, part_samples)
for num, part in enumerate(np.vsplit(data, indices)):
if max_parts and num >= max_parts:
return
yield (rate, part)
def main():
audio = wavfile.read("sound.wav")
plot(audio, start=10, duration=10)
for num, part in enumerate(split(audio, seconds=2, max_parts=2)):
rate, data = part
wavfile.write(f"sound_part_{num:04d}.wav", rate, data)
if __name__ == "__main__":
main()
Da ist IMO generell der beste Weg Multimediadatei (nicht nur Audio, sondern auch Bilder) zu bearbeiten...sie in ein Array zu laden. Allerdings würde ich dafür nicht unbedingt Python verwenden.
Nicht böse sein, aber andere Sprachen kriegen das damit deutlich einfacher gebacken, Audio/Bilder/Schnipsel davon in einem Array zu bearbeiten.
Bsp(nicht in Python)
Code: Alles auswählen
using FileIO, Plots
data = load("Hells Bells.flac")[1][30750:689971,1]
bd,slen = 6000, length(data)
anim = @animate for a = 1:50
plot(data, grid=false, legend=false, layout=(3, 1))
plot!(data[90a:90a+bd], legend=false, annotations=(bd,.6,text(a,12,:right)), lc=:acton, sp=2)
plot!(reverse(data), legend=false, xlabel="slen: $slen", lc=:orange, sp=3)
end;gif(anim,"animation.gif", fps=10)
https://drive.google.com/file/d/1pM5ieA ... SOxQV/view
Schönes Beispiel! Jeder hat halt seine Lieblingssprache, bzw. Sprache in der man sich am besten auskennt. Wenn ich nachts nicht schlafen müsste würde ich wahrscheinlich auch noch Julia lernenNicht böse sein, aber andere Sprachen kriegen das damit deutlich einfacher gebacken, Audio/Bilder/Schnipsel davon in einem Array zu bearbeiten.