ปัญหาหลักของซอร์สโค้ด 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
จากนั้นใช้ค่าสัมบูรณ์ของสัญญาณและหาความยาวของสัญญาณ
สัญญาณจะถูกส่งผ่าน Fourier Transform ซึ่งสร้างรายการความถี่ที่สอดคล้องกับความยาวของสัญญาณ
ความถี่ทั้งหมดที่สูงกว่า 1000 Hz จะถูกตั้งค่าเป็น 0 ในการแปลงฟูเรียร์ นี่เป็นเพราะเสียงร้องส่วนใหญ่อยู่ในช่วงความถี่นี้
การแปลงฟูริเยร์ผกผันถูกนำมาใช้เพื่อกลับไปยังโดเมนเวลา และสัญญาณสุดท้ายจะถูกส่งกลับโดยฟังก์ชัน
ทำงานกับตัวละคร
มีสองสามวิธีในการทำงานกับอักขระใน Python วิธีหนึ่งคือการใช้ฟังก์ชัน str() เพื่อรับการแสดงสตริงของอักขระ ตัวอย่างเช่น โค้ดต่อไปนี้พิมพ์ตัวอักษร “a” บนหน้าจอ:
พิมพ์ (“ตัวอักษร 'a'.”)
อีกวิธีหนึ่งในการทำงานกับอักขระใน Python คือการใช้ฟังก์ชัน chr() ฟังก์ชันนี้ใช้จำนวนเต็มเป็นอินพุตและส่งกลับอักขระที่ตรงกับตัวเลขนั้น ตัวอย่างเช่น โค้ดต่อไปนี้พิมพ์ตัวอักษร “a” บนหน้าจอ:
พิมพ์ (“ตัวอักษร 'a' คือ”)
ch(1)
ข้อความและวัตถุ
ใน Python ข้อความจะแสดงด้วยลำดับของอักขระ Unicode ออบเจกต์ยังเป็นลำดับของอักขระ Unicode แต่สามารถมีชนิดข้อมูลอื่นๆ ได้ด้วย เช่น ตัวเลขและสตริง