A fő probléma a Vocal Remover forráskóddal, a pythonnal az, hogy nem nyílt forráskódú. Ez azt jelenti, hogy a kód senki számára nem áll rendelkezésre, hogy áttekintse és esetleg javítsa. Ez problémákat okozhat a szoftver megbízhatóságában és általános minőségében.
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
Ez a kód különféle könyvtárakat importál, amelyeket a vocal_remover függvény használ.
A vocal_remover függvény beír egy fájlnevet, és a wavfile könyvtár segítségével olvassa be az audiofájlt.
Ezután veszi a jel abszolút értékét, és meghatározza a jel hosszát.
A jel ezután egy Fourier-transzformáción megy keresztül, amely létrehozza a jel hosszának megfelelő frekvenciák listáját.
Minden 1000 Hz feletti frekvencia 0-ra van állítva a Fourier-transzformációban. Ennek az az oka, hogy a legtöbb ének ezen a frekvenciatartományon belül van.
Az inverz Fourier-transzformációt az időtartományba való visszajutáshoz veszik fel, és ezt a végső jelet adja vissza a függvény.
Munka karakterekkel
A Pythonban többféleképpen is dolgozhat karakterekkel. Az egyik módja az str() függvény használata egy karakter karakterlánc-reprezentációjához. Például a következő kód az „a” betűt írja ki a képernyőn:
print ("Az "a" betű.)
A karakterekkel való munka másik módja a Pythonban a chr() függvény használata. Ez a függvény egy egész számot vesz fel bemenetként, és a számnak megfelelő karaktert ad vissza. Például a következő kód az „a” betűt írja ki a képernyőn:
print ("Az "a" karakter az)
chr(1)
Szöveg és objektumok
A Pythonban a szöveget Unicode karakterek sorozata képviseli. Az objektumok szintén Unicode-karakterek sorozatai, de más adattípusokat is tartalmazhatnak, például számokat és karakterláncokat.