-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathvc_convert.py
More file actions
83 lines (65 loc) · 2.47 KB
/
Copy pathvc_convert.py
File metadata and controls
83 lines (65 loc) · 2.47 KB
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
import librosa
import pandas as pd
import numpy as np
import os
import scipy.misc
import sklearn.utils
import util
import sys
import convert_to_voice
# Sri
#BASE_DATA_PATH = "/Users/sriramsomasundaram/Desktop/USC/Fall 2017/CSCI 599/DS_10283_2211/vcc2016_training/"
#SPECTRO_SAVE_PATH = "/Users/sriramsomasundaram/Desktop/USC/Fall 2017/CSCI 599/DS_10283_2211/vcc_processed/"
# CUTOFF_LEN = 258
CUTOFF_LEN = 256
# Andrew
SPECTRO_SAVE_PATH = '/hdd/cs599/spectro/'
BASE_DATA_PATH = '/hdd/cs599/VCTK-Corpus/wav48/'
SPEAKER_INFO_PATH = '/hdd/cs599/VCTK-Corpus/speaker-info.txt'
# Sample rate is 22050
def cut_audio(S):
if S.shape[1] < CUTOFF_LEN:
return None
cut_audio = S[:, :CUTOFF_LEN, :]
cut_audio = np.delete(cut_audio, -1, 0)
padded = np.zeros((256, CUTOFF_LEN, 3))
padded[:256, :, :2] = cut_audio
return padded
if __name__ == '__main__':
if len(sys.argv) > 1:
folder_name = sys.argv[1]
print('Loading for speaker %s' % folder_name)
folders = [folder_name]
else:
folders = os.listdir(BASE_DATA_PATH)
speaker_info = util.parse_speaker_info(SPEAKER_INFO_PATH)
folders = sklearn.utils.shuffle(folders)
for i, folder_name in enumerate(folders):
print(float(i) / float(len(folders)))
folder_path = os.path.join(BASE_DATA_PATH, folder_name)
for audio_file in os.listdir(folder_path):
x, fs = librosa.load(os.path.join(folder_path, audio_file))
S = util.specgram(x)
padded = cut_audio(S)
#padded = S
if padded is None:
continue
gender = speaker_info[folder_name]
if gender == "M":
folder = "male/"
elif gender == "F":
folder = "female/"
else:
raise ValueError("Could not determine save folder")
audio_file_name = audio_file.split('.')[0]
audio_file_path = os.path.join(SPECTRO_SAVE_PATH, folder,
audio_file_name + ".png")
#print('Saving to ' + audio_file_path)
padded = (((padded + 1.0) * 255.0) / 2.0)
padded = padded.astype(np.uint8)
scipy.misc.imsave(audio_file_path, padded)
#convert_to_voice.from_file(audio_file_path)
#raise ValueError()
#outfile = os.path.join(SPECTRO_SAVE_PATH, folder,
# audio_file_name + ".png")
#scipy.misc.toimage(padded, cmin=0.0, cmax=255).save(outfile)