Głównym problemem związanym z pythonem do usuwania wokali jest to, że nie jest to open source. Oznacza to, że kod nie jest dostępny dla nikogo do przejrzenia i potencjalnego ulepszenia. Może to prowadzić do problemów z niezawodnością oprogramowania i ogólną jakością.
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
Ten kod importuje różne biblioteki, które będą używane w funkcji vocal_remover.
Funkcja vocal_remover pobiera nazwę pliku i wczytuje plik audio za pomocą biblioteki wavfile.
Następnie bierze wartość bezwzględną sygnału i znajduje długość sygnału.
Sygnał jest następnie przepuszczany przez transformatę Fouriera, która tworzy listę częstotliwości odpowiadających długości sygnału.
Wszystkie częstotliwości powyżej 1000 Hz są ustawione na 0 w transformacie Fouriera. To dlatego, że większość wokali leży w tym zakresie częstotliwości.
Odwrotna transformata Fouriera jest wykonywana w celu powrotu do dziedziny czasu, a ten końcowy sygnał jest zwracany przez funkcję.
Pracuj z postaciami
Istnieje kilka sposobów pracy ze znakami w Pythonie. Jednym ze sposobów jest użycie funkcji str() w celu uzyskania łańcuchowej reprezentacji znaku. Na przykład poniższy kod wyświetla literę „a” na ekranie:
print("Litera 'a'.")
Innym sposobem pracy ze znakami w Pythonie jest użycie funkcji chr(). Ta funkcja pobiera liczbę całkowitą jako dane wejściowe i zwraca znak odpowiadający tej liczbie. Na przykład poniższy kod wyświetla literę „a” na ekranie:
print("Znak 'a' to")
chr(1)
Tekst i obiekty
W Pythonie tekst jest reprezentowany przez sekwencję znaków Unicode. Obiekty są również sekwencjami znaków Unicode, ale mogą również zawierać inne typy danych, takie jak liczby i ciągi znaków.