Glavni problem sa izvornim kodom pythona za uklanjanje vokala je taj što nije otvorenog koda. To znači da kod nije dostupan nikome za pregled i potencijalno poboljšanje. To može dovesti do problema sa pouzdanošću softvera i ukupnim kvalitetom.
import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile
from scipy import signal
from scipy.fftpack import fft, ifft
import os
def vocal_remover(filename):
# read in audio file
fs, data = wavfile.read(filename)
# take the absolute value of the signal
data = np.absolute(data)
# find the length of the signal
N = len(data)
# take the Fourier Transform of the signal
fourier = fft(data)
# create a list of frequencies corresponding to the length of the signal
freqs = np.fft.fftfreq(N, 1/fs)
# find all frequencies above 1000 Hz (1 kHz) and set them to 0 in Fourier Transform
for i in range (len(fourier)): if abs(freqs[i]) > 1000: fourier[i] = 0+0j
# take inverse Fourier Transform to get back to time domain
inverse_fourier = ifft(fourier).real
return inverse_fourier
Ovaj kod uvozi različite biblioteke koje će se koristiti u funkciji vocal_remover.
Funkcija vocal_remover uzima unos imena datoteke i čita audio datoteku koristeći biblioteku wavfile.
Zatim uzima apsolutnu vrijednost signala i pronalazi dužinu signala.
Signal se zatim prolazi kroz Fourierovu transformaciju, koja stvara listu frekvencija koje odgovaraju dužini signala.
Sve frekvencije iznad 1000 Hz su postavljene na 0 u Fourierovoj transformaciji. To je zato što većina vokala leži unutar ovog opsega frekvencija.
Inverzna Fourierova transformacija se uzima da bi se vratila na vremenski domen, a ovaj konačni signal funkcija vraća.
Rad sa likovima
Postoji nekoliko načina rada sa likovima u Pythonu. Jedan od načina je korištenje funkcije str() da dobijete string prikaz karaktera. Na primjer, sljedeći kod ispisuje slovo “a” na ekranu:
print(“Slovo 'a'.”)
Drugi način rada sa znakovima u Pythonu je korištenje funkcije chr(). Ova funkcija uzima cijeli broj kao ulaz i vraća znak koji odgovara tom broju. Na primjer, sljedeći kod ispisuje slovo “a” na ekranu:
print(“Znak 'a' je”)
chr(1)
Tekst i objekti
U Pythonu, tekst je predstavljen nizom Unicode znakova. Objekti su također nizovi Unicode znakova, ali mogu sadržavati i druge tipove podataka, kao što su brojevi i nizovi.