musdfakoc commited on
Commit
f412cfa
·
verified ·
1 Parent(s): 562e050

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -0
app.py CHANGED
@@ -8,10 +8,64 @@ import librosa
8
  import numpy as np
9
  import soundfile as sf
10
  import os
 
11
 
12
  # Load your Pix2Pix model (make sure the path is correct)
13
  model = load_model('./model_022600.h5', compile=False)
14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  # Function to process the input image and convert to audio
16
  def process_image(input_image):
17
  # Load and preprocess the input image
@@ -35,6 +89,9 @@ def process_image(input_image):
35
 
36
  # Convert the image to a numpy array (spectrogram)
37
  img = np.array(gen_image_resized)
 
 
 
38
 
39
  # Convert the spectrogram back to audio using librosa
40
  wav = librosa.feature.inverse.mel_to_audio(img, sr=44100, n_fft=2048, hop_length=512)
 
8
  import numpy as np
9
  import soundfile as sf
10
  import os
11
+ import random
12
 
13
  # Load your Pix2Pix model (make sure the path is correct)
14
  model = load_model('./model_022600.h5', compile=False)
15
 
16
+
17
+ # Function to shift frequencies
18
+ def shift_frequencies(spectrogram, shift):
19
+ return np.roll(spectrogram, shift, axis=0)
20
+
21
+ # Function to apply a frequency filter
22
+ def apply_filter(spectrogram, low_cut, high_cut):
23
+ filtered = np.copy(spectrogram)
24
+ filtered[:low_cut, :] = 0 # Attenuate low frequencies
25
+ filtered[high_cut:, :] = 0 # Attenuate high frequencies
26
+ return filtered
27
+
28
+ # Function to add harmonics
29
+ def add_harmonics(spectrogram, harmonic_shift):
30
+ harmonics = np.roll(spectrogram, harmonic_shift, axis=0) * 0.5 # Weaken the harmonics
31
+ return np.clip(spectrogram + harmonics, 0, 1)
32
+
33
+ # Function to modulate the amplitude
34
+ def modulate_amplitude(spectrogram, factor):
35
+ return np.clip(spectrogram * factor, 0, 1) # Amplify or attenuate the white areas
36
+
37
+ # Function to randomly decide which transformations to apply and with what parameters
38
+ def modify_spectrogram(spectrogram):
39
+ # Random decision for transformations
40
+ apply_shift = random.choice([True, False])
41
+ apply_filtering = random.choice([True, False])
42
+ apply_harmonics = random.choice([True, False])
43
+ apply_amplitude_modulation = random.choice([True, False])
44
+
45
+ # Randomly select the values for each transformation
46
+ if apply_shift:
47
+ shift_value = random.randint(-15, 15) # Random shift between -15 and 15
48
+ print(f"Applying frequency shift: {shift_value}")
49
+ spectrogram = shift_frequencies(spectrogram, shift=shift_value)
50
+
51
+ if apply_filtering:
52
+ low_cut = random.randint(10, 50) # Random low_cut between 10 and 50
53
+ high_cut = random.randint(300, 600) # Random high_cut between 300 and 600
54
+ print(f"Applying filter: low_cut={low_cut}, high_cut={high_cut}")
55
+ spectrogram = apply_filter(spectrogram, low_cut=low_cut, high_cut=high_cut)
56
+
57
+ if apply_harmonics:
58
+ harmonic_shift = random.randint(2, 10) # Random harmonic shift between 2 and 10
59
+ print(f"Applying harmonic shift: {harmonic_shift}")
60
+ spectrogram = add_harmonics(spectrogram, harmonic_shift=harmonic_shift)
61
+
62
+ if apply_amplitude_modulation:
63
+ factor = random.uniform(0.8, 2.0) # Random amplitude factor between 0.8 and 2.0
64
+ print(f"Applying amplitude modulation: factor={factor}")
65
+ spectrogram = modulate_amplitude(spectrogram, factor=factor)
66
+
67
+ return spectrogram
68
+
69
  # Function to process the input image and convert to audio
70
  def process_image(input_image):
71
  # Load and preprocess the input image
 
89
 
90
  # Convert the image to a numpy array (spectrogram)
91
  img = np.array(gen_image_resized)
92
+
93
+ # Modify the spectrogram randomly
94
+ img = modify_spectrogram(img)
95
 
96
  # Convert the spectrogram back to audio using librosa
97
  wav = librosa.feature.inverse.mel_to_audio(img, sr=44100, n_fft=2048, hop_length=512)