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!