amanmibra commited on
Commit
b60a7b6
·
1 Parent(s): 149c71b

Create preprocess file

Browse files
Files changed (1) hide show
  1. server/preprocess.py +42 -0
server/preprocess.py ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Util functions to process any incoming audio data to be processable by the model
3
+ """
4
+ import torch
5
+ import torchaudio
6
+
7
+ def process_raw_wav(wav, sample_rate, target_sample_rate=4800, wav_length=5):
8
+ num_samples = wav_length * target_sample_rate
9
+
10
+ wav = _resample(wav, sample_rate, target_sample_rate)
11
+ wav = _mix_down(wav)
12
+ wav = _cut(wav, num_samples)
13
+ wav = _pad(wav, num_samples)
14
+
15
+ return wav
16
+
17
+ def _resample(wav, sample_rate, target_sample_rate):
18
+ if sample_rate != target_sample_rate:
19
+ resampler = torchaudio.transforms.Resample(sample_rate, target_sample_rate)
20
+ wav = resampler(wav)
21
+
22
+ return wav
23
+
24
+ def _mix_down(wav):
25
+ if wav.shape[0] > 1:
26
+ wav = torch.mean(wav, dim=0, keepdim=True)
27
+
28
+ return wav
29
+
30
+ def _cut(wav, num_samples):
31
+ if wav.shape[1] > num_samples:
32
+ wav = wav[:, :num_samples]
33
+
34
+ return wav
35
+
36
+ def _pad(wav, num_samples):
37
+ if wav.shape[1] < num_samples:
38
+ missing_samples = num_samples - wav.shape[1]
39
+ pad = (0, missing_samples)
40
+ wav = torch.nn.function.pad(wav, pad)
41
+
42
+ return wav