跟着AI学AI_02, 时域频域和MFCC

AI:ChatGPT4o

在这里插入图片描述
时域和频域是信号处理中的两个基本概念,用于描述信号的不同特性。

时域

时域(Time Domain) 是对信号随时间变化的描述。在时域中,信号是作为时间的函数来表示的。

  • 时域表示:例如,一个音频信号在时域中的表示就是一个随时间变化的波形。
  • 时域特征:信号的幅度、持续时间、波形形状等。

示例:考虑一个简单的正弦波信号:
[ x(t) = A \sin(2\pi ft + \phi) ]
其中,( A ) 是幅度,( f ) 是频率,( \phi ) 是相位,( t ) 是时间。

在时域中,这个信号看起来像一个随时间上下振荡的波形。

频域

频域(Frequency Domain) 是对信号的频率成分的描述。在频域中,信号是作为频率的函数来表示的。

  • 频域表示:例如,通过傅里叶变换,可以将时域信号转换为频域信号,这样我们可以看到信号中包含的各个频率成分及其幅度。
  • 频域特征:信号的频谱、频率分量、带宽等。

示例:考虑上面的正弦波信号,如果我们对它进行傅里叶变换,我们会得到一个在频域中的表示:
[ X(f) = \frac{A}{2j} [\delta(f - f_0) - \delta(f + f_0)] ]
这里,( \delta ) 是狄拉克δ函数,表示在 ( f = f_0 ) 和 ( f = -f_0 ) 处有一个尖峰(对应频率成分)。

时域和频域的转换

时域和频域之间的转换通常通过傅里叶变换和逆傅里叶变换来实现。

  1. 傅里叶变换

    • 将时域信号转换为频域信号。
    • 连续傅里叶变换(Continuous Fourier Transform, CFT)定义为:
      [ X(f) = \int_{-\infty}^{\infty} x(t) e^{-j2\pi ft} dt ]
  2. 逆傅里叶变换

    • 将频域信号转换回时域信号。
    • 连续逆傅里叶变换(Inverse Continuous Fourier Transform, ICFT)定义为:
      [ x(t) = \int_{-\infty}^{\infty} X(f) e^{j2\pi ft} df ]

在离散信号处理中,通常使用离散傅里叶变换(Discrete Fourier Transform, DFT)和快速傅里叶变换(Fast Fourier Transform, FFT)。

代码示例

下面是一个简单的例子,展示如何使用Python和numpy库进行傅里叶变换:

import numpy as np
import matplotlib.pyplot as plt# 生成一个简单的时域信号:正弦波
fs = 1000  # 采样率
t = np.linspace(0, 1, fs)  # 时间向量
f = 5  # 信号频率
x = np.sin(2 * np.pi * f * t)  # 生成正弦波# 进行傅里叶变换
X = np.fft.fft(x)
frequencies = np.fft.fftfreq(len(X), 1/fs)# 画出时域信号
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(t, x)
plt.title('时域信号')
plt.xlabel('时间 (秒)')
plt.ylabel('幅度')# 画出频域信号
plt.subplot(2, 1, 2)
plt.plot(frequencies[:len(frequencies)//2], np.abs(X)[:len(X)//2])
plt.title('频域信号')
plt.xlabel('频率 (Hz)')
plt.ylabel('幅度')plt.tight_layout()
plt.show()

解释

  1. 时域信号

    • 生成一个5Hz的正弦波信号,采样率为1000Hz。
    • 在时域中,信号表示为一个随时间变化的波形。
  2. 频域信号

    • 使用numpy.fft.fft进行傅里叶变换,将时域信号转换为频域信号。
    • 使用numpy.fft.fftfreq生成对应的频率轴。
    • 在频域中,信号表示为频率成分的幅度谱。

总结

  • 时域:信号随时间变化的表示,关注时间上的特性。
  • 频域:信号的频率成分的表示,关注频率上的特性。
  • 转换:傅里叶变换用于将时域信号转换为频域信号,逆傅里叶变换用于将频域信号转换回时域信号。

这两个域提供了不同的视角来分析和处理信号,在信号处理、通信、音频处理等领域有广泛的应用。

在这里插入图片描述
MFCC(Mel Frequency Cepstral Coefficients,梅尔频率倒谱系数)是语音信号处理中的一种特征提取方法,广泛用于语音识别和音频分析领域。它基于人类听觉系统的感知模型,能够有效地表示音频信号的特征。

MFCC的计算步骤

  1. 预加重 (Pre-emphasis)

    • 通过一个高通滤波器来增强高频成分,补偿语音信号中高频部分的能量损失。
    • 通常使用的滤波器: y [ t ] = x [ t ] − α ⋅ x [ t − 1 ] y[t] = x[t] - \alpha \cdot x[t-1] y[t]=x[t]αx[t1],其中, x [ t ] x[t] x[t]是输入信号, y [ t ] y[t] y[t]是输出信号, α \alpha α一般取值0.97。
  2. 分帧 (Framing)

    • 将语音信号分成短时帧,一般每帧20-40毫秒,每帧之间有一定的重叠(通常是50%)。
    • 例如,25毫秒的帧长和10毫秒的帧移。
  3. 加窗 (Windowing)

    • 为了减少分帧过程中引入的频谱泄漏效应,对每一帧信号进行加窗处理。
    • 常用的窗函数是汉明窗(Hamming Window): w [ n ] = 0.54 − 0.46 cos ⁡ ( 2 π n N − 1 ) w[n] = 0.54 - 0.46 \cos\left(\frac{2\pi n}{N-1}\right) w[n]=0.540.46cos(N12πn),其中, N N N是窗的长度。
  4. 快速傅里叶变换 (Fast Fourier Transform, FFT)

    • 对每一帧信号进行FFT,得到频域信号。
    • 目的是从时域信号转换到频域信号,以便分析其频率成分。
  5. 梅尔频率滤波器组 (Mel Filter Bank)

    • 将频域信号通过一组梅尔频率滤波器,模拟人耳的听觉感知。
    • 梅尔频率是根据人耳的感知频率尺度定义的,低频部分滤波器密集,高频部分滤波器稀疏。
  6. 对数功率谱 (Log Power Spectrum)

    • 对通过梅尔滤波器的功率谱取对数,得到对数功率谱。
    • 目的是将乘性噪声转换为加性噪声,从而更容易处理。
  7. 离散余弦变换 (Discrete Cosine Transform, DCT)

    • 对对数功率谱进行DCT,得到MFCC系数。
    • DCT的目的是压缩特征维度,并集中能量到低维部分。

代码示例

以下是使用librosa库计算MFCC的示例代码:

import librosa
import matplotlib.pyplot as plt
import numpy as np# 加载音频文件
y, sr = librosa.load('path_to_audio_file.wav', sr=None)# 计算MFCC
mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13)# 显示MFCC特征
plt.figure(figsize=(10, 4))
librosa.display.specshow(mfcc, x_axis='time')
plt.colorbar()
plt.title('MFCC')
plt.tight_layout()
plt.show()

解释

  1. 加载音频文件librosa.load函数加载音频文件,返回音频时间序列y和采样率sr
  2. 计算MFCClibrosa.feature.mfcc函数计算音频信号的MFCC特征。
  3. 显示MFCC特征:使用librosa.display.specshow函数可视化MFCC特征。

总结

MFCC通过模拟人耳的听觉感知特性,提取音频信号中的关键特征,具有很高的表达能力和鲁棒性,因此在语音识别领域得到了广泛应用。计算MFCC包括预加重、分帧、加窗、FFT、梅尔频率滤波器组、对数功率谱和DCT等步骤,每一步都对最终特征的质量有重要影响。

maraSun YBJFWDQ

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/340236.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【热点】老黄粉碎摩尔定律被,量产Blackwell解决ChatGPT耗电难题

6月3日,老黄又高调向全世界秀了一把:已经量产的Blackwell,8年内将把1.8万亿参数GPT-4的训练能耗狂砍到1/350; 英伟达惊人的产品迭代,直接原地冲破摩尔定律;Blackwell的后三代路线图,也一口气被…

【康耐视国产案例】智能AI相机联合OSARO为Zenni眼镜实现订单履约自动化

在电商潮流下,Zenni眼镜作为全球领先的在线眼镜零售商,每年销售超过600万副眼镜,却面临着一个独特而复杂的问题——需要通过扫描眼镜盒内的条形码来处理订单。传统手动处理已经到达流程瓶颈,急需一种更加自动化、可扩展的方法。为…

Pikachu靶场下载、配置

目录 下载 配置 新版小蓝皮 搭建网站 搭建数据库 初始化靶场 旧版小绿皮 配置数据库 配置网站 下载 GitHub下载地址: 百度网盘:https://pan.baidu.com/s/1j2WpdLvwAbmpAH76d_yitw?pwdwf8j 提取码:wf8j 迅雷链接:http…

【STL深入浅出】之从零到精通:vector使用与模拟

📃博客主页: 小镇敲码人 💚代码仓库,欢迎访问 🚀 欢迎关注:👍点赞 👂🏽留言 😍收藏 🌏 任尔江湖满血骨,我自踏雪寻梅香。 万千浮云遮碧…

thinkphp6 queue队列的maxTries自定义

前景需求:在我们用队列的时候发现maxtries的个数时255次,这个太影响其他队列任务 我目前使用的thinkphp版本是6.1 第一部定义一个新的类 CustomDataBase(我用的mysql数据库存放的队列) 重写__make 和createPlainPayload方法 …

每日两题 / 34. 在排序数组中查找元素的第一个和最后一个位置 33. 搜索旋转排序数组(LeetCode热题100)

34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣&#xff08;LeetCode&#xff09; 根据二分函数&#xff0c;得到>target和<target的两个&#xff0c;分别是答案的l和r class Solution { public:vector<int> searchRange(vector<int>& nums,…

【Uniapp小程序】自定义导航栏uni-nav-bar滚动渐变色

效果图 新建activityScrollTop.js作为mixins export default {data() {return {navBgColor: "rgba(0,0,0,0)", // 初始背景颜色为完全透明navTextColor: "rgba(0,0,0,1)", // 初始文字颜色};},onPageScroll(e) {// 设置背景const newAlpha Math.min((e.s…

小学数学出题器-Word插件-大珩助手

Word大珩助手是一款功能丰富的Office Word插件&#xff0c;旨在提高用户在处理文档时的效率。它具有多种实用的功能&#xff0c;能够帮助用户轻松修改、优化和管理Word文件&#xff0c;从而打造出专业而精美的文档。 【新功能】小学数学出题器 1、实现了难度设定&#xff1b;…

HCIP-Datacom-ARST自选题库__MAC【14道题】

一、单选题 1.缺省情况下&#xff0c;以下哪种安全MAC地址类型在设备重启后表项会丢失? 黑洞MAC地址 Sticky MAC地址 安全动态MAC地址 安全静态MAC地址 2.华为交换机MAC地址表中的动态sticky MAC地址的默认老化时间是多少秒? 300 不会老化 400 500 3.华为交换机MA…

Golang | Leetcode Golang题解之第129题求根节点到叶节点数字之和

题目&#xff1a; 题解&#xff1a; type pair struct {node *TreeNodenum int }func sumNumbers(root *TreeNode) (sum int) {if root nil {return}queue : []pair{{root, root.Val}}for len(queue) > 0 {p : queue[0]queue queue[1:]left, right, num : p.node.Left, …

大规模 Transformer 模型 8 比特矩阵乘

本文基于 Hugging Face Transformers、Accelerate 以及 bitsandbytes库。 Transformers&#xff1a;Hugging Face 提供的一个开源库&#xff0c;包含了多种预训练的 Transformer 模型&#xff0c;方便用户进行各种 NLP 任务。Accelerate&#xff1a;Hugging Face 开发的一个库…

大型语言模型的工作原理(LLM:从零学起)

目录 一、说明 二、LLM如何运作 三、预训练&#xff1a;基本模型 四、微调&#xff1a;培训助手 五、RLHF&#xff1a;从人类反馈中强化学习 六、提示工程 七、总结 一、说明 这是我们谈论LLM系列的第二篇文章。在本文中&#xff0c;我们旨在为大型语言模型 &#xff08;LLM&am…

Java开发:Spring Boot 实战教程

序言 随着技术的快速发展和数字化转型的深入推进&#xff0c;软件开发领域迎来了前所未有的变革。在众多开发框架中&#xff0c;Spring Boot凭借其“约定大于配置”的核心理念和快速开发的能力&#xff0c;迅速崭露头角&#xff0c;成为当今企业级应用开发的首选框架之一。 《…

Linux运维应知必会的LVS高可用负载均衡方案

背景 在业务量达到一定量的时候&#xff0c;往往单机的服务是会出现瓶颈的。此时最常见的方式就是通过负载均衡来进行横向扩展。其中我们最常用的软件就是 Nginx。通过其反向代理的能力能够轻松实现负载均衡&#xff0c;当有服务出现异常&#xff0c;也能够自动剔除。但是负载…

PromptIR论文阅读笔记

MZUAI和IIAI在NIPS2023上的一篇论文&#xff0c;用prompt来编码degradation&#xff0c;然后用来guide restoration network&#xff0c;使得模型能够泛化到不同degradation types and levels&#xff0c;也就是说是一个模型一次训练能够应对多种degradation的unified model。文…

生成式AI,在云端的绽放与盛开

编辑&#xff1a;阿冒 设计&#xff1a;沐由 毫无疑问&#xff0c;生成式AI已然成为当今技术发展和应用创新的重要引擎之一。 过去的一年多时间里&#xff0c;我们每个人都在目睹和见证着生成式AI是如何以移山倒海的力量&#xff0c;为诸多行业带来革命性乃至颠覆性的变革&…

计算机网络7——网络安全4 防火墙和入侵检测

文章目录 一、系统安全:防火墙与入侵检测1、防火墙1&#xff09;分组过滤路由器2&#xff09;应用网关也称为代理服务器(proxy server)&#xff0c; 二、一些未来的发展方向 一、系统安全:防火墙与入侵检测 恶意用户或软件通过网络对计算机系统的入侵或攻击已成为当今计算机安…

Vue——监听器简单使用与注意事项

文章目录 前言编写简单demo注意事项 前言 监听器&#xff0c;在官网中称为侦听器&#xff0c;个人还是喜欢称之为监听器。官方文档如下&#xff1a; vue 官网 侦听器 编写简单demo 侦听器在项目中通常用于监听某个属性变量值的变化&#xff0c;并根据该变化做出一些处理操作。…

【python科学文献计量】关于中国知网检索策略的验证,以事故伤害严重程度检索为例

关于中国知网检索策略的验证,以事故伤害严重程度检索为例 1 背景2 文献下载3 数据处理1 背景 由于要进行相关研究内容的综述,需要了解当前我国对于事故伤害严重程度的研究现状,采用国内较为知名的检索网站(中国知网)进行文献数据集检索 由于最近知网出bug,检索的结果在…

HTML+CSS+JS 选项卡导航栏

效果演示 实现了一个导航栏切换内容的效果。页面上方有一个导航栏,每个导航项都有一个圆形背景,点击导航项时,圆形背景会放大并显示对应的内容。每个内容区域都包含一个大号字母,数字会在内容区域显示时淡入。点击其他导航项时,当前内容区域会淡出并隐藏,同时新的内容区域…