【web音频学习(一)】音频基础

物理的声音

音调

由声波的频率决定,频率越高,音调越高;频率越低,音调越低。

  • "振动次数"指一次完整的往复运动,即一个完整周期。
  • 单位:赫兹 (Hz),1 Hz = 1 次/秒。

声响

由声波的振幅决定,振幅越大,能量越多,人耳感觉越响;振幅越小,越轻。

  • 单位:分贝 (dB)。

音色

由声波的波形决定,体现声源的独特"指纹"。

计算机中的音频

基本概念

采样率

每秒钟对模拟声波进行采样的次数

  • 单位 Hz(或 kHz)。

  • 常见值:44 100 Hz(CD 音质)、48 000 Hz(专业音频)。

  • 一般采用率需要最少是声调的两倍,一次声波震动,最少要记住最高点和最低点,这样才能记录足够多的数据。

  • 采样率越高,生产的音频图波形越圆滑。

采样大小(位深)

每次采样记录的量化精度,用多少个二进制位来表示瞬时振幅。

比如:16bit 所表示的数据返回是 [2**-15,2**15]

  • 常见值:16 bit(CD)、24 bit(高清录音)。
  • 位深越大,采样数据精度越大,动态范围越宽,噪声越小。

声道

同时记录的独立音频信号数量

  • 1 = 单声道(Mono),2 = 双声道/立体声(Stereo)。
  • 声道数量遇到,音频音质更大,但是音频大小也会倍数增长。

位速(码率 / 比特率)

每秒存储或传输的总数据量

  • 单位 bit/s(或 kbps、Mbps)。
  • 计算:位速 = 采样率 × 采样大小 × 声道数 例:44 100 Hz × 16 bit × 2 ch ≈ 1 411 kbps(CD 立体声)。

例题

采样频率 44100 Hz,采样精度16 bit,单声道,采集3 分钟,文件大小是多少MB。

44100 * 16 * 3 * 60 = 127008000 bit

2116800 / 8 / 1024 / 1024 ≈ 15.141M

原始音频数据PCM

未经压缩的原始音频数字信号,只记录瞬时振幅,不压缩、不编码。

  • 单声道:采样点按时间顺序依次排列。
  • 多声道(如立体声) :各声道采样值 交叉(interleaved)存放,小端字节序: 例:L R L R ...

位宽 / 数值范围

位宽 每采样字节 典型类型 数值区间 备注
8 bit 1 UInt8 0‒255 无符号
16 bit 2 Int16 --32 768‒+32 767 小端
24 bit 3 Int24 --8 388 608‒+8 388 607 需对齐
32 bit 4 Int32 --2 147 483 648‒+2 147 483 647 小端
32 bit Float 4 Float32 --1.0‒+1.0(实际裁剪区) Web 麦克风常用

Web 端麦克风 API 返回的 Float32Array32-bit IEEE-754 浮点 PCM ,每个采样 4 字节,值域 [-1.0, 1.0]

相关推荐
卓伊凡2 小时前
完整的苹果内购in-purchase实例-采用object-c语言使用苹果的Storyboard开发模式的完整购买实例
前端
Mintopia2 小时前
Next.js自建部署:Docker + PM2 + Nginx
前端·javascript·全栈
艾小码2 小时前
还在重复造轮子?3个Vue3组合函数让你开发效率翻倍!
前端·javascript·vue.js
一枚前端小能手2 小时前
🎨 CSS-in-JS到底香不香?性能陷阱让我重新思考了
前端·javascript·css
章丸丸2 小时前
Tube - Infinite Loading
前端·next.js
我是日安2 小时前
从零到一打造 Vue3 响应式系统 Day 3 - 订阅者模式:响应式设计基础
前端·vue.js
拜无忧2 小时前
【知识点】vue3不常用api总结-针对前端中级-进阶
前端·vue.js·性能优化
Mintopia2 小时前
AIGC在电商Web端的个性化推荐技术实现
前端·javascript·aigc
双向332 小时前
前端性能优化:Webpack Tree Shaking 的实践与踩坑
前端