Pagrindinė vokalo šalinimo šaltinio kodo python problema yra ta, kad jis nėra atvirojo kodo. Tai reiškia, kad kodo niekas negali peržiūrėti ir galbūt patobulinti. Dėl to gali kilti problemų dėl programinės įrangos patikimumo ir bendros kokybės.
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
Šis kodas importuoja įvairias bibliotekas, kurios bus naudojamos vocal_remover funkcijai.
Funkcija vocal_remover įveda failo pavadinimą ir nuskaito garso failą naudodama wavfile biblioteką.
Tada jis paima absoliučią signalo vertę ir nustato signalo ilgį.
Tada signalas perduodamas Furjė transformacijai, kuri sukuria dažnių sąrašą, atitinkantį signalo ilgį.
Visi dažniai, viršijantys 1000 Hz, Furjė transformacijoje nustatomi į 0. Taip yra todėl, kad dauguma vokalo yra šiame dažnių diapazone.
Norint grįžti į laiko sritį, imama atvirkštinė Furjė transformacija, o funkcija grąžina šį galutinį signalą.
Darbas su personažais
Yra keletas būdų, kaip dirbti su simboliais Python. Vienas iš būdų yra naudoti str() funkciją, kad gautumėte simbolio eilutę. Pavyzdžiui, šis kodas spausdina raidę „a“ ekrane:
spausdinti („Raidė „a“).
Kitas būdas dirbti su simboliais Python yra naudoti chr() funkciją. Ši funkcija kaip įvestį paima sveikąjį skaičių ir grąžina tą skaičių atitinkantį simbolį. Pavyzdžiui, šis kodas spausdina raidę „a“ ekrane:
print („A simbolis yra“)
chr (1)
Tekstas ir objektai
Python sistemoje tekstas vaizduojamas Unicode simbolių seka. Objektai taip pat yra unikodo simbolių sekos, tačiau juose taip pat gali būti kitų tipų duomenų, pvz., skaičių ir eilučių.