Vấn đề chính với mã nguồn loại bỏ giọng nói python là nó không phải là nguồn mở. Điều này có nghĩa là mã không có sẵn để bất kỳ ai xem xét và có khả năng cải thiện. Điều này có thể dẫn đến các vấn đề về độ tin cậy và chất lượng tổng thể của phần mềm.
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
Mã này đang nhập nhiều thư viện khác nhau sẽ được sử dụng trong hàm vocal_remover.
Hàm vocal_remover nhận đầu vào tên tệp và đọc tệp âm thanh bằng thư viện wavfile.
Sau đó, nó lấy giá trị tuyệt đối của tín hiệu và tìm độ dài của tín hiệu.
Sau đó, tín hiệu được đưa qua Biến đổi Fourier, tạo ra danh sách các tần số tương ứng với độ dài của tín hiệu.
Tất cả các tần số trên 1000 Hz được đặt thành 0 trong Biến đổi Fourier. Điều này là do hầu hết giọng hát đều nằm trong dải tần số này.
Biến đổi Fourier nghịch đảo được thực hiện để quay trở lại miền thời gian và tín hiệu cuối cùng này được hàm trả về.
Làm việc với các ký tự
Có một số cách để làm việc với các ký tự trong Python. Một cách là sử dụng hàm str() để lấy biểu diễn chuỗi của một ký tự. Ví dụ: đoạn mã sau in chữ “a” trên màn hình:
print(“Chữ cái 'a'.”)
Một cách khác để làm việc với các ký tự trong Python là sử dụng hàm chr(). Hàm này lấy một số nguyên làm đầu vào và trả về một ký tự tương ứng với số đó. Ví dụ: đoạn mã sau in chữ “a” trên màn hình:
print(“Ký tự ‘a’ là”)
chr(1)
Văn bản và đối tượng
Trong Python, văn bản được biểu thị bằng một chuỗi ký tự Unicode. Các đối tượng cũng là các chuỗi ký tự Unicode, nhưng chúng cũng có thể chứa các kiểu dữ liệu khác, chẳng hạn như số và chuỗi.