Het grootste probleem met de broncode van vocal remover python is dat het geen open source is. Dit betekent dat de code voor niemand beschikbaar is om te beoordelen en mogelijk te verbeteren. Dit kan leiden tot problemen met de betrouwbaarheid en algehele kwaliteit van de software.
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
Deze code importeert verschillende bibliotheken die zullen worden gebruikt in de functie vocal_remover.
De functie vocal_remover neemt een invoer van een bestandsnaam en leest het audiobestand in met behulp van de wavfile-bibliotheek.
Het neemt dan de absolute waarde van het signaal en vindt de lengte van het signaal.
Het signaal wordt vervolgens door een Fourier-transformatie geleid, die een lijst met frequenties creëert die overeenkomt met de lengte van het signaal.
Alle frequenties boven 1000 Hz worden in Fourier Transform op 0 gezet. Dit komt omdat de meeste vocalen binnen dit frequentiebereik liggen.
De inverse Fourier-transformatie wordt genomen om terug te gaan naar het tijdsdomein en dit laatste signaal wordt geretourneerd door de functie.
Werk met karakters
Er zijn een paar manieren om met karakters in Python te werken. Eén manier is om de functie str() te gebruiken om een tekenreeksrepresentatie van een teken te krijgen. De volgende code drukt bijvoorbeeld de letter "a" op het scherm af:
print(“De letter 'a'.”)
Een andere manier om met karakters in Python te werken, is door de functie chr() te gebruiken. Deze functie neemt een geheel getal als invoer en retourneert een teken dat overeenkomt met dat getal. De volgende code drukt bijvoorbeeld de letter "a" op het scherm af:
print ("Het teken 'a' is")
chr(1)
Tekst en objecten
In Python wordt tekst weergegeven door een reeks Unicode-tekens. Objecten zijn ook reeksen Unicode-tekens, maar ze kunnen ook andere gegevenstypen bevatten, zoals getallen en tekenreeksen.