# SciPy_Wav reference: https://officeguide.cc/python-scipy-read-wav-file-plot-waveform-spectrum-spectrogram-tutorial-examples/ Colab: https://colab.research.google.com/drive/1ZvrP-rLa4cfD6eLht-kVIzJKNuQ9gnJ3?usp=sharing SciPy: --- - Import: - `from scipy.io.wavfile import read` - Load wav: - `rate, data = read("bubbs.wav")` - Show: - frequency: - `print("Sample rate: {} Hz".format(rate))` - data type: - `print("Data type: {}".format(data.dtype))` - Draw: - waveform ``` import matplotlib.pyplot as plt # 繪製前 1024 點資料的波形圖 plt.figure(figsize=(15, 5)) plt.plot(data[0:1024]) plt.show() ``` - spectrum ``` # 傅立葉轉換 from scipy.fftpack import fft dataFFT = fft(data[0:1024]) dataFFTAbs = abs(dataFFT[1:512]) # 繪製頻譜圖 plt.figure(figsize=(15, 5)) plt.plot(dataFFTAbs, 'r') plt.show() ``` - spectrogram ``` import matplotlib.pyplot as plt import numpy as np # 產生時間資料 time = np.arange(0, len(data)) / rate plt.figure(figsize=(15, 5)) # 繪製波形圖 plotA = plt.subplot(211) plotA.plot(time, data) plotA.set_ylabel("Amplitude") plotA.set_xlim(0, len(data) / rate) # 繪製時頻譜圖 plotB = plt.subplot(212) plotB.specgram(data, NFFT=1024, Fs=rate, noverlap=900) plotB.set_ylabel("Frequency") plotB.set_xlabel("Time") plt.show() ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up