Det största problemet med vocal remover källkod python är att det inte är öppen källkod. Det betyder att koden inte är tillgänglig för någon att granska och eventuellt förbättra. Detta kan leda till problem med programvarans tillförlitlighet och övergripande kvalitet.
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
Den här koden importerar olika bibliotek som kommer att användas i vocal_remover-funktionen.
Funktionen vocal_remover tar en inmatning av ett filnamn och läser in ljudfilen med hjälp av wavfile-biblioteket.
Den tar sedan signalens absoluta värde och hittar signalens längd.
Signalen förs sedan genom en Fouriertransform, som skapar en lista med frekvenser som motsvarar signalens längd.
Alla frekvenser över 1000 Hz är inställda på 0 i Fourier Transform. Detta beror på att de flesta sång ligger inom detta frekvensområde.
Den inversa Fouriertransformen tas för att komma tillbaka till tidsdomänen, och denna slutsignal returneras av funktionen.
Arbeta med karaktärer
Det finns några sätt att arbeta med karaktärer i Python. Ett sätt är att använda str()-funktionen för att få en strängrepresentation av ett tecken. Följande kod skriver till exempel ut bokstaven "a" på skärmen:
print(“Bokstaven 'a'.”)
Ett annat sätt att arbeta med tecken i Python är att använda chr()-funktionen. Denna funktion tar ett heltal som indata och returnerar ett tecken som motsvarar det numret. Följande kod skriver till exempel ut bokstaven "a" på skärmen:
print(”Tecknet 'a' är”)
chr(1)
Text och objekt
I Python representeras text av en sekvens av Unicode-tecken. Objekt är också sekvenser av Unicode-tecken, men de kan också innehålla andra datatyper, som siffror och strängar.