やってみたらなんとかなる

プログラミングをする上で調べたこととかやったこととか

[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ファイルを重ねたよ。結構いい感じにできた。