Schreiben Sie einige im Experiment erstellte Sprachanalyseprogramme.
Die Audiodaten von 30 Abgriffen wurden 1 Minute lang verwendet. Abtastfrequenz: 48 kHz Bitgröße: 24 Bit
FFT Es ist das gleiche Programm, das ich neulich gepostet habe.
FFT.py
print("===== Wave2FFT_lim =====")
F = np.fft.fft(self.data)
Amp = np.abs(F/(self.frames/2))
Amp_tmp = np.abs(F/(self.frames/2))
Amp_new = Amp / Amp_tmp.max()
freq = np.fft.fftfreq(self.frames, 1/self.Fs)
fig = plt.figure()
plt.plot(freq[1:int(self.frames/2)],Amp_new[1:int(self.frames/2)])
plt.xlabel("Freq [Hz]")
plt.ylabel("Amp")
plt.title("FFT")
plt.ylim(0, 1)
fig.savefig("{}/FFT(Normalization).png ".format(self.Folder))
plt.show()
plt.close()
Ausführungsergebnis Es steht in einem bestimmten Zyklus mit einem guten Gefühl auf. Auch dieses Mal wird normalisiert, um festzustellen, ob eine Reaktion vorliegt.
spectrogram.py
print("===== Wave2Spec =====")
fig = plt.figure()
pxx, freq, bins, t = plt.specgram(self.data[:,0], Fs = self.Fs)
plt.title("spec")
plt.xlabel("time [sec]")
plt.ylabel("Freq [Hz]")
fig.savefig("{}/Spec.png ".format(self.Folder))
plt.show()
plt.close()
Ausführungsergebnis Vertikale Streifen sind zwischen 0 und 25000 Hz schwach zu erkennen, dies ist jedoch wichtig, da das Niederfrequenzband etwas dunkler ist.
STFT
STFT.py
print("===== Wave2STFT =====")
pylab.figure()
f, t, stft = sp.stft(self.data[:,0],fs=self.Fs)
plt.pcolormesh(t, f, np.abs(stft),cmap='hot')
pylab.title("STFT")
plt.xlabel("time [sec]")
plt.ylabel("Freq [Hz]")
pylab.savefig("{}/STFT.png ".format(self.Folder))
pylab.show()
Ausführungsergebnis Ich habe versucht, es mit Interesse zu machen, aber ich denke, dass der wichtige Teil aus dem vorherigen Spektrogramm extrahiert wurde. Ich kann auch das Gefühl des Mangels an Studien nicht leugnen, deshalb würde ich gerne erfahren, was dieses Ergebnis zeigt.
Diesmal habe ich eine Sprachanalyse durchgeführt, und alle waren visuell leicht zu verstehen und konnten in der Forschung verwendet werden.
Recommended Posts