بکندباز

چطور با استفاده از پایتون صدا ها را تغییر دهیم؟

برای تغییر صداها در پایتون، می‌توانید از کتابخانه‌های پردازش سیگنال‌های صوتی مانند librosa، pydub، و soundfile استفاده کنید. این کتابخانه‌ها امکاناتی برای بارگذاری، پردازش و ذخیره صداها در فرمت‌های مختلف دارند.

به عنوان مثال، برای تغییر فرکانس یک فایل صوتی با کمک کتابخانه librosa، می‌توانید این کد را استفاده کنید:

import librosa

# Load audio file
y, sr = librosa.load('audio_file.wav')

# Shift the pitch up by 2 half-steps
y_shifted = librosa.effects.pitch_shift(y, sr, n_steps=2)

# Save the shifted audio to a new file
librosa.output.write_wav('shifted_audio.wav', y_shifted, sr)

در این کد، ابتدا با استفاده از تابع librosa.load، فایل صوتی را بارگذاری کرده و به صورت یک آرایه از نمونه‌های صوتی و فرکانس نمونه‌برداری آن ذخیره می‌شود. سپس با استفاده از تابع librosa.effects.pitch_shift، فرکانس نمونه‌برداری را تغییر دهید.

در نهایت با استفاده از تابع librosa.output.write_wav، صدای تغییر یافته را در فرمت WAV به فایلی با نام shifted_audio.wav ذخیره می‌کنیم.

همچنین با استفاده از کتابخانه pydub می‌توانید به صورت ساده‌تر و با قابلیت های بیشتری، فایل های صوتی را پردازش کنید.

ابتدا باید کتابخانه pydub را نصب کنید. با استفاده از دستور زیر می‌توانید آن را نصب کنید:

pip install pydub

برای تغییر فرکانس یک فایل صوتی با استفاده از pydub، می‌توانید این کد را استفاده کنید:

from pydub import AudioSegment

# بارگیری فایل صوتی
audio = AudioSegment.from_file('audio_file.wav', format='wav')

# شیفت دادن گام به 2 نیم پرده بالاتر
new_audio = audio._spawn(audio.raw_data, 
    overrides={'frame_rate': int(audio.frame_rate * (2**(2/12)))})

# ذخیره فایل تغییر یافته در یک فایل جدید
new_audio.export('shifted_audio.wav', format='wav')

در این کد، ابتدا با استفاده از تابع AudioSegment.from_file، فایل صوتی را بارگذاری کرده و به صورت یک شیء AudioSegment ذخیره می‌کنیم. سپس با استفاده از تابع _spawn و تغییر فرکانس نمونه‌برداری، صدای تغییر یافته را به صورت یک شیء جدید AudioSegment ایجاد می‌کنیم. در نهایت با استفاده از تابع export، صدای تغییر یافته را در فرمت WAV به فایلی با نام shifted_audio.wav ذخیره می‌کنیم.

در این کد، خط زیر برای تغییر فرکانس صدا به کار می‌رود:

new_audio = audio._spawn(audio.raw_data, overrides={'frame_rate': int(audio.frame_rate * (2**(2/12)))})

این خط کد، فرکانس نمونه‌برداری فایل صوتی را با ضرب آن در عدد ۲ به توان ۲/۱۲ (۲ نیم‌پرده) برای افزایش دو نت، افزایش می‌دهد. عدد ۱/۱۲ نیم‌پرده، یک واحد از سیستم نتی موسیقی است که برای تغییر فرکانس صدا به کار می‌رود. به عنوان مثال، اگر فرکانس نمونه‌برداری فایل صوتی ۴۴۱۰۰ هرتز باشد، با اعمال این تغییر، فرکانس آن به ۴۹۵۰۵ هرتز افزایش پیدا می‌کند.

برای این کار، ابتدا با استفاده از audio._spawn(audio.raw_data)، یک نمونه جدید از فایل صوتی ساخته می‌شود. سپس با استفاده از overrides={'frame_rate': int(audio.frame_rate * (2**(2/12)))}، فرکانس نمونه‌برداری جدید بر اساس فرکانس نمونه‌برداری قبلی و تغییر فرکانس مورد نظر محاسبه می‌شود.

به طور خلاصه، این خط کد برای تغییر فرکانس صدای فایل صوتی به منظور تغییر دادن ارتفاع صدا (تغییر نت) به کار می‌رود.

همچنین، کتابخانه soundfile نیز امکانات مشابهی را برای پردازش صداها در اختیار شما قرار می‌دهد. با استفاده از این کتابخانه می‌توانید صداهای خام با فرمت‌های مختلف را بارگذاری کرده و به صورت آرایه‌ای از نمونه‌های صوتی در پایتون بررسی کنید. سپس با استفاده از تابع‌های موجود در این کتابخانه، مانند soundfile.write، می‌توانید صدای تغییر یافته را در فرمت مورد نظر خود ذخیره کنید.

zohreh

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*