vocal remover 源代码 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() 函数来获取字符的字符串表示形式。 例如,以下代码在屏幕上打印字母“a”:
print(“字母‘a’。”)
在 Python 中处理字符的另一种方法是使用 chr() 函数。 此函数将整数作为输入并返回与该数字对应的字符。 例如,以下代码在屏幕上打印字母“a”:
print(“字符‘a’是”)
chr(1)
文本和对象
在 Python 中,文本由一系列 Unicode 字符表示。 对象也是 Unicode 字符序列,但它们也可以包含其他数据类型,例如数字和字符串。