
Основният проблем с изходния код на python за премахване на гласове е, че той не е с отворен код. Това означава, че кодът не е достъпен за преглед и евентуално подобряване на кода. Това може да доведе до проблеми с надеждността и цялостното качество на софтуера.
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
Този код импортира различни библиотеки, които ще бъдат използвани във функцията vocal_remover.
Функцията vocal_remover приема въвеждане на име на файл и чете аудио файла с помощта на библиотеката wavfile.
След това взема абсолютната стойност на сигнала и намира дължината на сигнала.
След това сигналът се подлага на трансформация на Фурие, която създава списък от честоти, съответстващи на дължината на сигнала.
Всички честоти над 1000 Hz са зададени на 0 в трансформацията на Фурие. Това е така, защото повечето вокали се намират в този диапазон от честоти.
Обратното преобразуване на Фурие се взема, за да се върне към времевия домейн и този краен сигнал се връща от функцията.
Работа с герои
Има няколко начина за работа със знаци в Python. Един от начините е да използвате функцията str(), за да получите низово представяне на символ. Например следният код отпечатва буквата „а“ на екрана:
print("Буквата 'а'.")
Друг начин за работа със знаци в Python е да използвате функцията chr(). Тази функция приема цяло число като вход и връща символ, съответстващ на това число. Например следният код отпечатва буквата „а“ на екрана:
print(“Символът 'a' е")
chr (1)
Текст и обекти
В Python текстът е представен от поредица от Unicode знаци. Обектите също са поредици от Unicode символи, но могат да съдържат и други типове данни, като числа и низове.