Skip to content

Commit

Permalink
adding rough scripts for merging two sound files. note quality degred…
Browse files Browse the repository at this point in the history
…ation
  • Loading branch information
sbenthall committed Jun 18, 2018
1 parent f76f459 commit 7e24fb9
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions scripts.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import librosa
import numpy as np


def load_to_db(inp, duration = 30):
x, sr = librosa.load(inp, duration = duration)
X = librosa.stft(x)
Xdb = librosa.amplitude_to_db(X)
return Xdb, sr


def mix_transform(Xdb1,Xdb2):
db_range = Xdb1.shape[0]
shared_length = min(Xdb1.shape[1],Xdb2.shape[1])

mix = np.random.random(size=(db_range,shared_length)) > .5

Xdb3 = mix * Xdb1[:,:shared_length] + np.logical_not(mix) * Xdb2[:,:shared_length]

return Xdb3


def merge(in1, in2, out, transform_method = mix_transform, duration=30):
Xdb1, sr = load_to_db(in1,duration = duration)
Xdb2, sr = load_to_db(in2, duration = duration )

Xdb3 = transform_method(Xdb1,Xdb2)
X3 = librosa.db_to_amplitude(Xdb3)
x3 = librosa.core.istft(X3)
librosa.output.write_wav(out, x3, sr)


### Testing
input1_path = '../samples/audio/busta_rhymes_hits_for_days.mp3'
input2_path = '../samples/steve-morrell/Life Gift.mp3'
output_path = 'merge-test-out.wav'
merge(input1_path, input2_path, output_path, duration = 7)

0 comments on commit 7e24fb9

Please sign in to comment.