発生している問題・実現したいこと
30秒の音データが代入された変数song1と1秒のノイズの音データが代入された変数song2があり、song2をsong1の再生開始から5~6秒の1秒間に挿入した30秒間の音データを変数mixmusicに代入し、グラフを表示させた。この時、あらかじめsong2の最大値をsong1の最大値と同じにしているはずなのに、グラフ上で見ると、合成されたsong2が最大値を超えた値になっているので、これを直したい
該当のソースコード
Python
1print('sampling rate:', sr) 2plt.plot(y) #yは音データ 3print(np.max(np.abs(y))) #この曲の最大値は0.810760498046875 4ans=np.max(np.abs(y)) #のちの最大値設定用 5 6**(雑音(ガウシアンノイズ)作成)** 7time = 1 8Srate = 22050 9 10x1=np.linspace(0, time, Srate*time) 11 12y1 = np.random.rand(Srate * time)#正規分布の乱数 13 14y1=np.clip(y1,None,ans) #最大値はansと同じにする 15 16dataa=y1 17 18print(np.max(np.abs(dataa))) 19print('sampling rate:', sr) 20plt.plot(dataa) 21plt.show() #グラフを表示 22IPython.display.Audio(dataa, rate=Srate) 23song1=y #元の曲データyを変数song1に代入 24song2=dataa#ホワイトノイズの音データy1を変数song2に挿入 25 26**(音データの合成)** 27song2_extend = np.zeros_like(song1) #song1と同じサイズの要素0のsong2_extendを用意 28song2_extend[5*sr:6*sr] = song2 #ノイズの音データsong2をsong1の5-6秒に当たる箇所に挿入 29mixmusic= song1+song2_extend #元の音データsong1に先ほどのノイズを挿入 30 31print('sampling rate:', sr) #サンプリングレート(周波数)を表示 32plt.plot(mixmusic) #完成音データの波形をプロット 33plt.show() #ディスプレイに波形を表示 34IPython.display.Audio(mixmusic, rate=sr) #完成音データを聞ける様に
回答1件
あなたの回答
tips
プレビュー