# 基本概念

# 音频节点

Web Audio API 在 Audio Context 中进行音频处理

音频处理流程:

  1. 创建一个音频环境(Audio Context)
  2. 创建声源,比如<audio>,振荡器节点,AudioStream
  3. 创建处理节点,比如混响,压缩
  4. 选择音频输出的终点,比如系统的扬声器,远端的 RTCPeer
  5. 连接上面的这些节点

# 音频数据

# 什么是样本

当一个音频信号被处理时,取样意味着从一个连续的信号转化为离散的信号;更具体地说,一个连续的声波(例如一个正在演奏的乐队发出的声音)会被转化成一系列的样本点(一个时间上离散的信号),计算机只可以处理这些离散的样本块。

参考:香农采样定理 (opens new window)

# 音频片段

一个音频片段(AudioBuffer)会包含几个参数,声道数,音频帧数,音频的采样率

其中采样率和音频帧数的关系如下:

帧数 = 采样率*音频时间
var context = new AudioContext();
// 声道数 ,音频帧数,采样率
var buffer = context.createBuffer(2, 22050, 44100);

上面这段代码,创建了一个音频上下文,然后在这个上下文中获取到了一个双声道,采样率为 44.1KHz 的 0.5 秒音频片段

# 音频的存储方式

网页音频接口采用分离式的片段存储,方便对每个声道单独处理

LLLLLLLLLLLLLLLLRRRRRRRRRRRRRRRR (对于一个有16帧的音频片段)

而音频文件存储等不需要音频加工的地方则采用交错式

LRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLR (对于一个有16帧的音频片段)

# 声道

  • 单声道
  • 双声道 左声道 右声道
  • 四声道 左声道 右声道 环绕左声道 环绕右声道
  • 5.1 声道 在四声道基础上增加了中央声道和低音炮

# 混频