@audio/decode-dsd

中文文档
1.0.0发布于 2026/08/29MITTypeScriptES Module近 30 天下载 54.6万

解码 DSD (DSF, DFF) 音频到 PCM 样本

中文使用文档
文档目录6 节
  1. 格式
  2. API 密码
  3. decode(src, opts?): AudioData
  4. decoder(opts?): DSDDecoder
  5. 数字
  6. 许可证

@ audio/decode-dsd (英语) npm MIT

解码DSD (DSF, DFF) 音频到PCM浮标样本.

npm install @audio/decode-dsd
import decode, { decoder } from '@audio/decode-dsd'

DSD是一款以2.8224 MHz和上("DSD64","DSD128",". 进入PCM是一个低通+被毁灭:一个Kaiser-windowed-sinc FIR可以去除被推向音频波段上方的噪声形状的分量化噪声,然后保存出每一个Ns样本. 第一个被毁灭的阶段(raw bits → 8× 该速率)直接运行在用每字节检索表的1位流上——塞巴斯蒂安·盖斯曼的经典把戏 dsd2pcm 时速 (BSD),同样被ffmpeg's使用 dsd_lsbf_planar编号 :dsd_msbf 解码器;这是同一想法的独立执行,而不是一个端口. 第二道普通的损毁飞行情报区(在多位浮流上,价格便宜得多)达到44.1/88.2/176.4千赫.

let { channelData, sampleRate } = decode(dsfOrDffBytes)

let dec = decoder({ sampleRate: 88200 })
let head = dec.decode(chunk1)   // synchronous; partial blocks carry over
let tail = dec.flush()
dec.free()

两者 decode() 财务报告和审定财务报表 decoder() 是同步的——没有WASM,没有同步设置.

格式

DSF 数据源 (Sony DSD流文件): DSD 编号 :fmt 编号 :data 块,可达5.1个通道,DSD64/128/256/512样本率,1位LSB第一或MSB第一包装(按 fmt 块 bitsPerSample 字段,与 光谱 定义它),数据在固定的4096字节-每道块中互出. 跟踪 ID3v2 标记( 由 DSD 块头)通过 @audio/decode-dsd/meta。 。 。 .

DFF 翻译 (哲学DSDIFF): FRM8编号 :FVER编号 :PROP (单位:千美元)FS, (中文(简体) ), CHNL, (中文(简体) ), CMPR页:1DSD 块,数据互出字节-每道,总是MSB第一. DST 压缩文件 (CMPR =: 'DST '投掷 Unsupported: DST —— DST 是一个单独的无损编码器,而不是生的DSD. 已编辑主块( E)DIIN编号 :DITI/...)被忽略. 非标准 ID3 如果存在,块也可以通过 @audio/decode-dsd/meta。 。 。 .

API 密码

decode(src, opts?): AudioData

解码完整 Uint8Array 或者说 ArrayBuffer。 。 。 .

decoder(opts?): DSDDecoder

  • dec.decode(data)解码一个块。 DSF需要一个完整的 4096 × channels-每个通道的字节块组,然后才能解码任何东西(这是容器本身的间叶单元);DFF只需要一个 channels-字节框.
  • dec.flush(): 零- 将一个短的最后块与容器自身的框架大小相匹配(将DSF spec本身的会合部分最后一个块相匹配)并解码——它不会单独排出FIR的组-延迟尾.
  • dec.free(): 释放状态. 同上,注:.
选项默认
sampleRatedsdRate / 32产出率。 必须等于 dsdRate / 8, (中文(简体) ), /16, (中文(简体) ), /32,或 /64 (DSD64 → 352.8k / 176.4k / 88.2k / 44.1k) ——字节-外观-表相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相.
cutoff0.45传出带边缘,作为输出率的一小部分,用于确定最终率的阶段.
length计算该舞台的FIR水龙头。 更长 = 接近 stopband 目标,慢点.
stopband100目标停止波段衰减(dB),用于得到凯瑟β.

AudioData 实值 { channelData: Float32Array[], sampleRate: number }。 。 。 .

DSD的1位±1地图直接到PCM全比例图——没有应用增益变化. SACD材料在DSD的名义"0分贝"中被掌握,相对于PCM全尺寸可以合法地击出+6分贝;这种解码器不会夹住或再正常化,因此这种材料会像其他比特透明的DSD解码器一样精确地从Float32(±1外值)的意义上剪接.

数字

  • Bit-domain 第1阶段(固定):192个自来水龙头(96-tap half + 对称,12字节取景表),截取0.45×(dsdRate/8),100个dB目标截取带.
  • 第2阶段(按请求构建):从Kaiser公式计算出在请求时真正无名的过渡波段(通过波段边缘到毁灭者自己的镜点)的长度 stopband。 。 。 .
  • 通过正确合成的5等1位调制解调器测量出(第2个测序测试语气), test.js:在44.1k/88.2k/176.4k(需要80dB,在调制器自己的~100+dB理论上限下保守)的波段SNR 114–117 dB——见 test.js 以准确的引号发誓.
  • 对照 ffmpeg -i x.dsf -f f32le -ar 88200 -: 0.000分贝以内1千赫兹音色振幅,相位为1.6°后延迟对接后,持续时间精确.
  • 速度:60 s 立体声 DSD64 → 88.2 kHz 解码于 QQ 2.1 s (纯 JS,单核).

许可证

ॐ • 妇女 麻省理工学院

使用时 : 您有原始的DSD/SACD-rip材料(.dsf编号 :.dff)并需要PCM——回放,格式转换,或喂入常规DSP链. 不是 DST 解码器( DST 压缩 DFF 扔出) 也不是 DSD 编码器。 。 。 .


部分 @ audio/ 代码 ——解码出家伞.

麻省理工学院 音频

版本与发布记录

@audio/decode-dsd 共发布 1 个版本,首次发布于 2026/08/29;过去 12 个月发布了 1 个版本。

版本发布日期距今
1.0.0latest2026/08/292 个月前

关于 @audio/decode-dsd 的常见问题

@audio/decode-dsd 是什么?

解码 DSD (DSF, DFF) 音频到 PCM 样本

如何安装 @audio/decode-dsd?

在项目目录运行 npm install @audio/decode-dsd,或使用 pnpm add / yarn add / bun add。

@audio/decode-dsd 支持 TypeScript 吗?

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

@audio/decode-dsd 支持 ESM 还是 CommonJS?

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

@audio/decode-dsd 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@audio/decode-dsd 可以商用吗?

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

@audio/decode-dsd 的下载量有多少?

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

@audio/decode-dsd 还在维护吗?

最新版本 1.0.0 发布于 2026/08/29(2 个月前);至今共发布 1 个版本,其中过去 12 个月发布了 1 个;首次发布于 2026/08/29。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。