当前位置:   article > 正文

音频处理库和工具,以及相关开源_音频处理开源库

音频处理开源库


librosa:

GitHub: https://github.com/librosa/librosa
说明: Librosa是一个用于音乐和音频分析的Python库,提供了构建音乐信息检索系统所需的构建块。它包括音频信号处理的功能,如频谱表示、节拍跟踪、音高检测等。
Essentia:

GitHub: https://github.com/MTG/essentia
说明: Essentia是一个音乐分析和音频特征提取库,支持多种音频特征提取,包括音高、节拍、旋律、和声和节奏等。它可以用于音乐信息检索、音乐理解和音频内容分析。
aubio:

GitHub: https://github.com/aubio/aubio
说明: Aubio是一个用于音频信号处理的库,用于提取音乐信号中的注释和标签。它可以用于音高检测、节拍跟踪、声码器和声音分离等任务。
openSMILE:

GitHub: https://github.com/audeering/opensmile
说明: openSMILE是一个用于音频特征提取的强大工具,广泛用于语音处理和情感分析。它可以提取大量的音频特征,并且在情感识别和说话者状态监测等领域有广泛的应用。
pyAudioAnalysis:

GitHub: https://github.com/tyiannak/pyAudioAnalysis
说明: pyAudioAnalysis是一个Python库,用于音频特征提取、分类、分割和应用。它提供了一系列音频分析技术,包括分类器训练、音频事件检测和内容可视化。
YAAFE (Yet Another Audio Feature Extractor):

GitHub: https://github.com/Yaafe/Yaafe
说明: YAAFE是一个用于音频特征提取的工具箱,它可以从音频文件中提取多种音频特征,并且易于与其他音频处理软件集成。
Marsyas (Music Analysis, Retrieval and Synthesis for Audio Signals):

GitHub: https://github.com/marsyas/marsyas
说明: Marsyas是一个用于音频处理的软件框架,包括音频特征提取、分类、聚类、转录和合成等功能。

 

在音频信号处理中,除了梅尔频率倒谱系数(MFCCs)之外,还有许多其他特征可以提取,以捕捉音频信号的不同方面。以下是一些常见的音频特征及其使用 librosa 库提取的方法:

频谱质心(Spectral Centroid): 表示声音的“亮度”,即频谱能量的重心位置。

 
spectral_centroids = librosa.feature.spectral_centroid(y=y, sr=sr)[0]
 
频谱带宽(Spectral Bandwidth): 描述声音频谱的宽度。
spectral_bandwidth = librosa.feature.spectral_bandwidth(y=y, sr=sr)[0]
谐波(Harmonics)和感知音高(Perceptual Pitch): 分离声音的谐波成分和感知音高。
y_harmonic, y_percussive = librosa.effects.hpss(y)
零交叉率(Zero-Crossing Rate): 信号改变符号的速率。
zero_crossing_rate = librosa.feature.zero_crossing_rate(y)[0]
色度频率(Chroma Frequencies): 关注音乐中的12个不同的半音(即色度)。
chroma = librosa.feature.chroma_stft(y=y, sr=sr)
频谱对比度(Spectral Contrast): 在不同的频带中测量频谱峰值和谷值之间的差异。
spectral_contrast = librosa.feature.spectral_contrast(y=y, sr=sr)
梅尔频谱(Mel-Spectrogram): 基于人类听觉感知的频谱表示。
mel_spectrogram = librosa.feature.melspectrogram(y=y, sr=sr)
音调(Tonnetz): 表示音调的调性质心。
tonnetz = librosa.feature.tonnetz(y=y, sr=sr)
节拍(Tempo)和节奏(Beat): 估计音频的节拍和节奏。
tempo, beats = librosa.beat.beat_track(y=y, sr=sr)
Root Mean Square Energy (RMSE): 信号的能量。
rmse = librosa.feature.rms(y=y)
 

在提取这些特征后,需要对它们进行后处理,比如缩放、归一化或者统计汇总(例如计算均值、标准差等)。这取决于你的应用和所需的特征表示形式。例如,对于MFCCs,你已经计算了时间序列的均值。对于其他特征,你可能也想要执行类似的操作:

 
# 例如,计算频谱质心的均值
spectral_centroids_mean = np.mean(spectral_centroids)

# 或者计算所有时间帧的均值
spectral_centroids_mean_over_time = np.mean(spectral_centroids.T, axis=0)
 
使用 librosa 库来提取多种音频特征,并将它们组合在一起。每个特征提取步骤都有注释说明。

import librosa
import numpy as np

# 读取音频文件
audio_path = 'path_to_your_audio_file.wav'
y, sr = librosa.load(audio_path)

# 提取MFCC特征
mfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13)
mfccs_scaled = np.mean(mfccs.T, axis=0)  # 计算时间序列的均值

# 提取频谱质心
spectral_centroids = librosa.feature.spectral_centroid(y=y, sr=sr)[0]
spectral_centroids_mean = np.mean(spectral_centroids)  # 计算均值

# 提取频谱带宽
spectral_bandwidth = librosa.feature.spectral_bandwidth(y=y, sr=sr)[0]
spectral_bandwidth_mean = np.mean(spectral_bandwidth)  # 计算均值

# 提取谐波和感知音高
y_harmonic, y_percussive = librosa.effects.hpss(y)

# 提取零交叉率
zero_crossing_rate = librosa.feature.zero_crossing_rate(y)[0]
zero_crossing_rate_mean = np.mean(zero_crossing_rate)  # 计算均值

# 提取色度频率
chroma = librosa.feature.chroma_stft(y=y, sr=sr)
chroma_mean = np.mean(chroma, axis=1)  # 计算每个色度的均值

# 提取频谱对比度
spectral_contrast = librosa.feature.spectral_contrast(y=y, sr=sr)
spectral_contrast_mean = np.mean(spectral_contrast, axis=1)  # 计算每个频带的均值

# 提取梅尔频谱
mel_spectrogram = librosa.feature.melspectrogram(y=y, sr=sr)
mel_spectrogram_mean = np.mean(mel_spectrogram, axis=1)  # 计算每个梅尔频带的均值

# 提取音调
tonnetz = librosa.feature.tonnetz(y=y, sr=sr)
tonnetz_mean = np.mean(tonnetz, axis=1)  # 计算调性质心的均值

# 提取节拍和节奏
tempo, beats = librosa.beat.beat_track(y=y, sr=sr)
# 节拍是一个全局特征,不需要进一步处理

# 提取Root Mean Square Energy
rmse = librosa.feature.rms(y=y)
rmse_mean = np.mean(rmse)  # 计算均值

# 将所有特征组合到一个大的特征向量中
features = np.hstack([
    mfccs_scaled,
    spectral_centroids_mean,
    spectral_bandwidth_mean,
    zero_crossing_rate_mean,
    chroma_mean,
    spectral_contrast_mean,
    mel_spectrogram_mean,
    tonnetz_mean,
    tempo,
    rmse_mean
])

# 打印特征向量的形状,以确保所有特征都已正确组合
print('Total features:', features.shape)
 
在音频处理中,去除噪声通常涉及到信号处理技术,如傅里叶变换、小波变换、谱减法、自适应滤波器等。在Python中,可以使用 librosa 库结合其他信号处理方法来尝试减少噪声。以下是一个简单的例子,使用 librosa 的谱减法来减少噪声:

 
import librosa
import numpy as np

# 读取音频文件
audio_path = 'path_to_your_audio_file.wav'
y, sr = librosa.load(audio_path, sr=None)

# 预先设定一些参数
frame_length = 2048
hop_length = 512

# 计算短时傅里叶变换(STFT)
stft = librosa.stft(y, n_fft=frame_length, hop_length=hop_length)

# 计算幅度谱
magnitude = np.abs(stft)

# 估计噪声幅度谱(这里假设噪声在音频的静音部分)
# 你可以通过选择音频中已知的噪声部分来改进这个估计
noise_mag = np.mean(magnitude[:, :10], axis=1).reshape(-1, 1)

# 执行谱减法
noise_reduced_magnitude = np.maximum(magnitude - noise_mag, 0)

# 重建相位信息
phase = np.angle(stft)

# 重建去噪后的音频信号
y_denoised = librosa.istft(noise_reduced_magnitude * np.exp(1j * phase), hop_length=hop_length)

# 保存去噪后的音频
librosa.output.write_wav('denoised_audio.wav', y_denoised, sr)


librosa:

GitHub: https://github.com/librosa/librosa
说明: Librosa是一个用于音乐和音频分析的Python库,提供了构建音乐信息检索系统所需的构建块。它包括音频信号处理的功能,如频谱表示、节拍跟踪、音高检测等。
Essentia:

GitHub: https://github.com/MTG/essentia
说明: Essentia是一个音乐分析和音频特征提取库,支持多种音频特征提取,包括音高、节拍、旋律、和声和节奏等。它可以用于音乐信息检索、音乐理解和音频内容分析。
aubio:

GitHub: https://github.com/aubio/aubio
说明: Aubio是一个用于音频信号处理的库,用于提取音乐信号中的注释和标签。它可以用于音高检测、节拍跟踪、声码器和声音分离等任务。
openSMILE:

GitHub: https://github.com/audeering/opensmile
说明: openSMILE是一个用于音频特征提取的强大工具,广泛用于语音处理和情感分析。它可以提取大量的音频特征,并且在情感识别和说话者状态监测等领域有广泛的应用。
pyAudioAnalysis:

GitHub: https://github.com/tyiannak/pyAudioAnalysis
说明: pyAudioAnalysis是一个Python库,用于音频特征提取、分类、分割和应用。它提供了一系列音频分析技术,包括分类器训练、音频事件检测和内容可视化。
YAAFE (Yet Another Audio Feature Extractor):

GitHub: https://github.com/Yaafe/Yaafe
说明: YAAFE是一个用于音频特征提取的工具箱,它可以从音频文件中提取多种音频特征,并且易于与其他音频处理软件集成。
Marsyas (Music Analysis, Retrieval and Synthesis for Audio Signals):

GitHub: https://github.com/marsyas/marsyas
说明: Marsyas是一个用于音频处理的软件框架,包括音频特征提取、分类、聚类、转录和合成等功能。
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/972173
推荐阅读
相关标签
  

闽ICP备14008679号