###問題点
30秒の曲データが格納された変数song1と1秒間のホワイトノイズ の音データが格納された変数song2があり、
song1の5-6秒の1秒間にこのsong2を和の演算を用いて代入したが、このようにして足し合わせるとnumpyの特性上、表示されるグラフは各要素の和が足されたものになってしまい、結果的に振幅値が上がってしまった。
(過去の質問からこのような助言を得ることができた。)
また、表示されたグラフ・音声も、なぜかノイズが一番最初に表示されてしまった。
(これに関しては筆者のnp.insertの使い方が悪いかもしれない。)
これを回避するためにnumpy.insertを用いた音重ねを実現させ、表示されるグラフが各要素の和が足さ
れたものでないものにしたい。また、音声もそのグラフを元に聴けるようにしたい。
該当のソースコード
Python
1song1=y #元の曲データyを変数song1に代入 2song2=dataa#ホワイトノイズの音データy1を変数song2に挿入 3 4mixmusic= np.insert(song1,song1[5*sr:6*sr],song2) #srはサンプリングレート。sr=22050 5plt.plot(mixmusic) #完成音データの波形をプロット 6plt.show() #ディスプレイに波形を表示 7IPython.display.Audio(mixmusic, rate=sr) #完成音データを聞ける様に
エラーメッセージ
/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:2: DeprecationWarning: using a non-integer array as obj in insert will result in an error in the future
表示されたグラフ
###過去の失敗例(+演算でnumpyの特性の影響を受けて振幅値が増えてしまった)
この時max関数で強制的に上限をかけて見ためだけ良くした。
負の振幅値がsong1より減っていることがわかる。
あなたの回答
tips
プレビュー