【语音】笔记

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

相关推荐
lueluelue472 分钟前
LeetCode:链表
算法·leetcode·链表
陈随易10 分钟前
FFmpeg 9.0 发布,代号 Lei,音视频处理再升级
前端·后端·程序员
橘子汽水1683 小时前
Leetcode 23,543合并K个升序链表,二叉树的直径
算法·leetcode·链表
huameinan狮子3 小时前
Adaboost算法原理与计算实例
算法
六点_dn3 小时前
RabbitMQ学习笔记-部署和使用
笔记·学习·rabbitmq
别怪我很水3 小时前
API中提供了VelocityTracker类用于计算触摸事件MotionEvent的速度,而其内部默认使用的方法就是最小二乘法,本 ...
算法·gitee·最小二乘法
用户059540174463 小时前
把AI对话记忆存储测试从手工改成Playwright+pytest,覆盖率从20%提到96%,回归时间缩短90%
前端·css
kyriewen4 小时前
别再这样写TypeScript了——Code Review中最常见的8个反模式
前端·javascript·typescript
名字还没想好☜4 小时前
Next.js ‘use client‘ 到底加在哪:Server/Client Components 边界与常见报错
开发语言·前端·javascript·react·next.js