المشكلة الرئيسية في شفرة المصدر بيثون المزيل الصوتي هي أنه ليس مفتوح المصدر. هذا يعني أن الكود غير متاح لأي شخص لمراجعته وربما تحسينه. يمكن أن يؤدي هذا إلى مشاكل تتعلق بموثوقية البرنامج وجودته الإجمالية.
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 هرتز مضبوطة على 0 في تحويل فورييه. هذا لأن معظم الأصوات تقع ضمن نطاق الترددات هذا.
يتم أخذ تحويل فورييه المعكوس من أجل العودة إلى المجال الزمني ، ويتم إرجاع هذه الإشارة النهائية بواسطة الوظيفة.
العمل مع الشخصيات
هناك عدة طرق للعمل مع الشخصيات في بايثون. إحدى الطرق هي استخدام الدالة str () للحصول على سلسلة تمثيل للحرف. على سبيل المثال ، يقوم الكود التالي بطباعة الحرف "a" على الشاشة:
print ("الحرف" a ".)
هناك طريقة أخرى للعمل مع الأحرف في بايثون وهي استخدام وظيفة chr (). تأخذ هذه الوظيفة عددًا صحيحًا كمدخلات وتعيد الحرف المقابل لهذا الرقم. على سبيل المثال ، يقوم الكود التالي بطباعة الحرف "a" على الشاشة:
print ("الحرف" a "هو")
سي اتش ار (1)
النص والكائنات
في Python ، يتم تمثيل النص من خلال سلسلة من أحرف Unicode. الكائنات هي أيضًا تسلسلات من أحرف Unicode ، ولكن يمكن أن تحتوي أيضًا على أنواع بيانات أخرى ، مثل الأرقام والسلاسل.