Spaces:
Runtime error
Runtime error
Create preprocess file
Browse files- 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
|