[Python]waveファイルを重ね合わせたい
概要
あるwaveファイルの一部にノイズ(waveファイル)を重ねたいんだ!!!
どうやるの
LibROSAとNumpyでなんとかなりそう。
準備
まずは準備。LibROSAとNumpyのインストールから。
たぶんAnaconda使ってる人はNumpyは最初から入ってるかもです。
pip install librosa
pip install numpy
で行けるはず。
やってみた
今回は、自宅で録音したこの10秒間の音に、(音量小さいので注意!)
このガラスの割れる音をランダムな位置に混ぜます。(音量大きいので注意!)
ちなみにこのガラスの割れる音はここ→ 生活[1]|効果音ラボ← からダウンロードしてます。ガラスが割れる音2ってやつです。
import librosa #LibROSAをつかうよ! import librosa.output #LibROSAで書き出しするよ! import random #ランダムな数を使うよ! import numpy as np #numpyはよくnpって略されるらしい。 y, sr = librosa.load('/Users/yuta/Documents/work/python/HomeSaver/dev_data/test/sample_2020-10-27T03:13:44.793815.wav', sr=None, mono=False) # 家の音の読み込み ay, asr = librosa.load('/Users/yuta/Documents/work/python/HomeSaver/Anomaly/glass-break3.wav', sr=sr, mono=True) # ガラスの割れる音の読み込み nokori = y.shape[0] - ay.shape[0] # ガラスの割れる音の始まるところの範囲 ran = random.randrange(nokori) # ガラスの割れる音をどこから始めるか y[ran:ran+ano_shape[0]] += ay / 15 # 家の音とガラスの割れる音を足してる。 # ガラスの割れる音が大きすぎるので1/15にしてる。 librosa.output.write_wav('./sample.wav', y, sr) # 書き出したお
そしてできたのがこんな音です。
もう一回回してみるとこんな感じ
ちゃんと違う位置にガラスの割れる音が入ってます。
まとめ
LibROSAとNumpyを使ってwaveファイルにwaveファイルを重ねたよ。結構いい感じにできた。