【语音】笔记

1 傅里叶变换

复制代码
单帧信号x1 -> 基信号1(频率f1) -> 映射到同频率正余弦函数 -> 得到复数向量a[1] + b[1]j -> 计算绝对值得到|X[1]|
             基信号2(频率f2) -> 映射到同频率正余弦函数 -> 得到复数向量a[2] + b[2]j -> 计算绝对值得到|X[2]|
             ...
             基信号i(频率fi) -> 映射到同频率正余弦函数 -> 得到复数向量a[i] + b[i]j -> 计算绝对值得到|X[i]|

单帧信号x2 -> 基信号(频率f1) -> 映射到同频率正余弦函数
             基信号(频率f2) -> 映射到同频率正余弦函数
             ...
             基信号(频率fi) -> 映射到同频率正余弦函数

...

其中,复数的实部ai表示对于该基信号分量在余弦波上的投影强度,虚部bi对应于在正弦波上的投影强度。对复数计算绝对值得到该基信号的幅度|X *i* | = 根号下 a *i*² + b *i*²**

这些|X *i* |结合起来形成幅度谱|X|,可以表示各个基信号分量占单帧信号的幅值强度。

1 离散傅里叶变换(DFT)

1.1 是什么

离散的数字信号(比如录音采样后的数字序列)从"时间领域"转换到"频率领域"。

  • 输入:一串随时间变化的数字(比如每秒采样44100次的音频数据)。
  • 输出:一串代表不同频率强度的数字(比如低音有多少、中音有多少、高音有多少)。

1.2 怎么工作

用各种不同频率的"正弦波"去匹配你的信号

  • 它尝试用低频正弦波去拟合,看匹配程度;
  • 再试中频、高频......
  • 最后告诉你:"你的信号里,低频成分占30%,中频占50%,高频占20%。"

2 快速傅里叶变换(FFT)

2.1 是什么

计算结果与DFT一样,但效率高。

2.2 怎么工作

假设你要计算 8 个点的 DFT:

  • DFT 做法:老老实实算 8×8 = 64 次运算。
  • FFT 做法
    1. 把 8 个点分成两组:偶数位置的点 和 奇数位置的点。
    2. 分别计算这两组 4 个点的 DFT。
    3. 再把结果巧妙合并。
    4. 继续递归拆分......直到变成最简单的 2 点 DFT。

这样,计算量从 降到了 N log₂N

相关推荐
地平线开发者17 分钟前
Transformer模型部署之性能优化指南
算法
锋行天下18 分钟前
如何用Vite实现Vue组件的按需打包和远程加载
前端·vue.js·前端框架
光影少年36 分钟前
原生DOM操作在React 中的注意事项
前端·javascript·react.js
地平线开发者38 分钟前
人在途中:从“编译失败”到“模型可落地”——CUDA 自定义算子
算法·自动驾驶
禅思院3 小时前
前端部署“三层漏斗”完全指南:从CI/CD到自动回滚的工程化实战【开题】
前端·架构·前端框架
快乐肚皮3 小时前
深入理解Loop Engineering
前端·后端
半个落月3 小时前
从递归到快速排序:用 JavaScript 把分治思想讲明白
javascript·算法·面试
风骏时光牛马4 小时前
VHDL十大经典基础功能设计实例代码合集
前端
hunterandroid4 小时前
Notification 通知:从基础到渠道适配
前端
孟陬4 小时前
Claude Code 巧思 `Ctrl+S` 暂存键
前端·后端