"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية خفض درجة الصوت لأغنية باستخدام لغة بايثون

كيفية خفض درجة الصوت لأغنية باستخدام لغة بايثون

تم النشر بتاريخ 2024-10-31
تصفح:654

How to Down-Pitch A Song Using Python

إذا كنت ترغب في تغيير درجة صوت الأغنية دون تغيير سرعتها، فهذه التدوينة مناسبة لك. يعد تغيير طبقة الصوت مهمة شائعة للموسيقيين ومنسقي الأغاني ومهندسي الصوت. في هذا البرنامج التعليمي، سوف نستكشف كيفية خفض درجة الصوت لأغنية باستخدام 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}")

توضيح

  1. استيراد المكتبات:
    نقوم باستيراد نظام التشغيل للعمل مع أدلة الملفات وAudioSegment من pydub لمعالجة الملفات الصوتية.

  2. وظيفة تغيير درجة الصوت:
    تقوم وظيفة pitch_shift بضبط معدل عينة الصوت. عندما نغير معدل العينة، تتغير درجة الصوت. في هذه الحالة، نقوم بحساب معدل العينة الجديد لتغيير درجة الصوت بمقدار نصف نغمة واحدة باستخدام الصيغة:

    new_sample_rate = int(audio.frame_rate * (2.0 ** (semitones / 12.0)))

  3. مجلدات الإدخال والإخراج:
    نحدد المجلدات التي سنقرأ فيها الملفات الصوتية ونحفظ الإصدارات ذات درجة الصوت المتغيرة. إذا كان مجلد الإخراج غير موجود، فسيتم إنشاؤه.

  4. تكرار الأغاني:
    باستخدام os.listdir()، نقوم بتكرار كل ملف في مجلد الأغاني. يتحقق البرنامج النصي مما إذا كان الملف ملفًا صوتيًا (.mp3 أو .wav) قبل معالجته. لكل ملف:

    • يقوم بتحميل الصوت.
    • يتم تطبيق وظيفة pitch_shift، مما يؤدي إلى خفض درجة الصوت بمقدار نصف خطوة.
    • يتم تصدير الصوت المتغير إلى مجلد الإخراج.
  5. التصدير والتعليقات:
    بمجرد الانتهاء من المعالجة، يتم حفظ الأغنية ذات درجة الصوت المتغيرة في مجلد الإخراج، ويتم طباعة رسالة تأكيد.

تشغيل البرنامج النصي

تأكد من وجود ملفاتك الصوتية في مجلد الأغاني ثم قم بتشغيل البرنامج النصي:

python -m pitch_down.py

سيتم حفظ الملفات التي تم تغيير درجة الصوت في مجلد الإخراج.

التخصيص

يمكنك بسهولة تعديل هذا البرنامج النصي إلى:

  • ارفع الصوت عن طريق تمرير قيمة موجبة (على سبيل المثال، pitch_shift(audio, 1) لنصف خطوة لأعلى).

  • قم بمعالجة تنسيقات الملفات المختلفة عن طريق إضافة امتدادات أخرى مثل .ogg أو .flac إلى الفحص الشرطي.

  • التحويل بعدد مختلف من النغمات النصفية عن طريق ضبط وسيطة النغمات النصفية.

خاتمة

يعد هذا البرنامج النصي طريقة بسيطة ولكنها فعالة لتحويل ملفات الصوت المتعددة باستخدام Python. باستخدام pydub وffmpeg، يمكنك معالجة الملفات الصوتية بكميات كبيرة، مما يجعل المهام مثل تصحيح طبقة الصوت أو إعداد الصوت أسهل للموسيقيين أو المنتجين أو أي شخص يعمل في مجال الصوت.

لا تتردد في تجربة هذا البرنامج النصي ومعرفة كيف يمكنك تكييفه مع احتياجاتك. برمجة سعيدة!

بيان الافراج تم نشر هذه المقالة على: https://dev.to/highcenburg/how-to-down-pitch-a-song-using-python-1opc?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] للحذف هو - هي
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3