إذا كنت ترغب في تغيير درجة صوت الأغنية دون تغيير سرعتها، فهذه التدوينة مناسبة لك. يعد تغيير طبقة الصوت مهمة شائعة للموسيقيين ومنسقي الأغاني ومهندسي الصوت. في هذا البرنامج التعليمي، سوف نستكشف كيفية خفض درجة الصوت لأغنية باستخدام Python ومكتبة pydub وتطبيق هذه العملية على أغانٍ متعددة في مجلد تلقائيًا.
في الموسيقى، يعني تغيير طبقة الصوت تغيير طبقة نغمة الأغنية (رفعها أو خفضها) دون تسريعها أو إبطائها. يمكن أن يكون هذا مفيدًا لـ:
مطابقة مفتاح أغنية مع مسار آخر
نقل الأغاني للآلات التي تم ضبطها على مفتاح مختلف
إنشاء ريمكسات أو مزج
سنستخدم مكتبة Python pydub لمعالجة الملفات الصوتية. يمكنك تثبيته باستخدام النقطة:
pip install pydub
بالإضافة إلى ذلك، يتطلب pydub ffmpeg للتعامل مع الملفات الصوتية مثل MP3. يمكنك تثبيت ffmpeg عبر الطرفية:
sudo apt install ffmpeg
الآن دعنا نتعمق في برنامج Python النصي الذي يقوم بأتمتة تغيير درجة الصوت لأغاني متعددة في مجلد. يتنقل البرنامج النصي عبر الملفات الموجودة في مجلد الأغاني، ويخفضها بمقدار نصف خطوة (نصف نغمة = -1)، ويحفظ الملفات الجديدة في مجلد الإخراج.
import os from pydub import AudioSegment # Function to shift pitch down def pitch_shift(audio, semitones): # Adjust sample rate to shift pitch new_sample_rate = int(audio.frame_rate * (2.0 ** (semitones / 12.0))) return audio._spawn(audio.raw_data, overrides={'frame_rate': new_sample_rate}).set_frame_rate(audio.frame_rate) # Input and output folders input_folder = './songs' output_folder = './output' # Ensure the output folder exists os.makedirs(output_folder, exist_ok=True) # Loop through all files in the songs folder for filename in os.listdir(input_folder): # Check if the file is an audio file (e.g., mp3 or wav) if filename.endswith(".mp3") or filename.endswith(".wav"): # Construct the full file path input_path = os.path.join(input_folder, filename) output_path = os.path.join(output_folder, filename) # Load the audio file audio = AudioSegment.from_file(input_path) # Shift pitch down by a half-step (semitone = -1) shifted_audio = pitch_shift(audio, -1) # Export the pitch-shifted audio to the output folder shifted_audio.export(output_path, format="mp3") print(f"Processed and saved: {output_path}")
استيراد المكتبات:
نقوم باستيراد نظام التشغيل للعمل مع أدلة الملفات وAudioSegment من pydub لمعالجة الملفات الصوتية.
وظيفة تغيير درجة الصوت:
تقوم وظيفة pitch_shift بضبط معدل عينة الصوت. عندما نغير معدل العينة، تتغير درجة الصوت. في هذه الحالة، نقوم بحساب معدل العينة الجديد لتغيير درجة الصوت بمقدار نصف نغمة واحدة باستخدام الصيغة:
new_sample_rate = int(audio.frame_rate * (2.0 ** (semitones / 12.0)))
مجلدات الإدخال والإخراج:
نحدد المجلدات التي سنقرأ فيها الملفات الصوتية ونحفظ الإصدارات ذات درجة الصوت المتغيرة. إذا كان مجلد الإخراج غير موجود، فسيتم إنشاؤه.
تكرار الأغاني:
باستخدام os.listdir()، نقوم بتكرار كل ملف في مجلد الأغاني. يتحقق البرنامج النصي مما إذا كان الملف ملفًا صوتيًا (.mp3 أو .wav) قبل معالجته. لكل ملف:
التصدير والتعليقات:
بمجرد الانتهاء من المعالجة، يتم حفظ الأغنية ذات درجة الصوت المتغيرة في مجلد الإخراج، ويتم طباعة رسالة تأكيد.
تأكد من وجود ملفاتك الصوتية في مجلد الأغاني ثم قم بتشغيل البرنامج النصي:
python -m pitch_down.py
سيتم حفظ الملفات التي تم تغيير درجة الصوت في مجلد الإخراج.
يمكنك بسهولة تعديل هذا البرنامج النصي إلى:
ارفع الصوت عن طريق تمرير قيمة موجبة (على سبيل المثال، pitch_shift(audio, 1) لنصف خطوة لأعلى).
قم بمعالجة تنسيقات الملفات المختلفة عن طريق إضافة امتدادات أخرى مثل .ogg أو .flac إلى الفحص الشرطي.
التحويل بعدد مختلف من النغمات النصفية عن طريق ضبط وسيطة النغمات النصفية.
يعد هذا البرنامج النصي طريقة بسيطة ولكنها فعالة لتحويل ملفات الصوت المتعددة باستخدام Python. باستخدام pydub وffmpeg، يمكنك معالجة الملفات الصوتية بكميات كبيرة، مما يجعل المهام مثل تصحيح طبقة الصوت أو إعداد الصوت أسهل للموسيقيين أو المنتجين أو أي شخص يعمل في مجال الصوت.
لا تتردد في تجربة هذا البرنامج النصي ومعرفة كيف يمكنك تكييفه مع احتياجاتك. برمجة سعيدة!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3