音频特征提取

这篇具有很好参考价值的文章主要介绍了音频特征提取。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 常用的算法

https://www.kaggle.com/competitions/birdsong-recognition/discussion/172573

  • MFCC (Mel-Frequency Cepstral Coefficients)
  • Zero-crossing rate
  • Energy
  • Spectral roll-off
  • Spectral flux
  • Spectral entropy
  • Chroma features (chromatogram), with Chroma vector and Chroma deviation considered to be the most important ones within this group
  • Pitch

1.1 MFCC

MFCC算法(Mel Frequency Cepstral Coefficients,梅尔频率倒谱系数)是一种广泛应用于语音和音频处理领域的特征提取方法。它主要用于提取音频信号的特征,以便在诸如语音识别、音乐信息检索和音频分类等任务中使用。

MFCC算法的基本步骤如下:

  • 预加重:对输入的音频信号进行预加重,以平衡频谱并强调高频部分。
  • 分帧:将音频信号分成短时帧,通常每帧的长度为20-30ms,帧与帧之间有一定的重叠。
  • 窗函数:对每个帧应用窗函数(如汉明窗),以减少帧边缘的频谱泄漏。
  • 快速傅里叶变换(FFT):对每个帧进行FFT,以将信号从时域转换到频域。
  • 梅尔滤波器组:将频谱通过梅尔滤波器组(Mel Filter Bank),以模拟人耳对频率的感知。梅尔滤波器组通常包含20-40个三角滤波器,它们在梅尔刻度上均匀分布。
  • 对数能量:计算每个滤波器输出的对数能量。
  • 离散余弦变换(DCT):对对数能量进行DCT,以提取倒谱系数。通常只保留前12-13个系数,因为它们包含了信号的主要信息。

这些步骤的结果是一组MFCC特征,它们可以用于训练

1.2 Zero-Crossing rate

Zero-crossing rate(零交叉率)是一种用于音频信号处理的特征提取方法。它表示在一个音频帧中,信号从正值变为负值或从负值变为正值的次数。零交叉率可以用于识别语音和音乐信号中的不同声音,例如辅音和元音,以及不同乐器的音色。

零交叉率算法的基本步骤如下:

  • 分帧:将音频信号分成短时帧,通常每帧的长度为20-30ms,帧与帧之间有一定的重叠。
  • 计算零交叉率:对于每个帧,计算信号从正值变为负值或从负值变为正值的次数。可以通过检查相邻样本的符号变化来实现。

这个函数接受一个音频帧(例如NumPy数组)作为输入,并返回该帧的零交叉率。你可以将这个函数应用到音频信号的所有帧上,以提取零交叉率特征。这些特征可以用于音频分类、语音识别等任务。

1.3 Energy 音频算法

Energy(能量)是音频信号处理中的另一种特征提取方法。它表示音频信号的振幅大小,可以用于识别信号中的不同声音,例如辅音和元音,以及不同乐器的音色。能量特征通常与其他特征(如MFCC和零交叉率)结合使用,以提高音频处理任务的性能。

计算音频能量的基本步骤如下:

  • 分帧:将音频信号分成短时帧,通常每帧的长度为20-30ms,帧与帧之间有一定的重叠。
  • 计算能量:对于每个帧,计算信号的平方和,然后取平均值。这表示了信号在该帧中的能量大小。

1.4 Spectral roll-off(谱滚降点)

Spectral roll-off(谱滚降点)是音频信号处理中的一种特征提取方法。它表示音频信号频谱中的一个特定点,该点之前的频率成分累积到了总能量的一定比例(通常为85%或90%)。谱滚降点可以用于识别音频信号中的不同声音,例如不同乐器的音色。谱滚降点特征通常与其他特征(如MFCC、零交叉率和能量)结合使用,以提高音频处理任务的性能。

计算音频谱滚降点的基本步骤如下:

分帧:将音频信号分成短时帧,通常每帧的长度为20-30ms,帧与帧之间有一定的重叠。
快速傅里叶变换(FFT):对每个帧进行FFT,以将信号从时域转换到频域。
计算谱滚降点:对于每个帧,找到一个频率点,使得该点之前的频率成分累积到了总能量的一定比例(例如85%或90%)。

1.5 Spectral flux(谱通量)

Spectral flux(谱通量)是音频信号处理中的一种特征提取方法。它表示音频信号频谱的变化程度,可以用于检测音频中的事件,例如音符的开始和结束。谱通量特征通常与其他特征(如MFCC、零交叉率、能量和谱滚降点)结合使用,以提高音频处理任务的性能。

计算音频谱通量的基本步骤如下:

  • 分帧:将音频信号分成短时帧,通常每帧的长度为20-30ms,帧与帧之间有一定的重叠。
  • 快速傅里叶变换(FFT):对每个帧进行FFT,以将信号从时域转换到频域。
  • 计算谱通量:对于每对相邻帧,计算它们的频谱差值的平方和,然后取平均值。这表示了信号在这两帧之间的频谱变化程度。

1.6 Spectral entropy(谱熵)

Spectral entropy(谱熵)是音频信号处理中的一种特征提取方法。它表示音频信号频谱的复杂程度或不确定性,可以用于识别音频中的不同声音,例如不同乐器的音色。谱熵特征通常与其他特征(如MFCC、零交叉率、能量、谱滚降点和谱通量)结合使用,以提高音频处理任务的性能。

计算音频谱熵的基本步骤如下:

  • 分帧:将音频信号分成短时帧,通常每帧的长度为20-30ms,帧与帧之间有一定的重叠。
  • 快速傅里叶变换(FFT):对每个帧进行FFT,以将信号从时域转换到频域。
  • 计算谱熵:对于每个帧,计算频谱的归一化能量分布,然后使用香农熵公式计算谱熵。

Chroma features(色度特征)

Chroma features(色度特征)是音频信号处理中的一种特征提取方法。它表示音频信号中的音高信息,可以用于识别音乐中的和声、旋律和音调。色度特征通常与其他特征(如MFCC、零交叉率、能量、谱滚降点、谱通量和谱熵)结合使用,以提高音频处理任务的性能。

计算音频色度特征的基本步骤如下:

分帧:将音频信号分成短时帧,通常每帧的长度为20-30ms,帧与帧之间有一定的重叠。
快速傅里叶变换(FFT):对每个帧进行FFT,以将信号从时域转换到频域。
计算色度特征:将频谱映射到12个色度区间(代表12个半音),然后计算每个区间的能量。

1.7 Pitch

Pitch(音高)是音频信号处理中的一个重要概念,它表示音频信号中的基频。音高分析可以用于识别音乐中的旋律、和声和音调,以及语音信号中的说话者特征。有多种算法可以用于计算音频信号的音高,其中最常用的是自相关法(ACF)和基于频域的YIN算法。

自相关法(ACF):自相关法通过计算音频信号与其自身的延迟版本之间的相似度来估计音高。基本步骤如下:

  • 分帧:将音频信号分成短时帧,通常每帧的长度为20-30ms,帧与帧之间有一定的重叠。
  • 计算自相关:对于每个帧,计算信号与其延迟版本之间的自相关函数。
  • 寻找最大值:在自相关函数中找到第一个局部最大值,其对应的延迟即为基频周期。
  • 计算音高:将基频周期转换为音高(单位:赫兹)。

2. Wav2Vec和Wav2Vec2

对于音频任务, Hugging Face 提供了使用 Wav2Vec2 模型, Wav2Vec2 是一个基于自监督学习的音频特征提取器,可以从原始音频信号中提取有意义的特征。

Wav2Vec 是一种用于音频数据的自监督学习算法,主要用于从原始音频信号中提取有意义的特征表示。它是由 Facebook AI Research (FAIR) 开发的,旨在解决语音识别、音频分类等任务。Wav2Vec 的核心思想是通过学习音频数据的上下文结构来捕捉音频中的信息。

Wav2Vec 算法分为两个主要阶段:

  • 预训练阶段:在这个阶段,Wav2Vec 通过自监督学习在大量无标签音频数据上进行训练。它使用一个卷积神经网络 (CNN) 编码器将原始音频波形转换为潜在特征表示。然后,它使用一个上下文网络(如 Transformer 或 LSTM)来捕捉这些特征表示中的上下文信息。通过最大化相邻特征之间的互信息,Wav2Vec 学习了音频数据的丰富表示。

  • 微调阶段:在这个阶段,Wav2Vec 使用有标签数据进行微调,以解决特定的音频任务,如语音识别或音频分类。通常,这涉及在预训练的 Wav2Vec 模型上添加一个分类器,并使用有标签数据进行端到端训练。

Wav2Vec 的优势在于它能够从原始音频信号中学习有意义的特征表示,而无需手动设计特征提取器(如 MFCC 或 STFT)。这使得 Wav2Vec 能够在各种音频任务中取得优异的性能。

Wav2Vec 的后续版本,如 Wav2Vec 2.0,进一步改进了算法,提高了在音频任务上的性能。Wav2Vec 2.0 采用了类似 BERT 的自监督训练方法,通过掩码和预测音频片段来学习音频表示。这种方法使得 Wav2Vec 2.0 在许多音频任务上取得了更好的性能,包括自动语音识别 (ASR) 和音频分类。

要使用 Wav2Vec 或 Wav2Vec 2.0 提取音频特征并解决音频任务,您可以使用 Hugging Face Transformers 库。这个库提供了预训练的 Wav2Vec 和 Wav2Vec 2.0 模型,可以方便地进行微调和特征提取。

总之,Wav2Vec 算法为音频任务提供了一种强大的特征提取方法,通过自监督学习从原始音频信号中学习有意义的表示。这使得 Wav2Vec 可以在各种音频任务中取得优异的性能,如语音识别、音频分类等。

from transformers import Wav2Vec2FeatureExtractor, Wav2Vec2Model
import torchaudio
import torch

# Load the pre-trained Wav2Vec2 model
model = Wav2Vec2Model.from_pretrained("facebook/wav2vec2-base-960h")
feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained("facebook/wav2vec2-base-960h")

# Load an audio file
audio, sample_rate = torchaudio.load("path/to/your/audio/file.wav")

# Resample the audio to 16kHz
if sample_rate != 16000:
    resampler = torchaudio.transforms.Resample(sample_rate, 16000)
    audio = resampler(audio)

# Extract features using the feature_extractor
input_values = feature_extractor(audio.squeeze().numpy(), return_tensors="pt", sampling_rate=16000).input_values

# Get the embeddings from the model
with torch.no_grad():
    embeddings = model(input_values).last_hidden_state

# embeddings now contains the extracted features

这里,embeddings 变量包含了从音频文件中提取的特征。您可以使用这些特征来训练您自己的分类器或其他下游任务。文章来源地址https://www.toymoban.com/news/detail-788305.html

到了这里,关于音频特征提取的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 音视频基础概念(5)——音频基础说明

    现实生活中,音频(Audio)主要用在两大场景中,包括语音(Voice)和音乐(Music)。语音主要用于沟通,如打电话等。目前由于语音识别技术的发展,人机语音交互也是语音的一个应用方向,很多大厂推出智能音箱、语音助手等。音乐主要用于欣赏和陶冶情操,如播放音乐。

    2023年04月08日
    浏览(106)
  • 【音视频原理】音视频 “ 采样 - 编码 - 封装 过程 “ 和 “ 解封装 - 解码 - 播放 过程 “ 分析 ( 视频采集处理流程 | 音频采集处理流程 | 音视频文件解封装播放流程 )

    本篇文件主要分析 音视频文件 是怎么产生的 , 以及 音视频文件是如何播放的 ; 视频文件从录像到生成文件的全过程 : 采集图像帧 : 摄像头 硬件 负责 采集画面 , 采集的 初始画面 称为 \\\" 图像帧 \\\" , 一秒钟 采集 的 图像帧 数量 称为 \\\" 帧率 \\\" , 如 : 60 帧 就是 一秒钟采集 60 个画

    2024年02月11日
    浏览(73)
  • Android 音视频开发—MediaPlayer音频与视频的播放介绍

    Android多媒体中的——MediaPlayer,我们可以通过这个API来播放音频和视频该类是Androd多媒体框架中的一个重要组件,通过该类,我们可以以最小的步骤来获取,解码和播放音视频。 它支持三种不同的媒体来源: 本地资源 内部的URI,比如你可以通过ContentResolver来获取 外部URL(流

    2024年02月10日
    浏览(58)
  • 抖音视频无水印采集拓客软件|视频批量下载提取工具

    抖音视频无水印批量采集拓客软件助力高效营销!         随着抖音平台的崛起,视频已成为各行各业进行营销的重要工具。但是,传统的视频下载方式往往效率低下,无法满足快速获取大量视频的需求。针对这一问题,我们开发了一款视频无水印批量采集拓客软件。 工具

    2024年04月14日
    浏览(66)
  • 音视频开发:音频编码原理+采集+编码实战

    消除冗余信息,压缩量最大,也叫有损压缩 剔除人耳听觉范围外的音频信号20Hz以下和20000Hz以上; 去除被掩蔽的音频信号,信号的遮蔽可以分为频域遮蔽和时域遮蔽; 频域遮蔽效应 屏蔽70分贝以下,20HZ以下,20000HZ以上 屏蔽分贝小,频率小的声音 两个频率相近发出的声音,

    2024年02月05日
    浏览(57)
  • 【音视频 | AAC】AAC格式音频文件解析

    😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭 🤣本文内容🤣:🍭介绍AAC格式音频文件解析🍭 😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭 本文未经允许,不得转发!!

    2024年02月04日
    浏览(53)
  • 音视频八股文(11)-- ffmpeg 音频重采样

    所谓的重采样,就是改变⾳频的采样率、sample format、声道数等参数,使之按照我们期望的参数输出。 为什么要重采样?当然是原有的⾳频参数不满⾜我们的需求,⽐如在FFmpeg解码⾳频的时候,不同的⾳源有不同的格式,采样率等,在解码后的数据中的这些参数也会不⼀致(最

    2024年02月04日
    浏览(101)
  • 音视频剪辑|FFMPEG|windows10下的音视频格式转换,遮挡填充,GIF动图制作,背景音频抽取,替换

    最近对于音视频和图像的处理问题比较感兴趣,但发现很多目前需要的功能要么需要付费但不会过于麻烦,要么比较麻烦,很可能某个功能实现需要安装很多软件 例如,视频转GIF动图,该功能的实现要么使用Photoshop全家桶,要么找在线网站,或者是wps充会员,或者找其它方法

    2024年02月20日
    浏览(56)
  • qt+ffmpeg 实现音视频播放(二)之音频播放

    通过  avformat_open_input () 打开媒体文件并分配和初始化  AVFormatContext   结构体。 函数原型如下: int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options); 参数说明: - `ps`:指向 `AVFormatContext` 结构体指针的指针,用于存储打开的媒体文件的信息。

    2024年04月22日
    浏览(55)
  • Android音视频处理技术:音频混音与播放

    作者:禅与计算机程序设计艺术 在现代生活中,我们都会听到各种各样的声音。但是有的声音会相互抵消影响我们的正常生活,而有的声音则会增加我们的情绪快乐。人类为了能够真正体验到声音带来的快感,需要将不同类型的声音合并,再将它们再传达给大脑。音频混音与

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包