音声処理にはスペクトログラムが欠かせませんが、Pythonでのスペクトログラムの作成方法はあまり知られていません。ここではPythonを使用して音声ファイルをスペクトログラムに変換する方法を説明します。
まず、必要なライブラリをインストールします。次のコマンドを使用して、NumPy、SciPy、Matplotlib、librosaをインストールします。
!pip install numpy scipy matplotlib librosa
次に、音声ファイルを読み込みます。以下のコードを使用して、WAVファイルを読み込みます。
import librosa
audio_file = 'audio.wav'
y, sr = librosa.load(audio_file, sr=None)
次に、スペクトログラムを作成します。以下のコードを使用して、短時間フーリエ変換(STFT)を使用してスペクトログラムを計算します。
import librosa.display
n_fft = 2048
hop_length = 512
D = librosa.stft(y, n_fft=n_fft, hop_length=hop_length)
S_db = librosa.amplitude_to_db(abs(D), ref=np.max)
librosa.display.specshow(S_db, sr=sr, hop_length=hop_length, x_axis='time', y_axis='log')
最後に、スペクトログラムを表示します。以下のコードを使用して、Matplotlibを使用してスペクトログラムを表示します。
import matplotlib.pyplot as plt
plt.colorbar(format='%+2.0f dB')
plt.title('Spectrogram (dB)')
plt.xlabel('Time')
plt.ylabel('Frequency')
plt.tight_layout()
plt.show()
以上で、Pythonを使用して音声ファイルをスペクトログラムに変換する方法がわかりました。