Hovedproblemet med vokalfjerner kildekode python er at det ikke er åpen kildekode. Dette betyr at koden ikke er tilgjengelig for noen å vurdere og potensielt forbedre. Dette kan føre til problemer med programvarens pålitelighet og generelle 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
Denne koden importerer forskjellige biblioteker som vil bli brukt i vocal_remover-funksjonen.
Vocal_remover-funksjonen tar inndata av et filnavn, og leser inn lydfilen ved hjelp av wavfile-biblioteket.
Den tar så den absolutte verdien av signalet, og finner lengden på signalet.
Signalet blir deretter satt gjennom en Fourier Transform, som lager en liste over frekvenser som tilsvarer lengden på signalet.
Alle frekvenser over 1000 Hz er satt til 0 i Fourier Transform. Dette er fordi de fleste vokaler ligger innenfor dette frekvensområdet.
Den inverse Fourier-transformasjonen tas for å komme tilbake til tidsdomenet, og dette sluttsignalet returneres av funksjonen.
Arbeid med karakterer
Det er noen få måter å jobbe med karakterer på i Python. En måte er å bruke str()-funksjonen for å få en strengrepresentasjon av et tegn. Følgende kode skriver for eksempel ut bokstaven "a" på skjermen:
print(“Bokstaven 'a'.”)
En annen måte å jobbe med tegn i Python på er å bruke chr()-funksjonen. Denne funksjonen tar et heltall som input og returnerer et tegn som tilsvarer det tallet. Følgende kode skriver for eksempel ut bokstaven "a" på skjermen:
print ("Tegnet 'a' er")
chr(1)
Tekst og objekter
I Python er tekst representert av en sekvens av Unicode-tegn. Objekter er også sekvenser av Unicode-tegn, men de kan også inneholde andre datatyper, for eksempel tall og strenger.