要對音頻進行降噪,可以使用Python的librosa庫。下面是一個簡單的示例代碼:
import librosa
import numpy as np
import soundfile as sf
# 讀取音頻文件
audio, sr = librosa.load('input.wav', sr=None)
# 計算短時傅里葉變換(STFT)
stft = librosa.stft(audio)
# 計算音頻的能量譜
power = np.abs(stft) ** 2
# 設置閾值(根據實際情況調整)
threshold = np.mean(power) * 0.5
# 將低于閾值的能量譜置為0
mask = power < threshold
power[mask] = 0
# 逆短時傅里葉變換(ISTFT)得到降噪后的音頻
denoised_stft = np.sqrt(power) * np.exp(1j * np.angle(stft))
denoised_audio = librosa.istft(denoised_stft)
# 保存降噪后的音頻文件
sf.write('output.wav', denoised_audio, sr)
在上述代碼中,首先使用librosa庫讀取音頻文件,并計算音頻的短時傅里葉變換(STFT)。然后,計算音頻的能量譜,并根據閾值將低于閾值的能量譜置為0。最后,使用逆短時傅里葉變換(ISTFT)將能量譜轉換回音頻信號,并保存降噪后的音頻文件。請根據實際情況調整閾值以獲得最佳的降噪效果。