Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Panduan untuk menggunakan perpustakaan pemprosesan audio Python

Panduan untuk menggunakan perpustakaan pemprosesan audio Python

WBOY
WBOYasal
2024-01-22 11:30:071176semak imbas

Panduan untuk menggunakan perpustakaan pemprosesan audio Python

Pemprosesan audio merupakan cabang penting dalam bidang multimedia Selain industri muzik, ia juga merupakan kemahiran penting dalam kecerdasan buatan, interaksi manusia-komputer dan bidang lain. Dalam Python, perpustakaan pemprosesan audio agak biasa digunakan, dan ia boleh membantu kami mengumpul, memproses dan menganalisis audio. Artikel ini akan memperkenalkan beberapa perpustakaan pemprosesan audio Python yang biasa digunakan dan cara menggunakannya.

1. PyAudio

PyAudio ialah modul Python yang boleh membantu kami melaksanakan fungsi pengumpulan audio dan main balik dalam Python. Ia menyokong berbilang sistem pengendalian dan boleh digunakan bukan sahaja pada sistem Windows, tetapi juga pada Linux dan Mac OS X. Menggunakan PyAudio, kami boleh membaca dan menulis fail audio dengan mudah, serta merakam dan memainkan audio dalam masa nyata.

Pemasangan PyAudio sangat mudah, anda hanya perlu memasangnya melalui arahan pip:

pip install pyaudio

Berikut ialah contoh mudah yang menunjukkan cara menggunakan PyAudio untuk membaca fail audio:

import pyaudio
import wave

# 打开 wav 文件
wave_file = wave.open('test.wav', 'rb')

# 初始化 PyAudio
p = pyaudio.PyAudio()

# 打开音频流
stream = p.open(format=p.get_format_from_width(wave_file.getsampwidth()),
                channels=wave_file.getnchannels(),
                rate=wave_file.getframerate(),
                output=True)

# 读取数据并播放
data = wave_file.readframes(1024)
while data != b'':
    stream.write(data)
    data = wave_file.readframes(1024)

# 停止音频流和 PyAudio
stream.stop_stream()
stream.close()
p.terminate()

# 关闭 wav 文件
wave_file.close()

Kod di atas mula-mula menggunakan gelombang modul untuk membuka fail audio Kemudian gunakan modul PyAudio untuk membuka strim audio, membaca data dalam fail audio dan menulisnya ke strim audio. Akhir sekali, tutup strim audio dan PyAudio apabila anda selesai memainkan audio.

2. SciPy

SciPy ialah perpustakaan Python untuk pengkomputeran saintifik, ia menyokong pelbagai aplikasi saintifik, termasuk pemprosesan isyarat, pemprosesan imej, pengoptimuman, dll. Dalam pemprosesan audio, kami biasanya menggunakan modul isyarat dalam SciPy untuk melaksanakan operasi pemprosesan isyarat seperti penapisan.

Pemasangan SciPy juga sangat mudah, hanya gunakan arahan pip untuk memasangnya:

pip install scipy

Berikut ialah contoh mudah yang menunjukkan cara menggunakan SciPy untuk menapis data audio:

import scipy.signal as signal
import scipy.io.wavfile as wav

# 读取音频文件
rate, data = wav.read("test.wav")

# 构造滤波器
nyq_rate = rate / 2.0
cutoff_freq = 2000.0
normal_cutoff = cutoff_freq / nyq_rate
b, a = signal.butter(4, normal_cutoff, btype='lowpass')

# 滤波处理
filtered_data = signal.lfilter(b, a, data)

# 写入输出文件
wav.write("filtered_test.wav", rate, filtered_data.astype(data.dtype))

Dalam kod di atas, modul wav digunakan untuk membaca data audio Asal, kemudian bina penapis laluan rendah dan gunakan fungsi signal.lfilter untuk menapis data asal. Akhir sekali, gunakan modul wav untuk menulis data audio yang diproses ke fail output.

3. LibROSA

LibROSA ialah perpustakaan Python untuk analisis muzik dan audio. Ia menyokong berbilang format fail audio dan menyediakan banyak fungsi untuk memproses data audio. Menggunakan LibROSA, kami boleh melakukan operasi dengan mudah seperti pengekstrakan ciri audio, pemprosesan isyarat audio dan analisis. Selain itu, LibROSA juga merangkum algoritma pengekstrakan ciri yang biasa digunakan, seperti domain masa audio dan analisis domain frekuensi, bank penapis frekuensi Mel, Mel cepstrum, MFCC, dsb.

Kaedah pemasangan LibROSA:

pip install librosa

Berikut ialah contoh mudah yang menunjukkan cara menggunakan LibROSA untuk analisis audio:

import librosa

# 读取音频文件
y, sr = librosa.load("test.wav")

# 提取音频特征
# STFT
D = librosa.stft(y)

# 梅尔频率滤波器组 (melspectrogram)
S = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=128,
                                    fmax=8000)

# 梅尔倒谱系数 (MFCCs)
mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13)

# 显示特征提取结果
import matplotlib.pyplot as plt
librosa.display.specshow(librosa.power_to_db(S, ref=np.max),
                            y_axis='mel', fmax=8000,
                            x_axis='time')

plt.colorbar(format='%+2.0f dB')
plt.title('Mel spectrogram')
plt.tight_layout()
plt.show()

Dalam kod di atas, gunakan fungsi librosa.load untuk membaca data audio, dan kemudian gunakan librosa.stft, librosa.feature. Fungsi seperti melspectrogram dan librosa.feature.mfcc mengekstrak ciri daripada audio dan memaparkan peta ciri audio yang diproses.

Ringkasan

Artikel ini memperkenalkan tiga perpustakaan pemprosesan audio Python yang biasa digunakan, termasuk PyAudio, SciPy dan LibROSA, dan menunjukkan penggunaannya. Perpustakaan ini boleh melaksanakan fungsi seperti pengumpulan, pemprosesan dan analisis audio dengan mudah, saya harap mereka dapat memberikan sedikit bantuan kepada pembaca yang sedang mempelajari pemprosesan audio.

Atas ialah kandungan terperinci Panduan untuk menggunakan perpustakaan pemprosesan audio Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn