# @echogarden/wave-codec 中文文档

规范地址：https://npmcn.com/package/%40echogarden/wave-codec/

版本：0\.4\.0
npm 元数据更新时间：2026-07-22T16:42:15.320Z
中文译文更新时间：2026-11-13T05:01:54.850Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40echogarden/wave-codec
原文对照：https://npmcn.com/package/%40echogarden/wave-codec/?lang=original
项目主页：https://github.com/echogarden-project/wave-codec#readme
源码仓库：https://github.com/echogarden-project/wave-codec

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：148 kB，69 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2024-11-28T03:08:15.816Z
- 最新版本发布：2026-07-22T16:42:15.086Z
- 近 30 天下载量：21464（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：8（近 12 个月 1 个）

## 中文简介

一个全能的WAVE格式编码器和解码器. 以纯类型脚本编写 .

## 安装

```sh
npm install @echogarden/wave-codec
```

也可以使用：`pnpm add @echogarden/wave-codec`、`yarn add @echogarden/wave-codec`、`bun add @echogarden/wave-codec`

## README

# WAVE 编码和解码器

标准WAVE格式的全版编码并解码.

-   以纯类型脚本编写
-   支持核心 WAVE 标准中包含的所有样本格式和位深,包括基于 GUID 的用于 PCM 和 Float 样本格式的子格式,以及 8 位 A-law 和 Mu-law 编码器
-   忽略诸如不支持或未知子圆等 `LIST`, (中文(简体) ), `fact`, (中文(简体) ), `plst` 财务报告和审定财务报表 `junk`
-   支持读写 WAVE 缓冲器大于 4 GiB,通过解析长度为 2^32 - 1 的块来延伸至缓冲器的末端(即使它大得多). 这与FDISPEG对长数据或流数据输入和输出方法兼容
-   在Node.js、Deno、Bun、浏览器上运行
-   无依赖关系

## 安装

```
npm install @echogarden/wave-codec
```

## 基本用途

编码和解码原始音频数据,作为32位浮标样本的信道阵列:

```ts
import { encodeWaveFromFloat32Channels, decodeWaveToFloat32Channels } from '@echogarden/wave-codec'

// A stereo pair with a few silent samples
const float32Channels = [
    new Float32Array([0, 0, 0, 0]),
    new Float32Array([0, 0, 0, 0]),
]

const waveData = encodeWaveFromFloat32Channels(float32Channels, 44100)

const decodedChannels = decodeWaveToFloat32Channels(waveData)
```

## 原始数据缓冲器的编码和解码

数据为 `Uin8Array`,并可能包含WAVE标准所支持的任何样本格式,如8位16位,24位,32位整数原始整数PCM,32位或64位浮点,Alaw或Mulaw. 多个渠道应当互通.

```ts
import { encodeWaveFromDataBuffer, decodeWaveToDataBuffer, SampleFormat } from '@echogarden/wave-codec'

const audioBuffer = new Uint8Array([0, 0, 0, 0])

const waveData = encodeWaveFromBuffer(
    audioBuffer, // Audio data
    44100, // Sample rate
    1, // Channel count
    16, // Bit depth, can be 8, 16, 24, or 32 for PCM, 32 or 64 for Float, 8 for Alaw and Mulaw
    SampleFormat.PCM, // Sample format, can be PCM, Float, Alaw or Mulaw
    0 // Speaker position mask (used for multichannel audio)
)

const {	decodedAudioBuffer,
        sampleRate,
        channelCount,
        bitDepth,
        sampleFormat,
        speakerPositionMask } = decodeWaveToBuffer(waveData)
```

## 在32位浮点通道和数据缓冲器之间转换

这些方法在内部用于将任何支持的样本格式转换为32位浮管,并作为公用方法被曝光.

32位浮式信道阵列 - > 音频数据缓冲器 :

```ts
float32ChannelsToBuffer(
    audioChannels: Float32Array[],
    targetBitDepth: BitDepth = 16,
    targetSampleFormat: SampleFormat = SampleFormat.PCM): Uint8Array
```

音频数据缓冲 - > 32 位浮式通道阵列 :

```ts
bufferToFloat32Channels(
    audioBuffer: Uint8Array,
    channelCount: number,
    sourceBitDepth: BitDepth,
    sourceSampleFormat: SampleFormat): Float32Array[]
```

## 许可证

麻省理工学院

## 常见问题

### @echogarden/wave-codec 是什么？

一个全能的WAVE格式编码器和解码器\. 以纯类型脚本编写 \.

### 如何安装 @echogarden/wave-codec？

在项目目录运行 npm install @echogarden/wave-codec，或使用 pnpm add / yarn add / bun add。

### @echogarden/wave-codec 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @echogarden/wave-codec 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @echogarden/wave-codec 可以商用吗？

@echogarden/wave-codec 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @echogarden/wave-codec 的下载量有多少？

根据 npm 官方下载统计，@echogarden/wave-codec 在 2026/10/13 – 2026/11/11 这 30 天内被下载 21,464 次，日均约 715 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @echogarden/wave-codec 还在维护吗？

最新版本 0\.4\.0 发布于 2026/07/23（3 个月前）；至今共发布 8 个版本，其中过去 12 个月发布了 1 个；首次发布于 2024/11/28。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

