听见线性代数混音实验室

LINEAR ALGEBRA · SOUND LAB

混在一起,还能分开吗?

调整两条音轨的混音比例,听一听,再用消元找回原声。

正在准备音轨…

01原始音轨

同一段时间,两种声音
人声 v一段合成朗读
0:00
旋律 m一段合成乐曲
0:00

02混音工作台

也可以拖动下方滑杆
混音 uu = v + m
0:00
1
1
混音 ww = v + 2m
0:00
1
2

负系数会把波形上下翻转;0 表示不加入这条音轨。

03用消元找回原声

对两条混音做同样的行变换,看看最后会留下什么。

准备就绪

从你设置的混音比例出发

右侧的单位矩阵记录我们对混音做了哪些操作。

人声 / 旋律系数对 u / w 的操作
恢复人声 v
完成消元后查看
将与原始人声对照
恢复旋律 m
完成消元后查看
将与原始旋律对照

04用线性组合,调出不同音色

同一个音高,也能听起来柔和、空灵或明亮。先播放,再拖动谐波系数试试。

基音 220 Hz · A3
h₁ 基音220 Hz
保留基音,专注比较音色1
0
0
0
0
0

试一试:播放“纯音”,再把 h₃ 拉到 0.8。留意声音的质感怎样变化。

正弦波相加,波形也变了

显示两个基音周期
合成波形基音 h₁纵轴:原始振幅
当前线性组合
s = h₁
系数向量 (1, 0, 0, 0, 0, 0)

点击播放后,可以边拖动边听。

试听时如何处理音量?

开启后,会对合成声音整体缩放,使长音的均方根振幅一致;各谐波之间的比例不变,主观响度仍可能不同。关闭后使用固定播放增益,更直接地听到振幅随系数变化。公式和图始终显示缩放前的线性组合。

这里的“声音向量”是什么?

长音实验取 hₖ(t) = sin(2π · k · 220t)。每个 hₖ 都是一条完整的正弦波;它的频率是基音的 k 倍,称为第 k 次谐波。改变它们的组合比例,就能改变音色。

从调音色,回到线性空间

六条波形的线性组合构成 span{h₁, …, h₆}。本环节固定 h₁ 的系数为 1,调节其余系数来比较音色;允许全部系数取任意实数,才得到完整的线性空间。

听短旋律时,每个音符沿用同一组谐波比例;图与频率标签展示的是 220 Hz 长音。预设用于比较合成音色,并非真实乐器的仿真。

05 · 从声音实验,走进线性空间

为什么整段声音,也可以是向量?

刚才的消元里,等号两边有时是人声,有时是旋律。调音色时,我们又把几条正弦波组合起来。它们并不是一个数,却仍然能相加、数乘、抵消。线性空间研究的,就是这些运算共同遵守的规律。

01

先把声音看成一条完整波形

固定同一段时间 0 ≤ t ≤ T,用 f(t) 表示时刻 t 的振幅。

向量加法 · 叠加
(f + g)(t) = f(t) + g(t)

把两段声音对齐,在每个时刻将振幅相加。比如,人声加旋律得到混音。

数乘 · 缩放振幅
(αf)(t) = αf(t)

把每个时刻的振幅都乘同一个实数。0.5f 把振幅减半;−f 把波形上下翻转。

负数倍是波形反相,并非倒放;乘以 2 指振幅变成两倍,并不表示主观听感的响度恰好变成两倍。

02

实线性空间:一个集合,两种运算,八条规律

其中的元素叫作“向量”。向量可以是数列、函数、矩阵,也可以是我们正在研究的声音波形。

给定一个非空集合 V,在其中定义加法和实数数乘。首先要求运算封闭:对任意 x, y ∈ V 和 α ∈ ℝ,

x + y ∈ V,  αx ∈ V。

也就是说,运算结果仍在这个集合里。若再满足下面八条规律,就称 V 为实线性空间,也叫实向量空间。

下面 x、y、z 是 V 中任意元素,α、β 是任意实数。右侧的声音解释都指对齐后的理想波形。

  1. 加法交换律

    x + y = y + x

    两段对齐的波形相加时,交换相加顺序,结果不变。

  2. 加法结合律

    (x + y) + z = x + (y + z)

    三条音轨分组叠加,最终得到同一条波形。

  3. 存在零向量

    存在 0 ∈ V,使 x + 0 = x

    全程振幅为 0 的静音就是零向量;加入静音不改变原声。

  4. 每个向量都有相反向量

    每个 x 都有 −x ∈ V,使 x + (−x) = 0

    原波形与它的反相波形逐点相加,恰好抵消成静音。

  5. 数乘单位律

    1x = x

    振幅乘以 1,仍是原来的声音。

  6. 数乘结合律

    α(βx) = (αβ)x

    先缩小到一半,再放大两倍,振幅回到原样。

  7. 数乘对向量加法的分配律

    α(x + y) = αx + αy

    先混音再缩放,等于把各条音轨同样缩放后再混音。

  8. 数乘对实数加法的分配律

    (α + β)x = αx + βx

    0.3 倍人声加 0.7 倍同一人声,正好得到原人声。

声音为什么满足这些要求?

取 V = C([0, T], ℝ),即这段时间内所有实值连续波形的集合。两条连续波形相加、乘实数后仍连续,所以运算封闭;静音和反相波形也都在其中。其余等式在每个时刻都化为实数的运算规律,因此对整条波形成立。

这里使用不限制振幅大小的理想模型。若强行要求振幅始终在 −1 到 1 之间,放大后就可能超出范围,这样的集合对数乘不封闭。

03

两条音轨,能组成一个怎样的空间?

只用固定的人声 v 和旋律 m,把所有可能的混音收集起来。

由 v、m 张成的空间
W = span{v, m}
= {av + bm : a, b ∈ ℝ}

它是声音空间的一个子空间:其中的元素是声音,并且相加、数乘后仍留在 W 中。

为什么仍留在里面?

若 u = av + bm,w = cv + dm,那么

u + w = (a + c)v + (b + d)m
ku = (ka)v + (kb)m。

结果仍是 v、m 的线性组合。取 a = b = 0,还能得到静音。

你现在设置的两条混音
u = v + mw = v + 2m

右图画的是它们的混合系数 (a, b),不是声音的时间—振幅波形。一个点对应一整段混音。

如果 v、m 线性无关,也就是 αv + βm = 0 只能在 α = β = 0 时成立,那么每段混音的系数唯一。此时 {v, m} 是 W 的一组基,W 的维数为 2,(a, b) 就是声音 av + bm 在这组基下的坐标。

“二维”表示只需两个独立的系数来描述 W 中的声音,不是每段声音只有两个采样值。滑杆的 −3 到 3 只是展示范围;完整的 W 允许任意实系数。

04

既然能写成坐标,为什么还要讲线性空间?

坐标帮助我们计算,线性空间帮助我们识别不同对象背后的同一套结构。

电脑怎样保存声音

N 个采样值:ℝᴺ

f ↦ (f(t₁), …, f(tN))

固定采样时刻后,把振幅排成一列。本网页的数字音频确实在 ℝᴺ 中做运算;混音就是对应位置相加、数乘。

这个实验怎样描述混音

两个混音系数:ℝ²

av + bm ↔ (a, b)

当 v、m 线性无关时,只需两个数描述它们张成的空间。换一组基,同一段声音的坐标可能改变,声音本身不变。

数学怎样描述连续波形

一个函数:C([0, T], ℝ)

t ↦ f(t)

这里保留每个时刻的振幅。有限个采样值无法唯一确定任意连续波形;整个连续函数空间也无法由固定有限个基波形张成。

把共同规律提炼出来,才可以把同一个方法用于不同对象。

有限维实线性空间选好基后,都可以用 ℝⁿ 的坐标来计算。但在选坐标之前,我们就能研究声音、矩阵、多项式的相加与数乘;对于整个连续函数空间,还需要容纳无限维情形。线性空间让我们把这些情况放在同一套理论中讨论。

05

回看消元:我们一直在使用这些规律

以“可逆混音”预设 u = v + m、w = v + 2m 为例:

w − u = (v + 2m) − (v + m) = m
2u − w = 2(v + m) − (v + 2m) = v

这里用到分配律、结合律和相反向量的抵消。它们对整段声音成立,所以消元能直接找回音轨。线性代数的方法能处理声音,正是因为声音的这些运算具有线性空间的结构。

回到混音工作台再试一次