Views
No views yet
1from datasets import Audio, load_dataset
2from scipy.io.wavfile import write as write_wav
3from transformers import VocosModel, VocosFeatureExtractor
4
5
6# load model and feature extractor
7model_id = "hf-audio/vocos-mel-24khz"
8feature_extractor = VocosFeatureExtractor.from_pretrained(model_id)
9model = VocosModel.from_pretrained(model_id, device_map="auto")
10sampling_rate = feature_extractor.sampling_rate
11
12# load audio sample
13ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
14ds = ds.cast_column("audio", Audio(sampling_rate=sampling_rate))
15audio = ds[0]["audio"]["array"]
16
17inputs = feature_extractor(audio=audio, sampling_rate=sampling_rate).to(model.device)
18print(inputs.audio_spectrogram.shape)
19# -- (batch, mel, frame): [1, 100, 549]
20outputs = model(**inputs)
21audio_vocos = outputs.audio
22print(audio_vocos.shape)
23# -- (batch, time): [1, 140288]
24
25# save audio to file
26write_wav("vocos_mel.wav", sampling_rate, audio_vocos[0].detach().cpu().numpy())padding_mask output VocosFeatureExtractor can be used to get equivalent outputs as single-file processing.1from datasets import Audio, load_dataset
2from scipy.io.wavfile import write as write_wav
3from transformers import VocosModel, VocosFeatureExtractor
4
5
6n_audio = 2 # number of audio samples to process in a batch
7
8# load model and feature extractor
9model_id = "hf-audio/vocos-mel-24khz"
10feature_extractor = VocosFeatureExtractor.from_pretrained(model_id)
11model = VocosModel.from_pretrained(model_id, device_map="auto")
12sampling_rate = feature_extractor.sampling_rate
13
14# load audio sample
15ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
16ds = ds.cast_column("audio", Audio(sampling_rate=sampling_rate))
17audio = [audio_sample["array"] for audio_sample in ds[-n_audio:]["audio"]]
18print(f"Input audio shape: {[_sample.shape for _sample in audio]}")
19# Input audio shape: [(170760,), (107520,)]
20
21# prepare batch
22inputs = feature_extractor(audio=audio, sampling_rate=sampling_rate, device=model.device)
23print(inputs.audio_spectrogram.shape)
24# torch.Size([2, 100, 669])
25
26# apply model
27outputs = model(**inputs)
28audio_vocos = outputs.audio
29print(audio_vocos.shape)
30# torch.Size([2, 171008])
31
32# save audio to file
33for i in range(n_audio):
34 # remove padding
35 padding_mask = inputs.padding_mask[i].bool()
36 valid_audio = audio_vocos[i][padding_mask].detach().cpu().numpy()
37 print(f"Output audio shape {i}: {valid_audio.shape}")
38 # Output audio shape 0: (170760,)
39 # Output audio shape 1: (107520,)
40 write_wav(f"vocos_mel_{i}.wav", sampling_rate, valid_audio)
41
42# save original audio to file
43for i in range(n_audio):
44 write_wav(f"original_{i}.wav", sampling_rate, audio[i])
45