Wie kann man eine WAV-Datei erstellen

Ich habe gerade eine WAV-Datei mit scipy gelesen und jetzt möchte ich die Handlung der Datei mit matplotlib machen, auf der "y-Skala" möchte ich die aplitude und über die "x-Skala" sehen Ich möchte die Anzahl der Frames sehen Nein Irgendeine Hilfe, wie kann ich das machen? Vielen Dank!

from scipy.io.wavfile import read import numpy as np from numpy import* import matplotlib.pyplot as plt a=read("C:/Users/Martinez/Desktop/impulso.wav") print a 

3 Solutions collect form web for “Wie kann man eine WAV-Datei erstellen”

Sie können welle lib anrufen, um eine Audiodatei zu lesen.

Um die Wellenform zu zeichnen, benutze die "plot" -Funktion von matplotlib

 import matplotlib.pyplot as plt import numpy as np import wave import sys spf = wave.open('wavfile.wav','r') #Extract Raw Audio from Wav File signal = spf.readframes(-1) signal = np.fromstring(signal, 'Int16') #If Stereo if spf.getnchannels() == 2: print 'Just mono files' sys.exit(0) plt.figure(1) plt.title('Signal Wave...') plt.plot(signal) plt.show() 

Sie haben so etwas wie: Bildbeschreibung hier eingeben

Um die x-Achse in Sekundenschnelle zu zeichnen, musst du die Bildrate und die Größe von deinem Signal teilen. Du kannst die linspace-Funktion von numpy verwenden, um einen Time Vector zu erstellen, der linear mit der Größe der Audiodatei beabstandet ist Wie plt.plot(Time,signal)

 import matplotlib.pyplot as plt import numpy as np import wave import sys spf = wave.open('Animal_cut.wav','r') #Extract Raw Audio from Wav File signal = spf.readframes(-1) signal = np.fromstring(signal, 'Int16') fs = spf.getframerate() #If Stereo if spf.getnchannels() == 2: print 'Just mono files' sys.exit(0) Time=np.linspace(0, len(signal)/fs, num=len(signal)) plt.figure(1) plt.title('Signal Wave...') plt.plot(Time,signal) plt.show() 

Neue Handlung x-Achse in Sekunden:

Bildbeschreibung hier eingeben

Alternativ, wenn Sie SciPy verwenden möchten, können Sie auch Folgendes tun:

 from scipy.io.wavfile import read import matplotlib.pyplot as plt # read audio samples input_data = read("Sample.wav") audio = input_data[1] # plot the first 1024 samples plt.plot(audio[0:1024]) # label the axes plt.ylabel("Amplitude") plt.xlabel("Time") # set the title plt.title("Sample Wav") # display the plot plt.show() 

Hier ist eine Version, die auch Stereo-Eingänge verarbeiten wird, basierend auf der Antwort von @ederwander

 import matplotlib.pyplot as plt import numpy as np import wave file = 'test.wav' with wave.open(file,'r') as wav_file: #Extract Raw Audio from Wav File signal = wav_file.readframes(-1) signal = np.fromstring(signal, 'Int16') #Split the data into channels channels = [[] for channel in range(wav_file.getnchannels())] for index, datum in enumerate(signal): channels[index%len(channels)].append(datum) #Get time from indices fs = wav_file.getframerate() Time=np.linspace(0, len(signal)/len(channels)/fs, num=len(signal)/len(channels)) #Plot plt.figure(1) plt.title('Signal Wave...') for channel in channels: plt.plot(Time,channel) plt.show() 

Bildbeschreibung hier eingeben

  • Bypass "Array ist zu groß" Python-Fehler
  • Seaborn-Paletten - verhindern das Recycling von Farben
  • Matplotlib 2 inkonsistente Schriftart
  • Linestyle in matplotlib Schrittfunktion
  • Pip installieren Matplotlib Fehler mit virtualenv
  • Plot / Konvertieren Sie einen Ausdruck aus Sympy: Taylor Serie mit Matplotlib
  • Plt.setp Alternative für Subplots oder wie man Textrotation auf x-Achse für subplot setzt
  • Handlung und Std. Dev Bei bestimmten stündlichen Zecken mit Pandas
  • Pandas-Plot überlagert nicht
  • Zeichne einen farbigen Würfel in Matplotlib
  • Matplotlib zieht überlappende Punkte interaktiv
  • Python ist die beste Programmiersprache der Welt.