forked from timsainb/noisereduce
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_reduction.py
executable file
·148 lines (128 loc) · 4.01 KB
/
test_reduction.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
from scipy.io import wavfile
import noisereduce as nr
from noisereduce.generate_noise import band_limited_noise
from noisereduce.utils import int16_to_float32, float32_to_int16
def test_reduce_generated_noise_stationary_with_noise_clip():
# load data
wav_loc = "assets/fish.wav"
rate, data = wavfile.read(wav_loc)
# add noise
noise_len = 2 # seconds
noise = (
band_limited_noise(
min_freq=2000, max_freq=12000, samples=len(data), samplerate=rate
)
* 10
)
noise_clip = noise[: rate * noise_len]
audio_clip_band_limited = data + noise
return nr.reduce_noise(
y=audio_clip_band_limited, sr=rate, y_noise = noise_clip, stationary=True
)
def test_reduce_generated_noise_stationary_without_noise_clip():
# load data
wav_loc = "assets/fish.wav"
rate, data = wavfile.read(wav_loc)
# add noise
noise_len = 2 # seconds
noise = (
band_limited_noise(
min_freq=2000, max_freq=12000, samples=len(data), samplerate=rate
)
* 10
)
audio_clip_band_limited = data + noise
return nr.reduce_noise(
y=audio_clip_band_limited, sr=rate, stationary=True
)
def test_reduce_generated_noise_nonstationary():
# load data
wav_loc = "assets/fish.wav"
rate, data = wavfile.read(wav_loc)
# add noise
noise_len = 2 # seconds
noise = (
band_limited_noise(
min_freq=2000, max_freq=12000, samples=len(data), samplerate=rate
)
* 10
)
noise_clip = noise[: rate * noise_len]
audio_clip_band_limited = data + noise
return nr.reduce_noise(
y=audio_clip_band_limited, sr=rate, stationary=False
)
def test_reduce_generated_noise_batches():
# load data
wav_loc = "assets/fish.wav"
rate, data = wavfile.read(wav_loc)
# add noise
noise_len = 2 # seconds
noise = (
band_limited_noise(
min_freq=2000, max_freq=12000, samples=len(data), samplerate=rate
)
* 10
)
noise_clip = noise[: rate * noise_len]
audio_clip_band_limited = data + noise
return nr.reduce_noise(
y=audio_clip_band_limited, sr=rate, stationary=False, chunk_size=30000
)
### Tests for V1
import noisereduce.noisereducev1 as nrv1
def test_reduce_generated_noise():
# load data
wav_loc = "assets/fish.wav"
rate, data = wavfile.read(wav_loc)
data = int16_to_float32(data)
# add noise
noise_len = 2 # seconds
noise = (
band_limited_noise(
min_freq=2000, max_freq=12000, samples=len(data), samplerate=rate
)
* 10
)
noise_clip = noise[: rate * noise_len]
audio_clip_band_limited = data + noise
return nrv1.reduce_noise(
audio_clip=audio_clip_band_limited, noise_clip=noise_clip, verbose=True
)
def test_reduce_cafe_noise():
# load data
wav_loc = "assets/fish.wav"
rate, data = wavfile.read(wav_loc)
data = int16_to_float32(data)
noise_loc = "assets/cafe_short.wav"
noise_rate, noise_data = wavfile.read(noise_loc)
noise_data = int16_to_float32(noise_data)
# add noise
snr = 2 # signal to noise ratio
noise_clip = noise_data / snr
audio_clip_cafe = data + noise_clip
# reduce noise
reduced_noise = nrv1.reduce_noise(
audio_clip=audio_clip_cafe, noise_clip=noise_clip, verbose=True
)
return float32_to_int16(reduced_noise)
def test_reduce_cafe_noise_tf():
# load data
wav_loc = "assets/fish.wav"
rate, data = wavfile.read(wav_loc)
data = int16_to_float32(data)
noise_loc = "assets/cafe_short.wav"
noise_rate, noise_data = wavfile.read(noise_loc)
noise_data = int16_to_float32(noise_data)
# add noise
snr = 2 # signal to noise ratio
noise_clip = noise_data / snr
audio_clip_cafe = data + noise_clip
# reduce noise
reduced_noise = nrv1.reduce_noise(
audio_clip=audio_clip_cafe,
noise_clip=noise_clip,
use_tensorflow=True,
verbose=True,
)
return float32_to_int16(reduced_noise)