前提・実現したいこと
libROSAを使って音声解析の練習をしようと思い、邪道だとは思うのですがMUSESCOREという譜面作成ソフトでwavファイルを作成し、周波数スペクトログラムを表示させたいと思っています。
発生している問題・エラーメッセージ
ParameterError Traceback (most recent call last) <ipython-input-12-eeff155a5c36> in <module> 10 11 #短時間フーリエ変換実行 ---> 12 amplitude = np.abs(librosa.core.stft(data_norm, n_fft = fft_size, hop_length = hop_length)) 13 14 #振幅をデシベルに変換 ~\anaconda3\lib\site-packages\librosa\core\spectrum.py in stft(y, n_fft, hop_length, win_length, window, center, dtype, pad_mode) 213 214 # Check audio is valid --> 215 util.valid_audio(y) 216 217 # Pad the time series so that frames are centered ~\anaconda3\lib\site-packages\librosa\util\utils.py in valid_audio(y, mono) 266 if mono and y.ndim != 1: 267 raise ParameterError('Invalid shape for monophonic audio: ' --> 268 'ndim={:d}, shape={}'.format(y.ndim, y.shape)) 269 270 elif y.ndim > 2 or y.ndim == 0: ParameterError: Invalid shape for monophonic audio: ndim=2, shape=(2939904, 2)
###今回作成したプログラム
//wavの読み込み
wav_filename = "./sample.wav"
rate, data = scipy.io.wavfile.read(wav_filename)
//振幅の配列を作成
data_norm = data / 32768
//フレーム長
fft_size = 1024
//フレームシフト長
hop_length = int(fft_size / 4)
//短時間フーリエ変換実行
amplitude = np.abs(librosa.core.stft(data_norm, n_fft = fft_size, hop_length = hop_length))
//振幅をデシベルに変換
log_power = librosa.core.amplitude_to_db(amplitude)
//グラフ表示
librosa.display.specshow(logpower, sr = rate, hop_length = hop_length, x_axis = 'time', y_axis = 'Hz', cmap = (magma))
plt.colorbar(format = '% + 2.0f dB')
plt.show()
試したこと
このエラーに対して検索したのですがあまりよくわからず、実際の楽器を録音したものを音声データとして使用したときは不具合なく動作したのでモノラル音声かステレオ音声かの違いなのかなとは推察したのですが対処法が浮かびませんでした。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。