# @audio/pitch-pyin 中文文档

规范地址：https://npmcn.com/package/%40audio/pitch-pyin/

版本：2\.1\.0
npm 元数据更新时间：2026-10-12T02:59:24.869Z
中文译文更新时间：2026-11-07T04:34:40.881Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40audio/pitch-pyin
原文对照：https://npmcn.com/package/%40audio/pitch-pyin/?lang=original
项目主页：https://github.com/audiojs/pitch/tree/main/packages/pitch-pyin
源码仓库：https://github.com/audiojs/pitch

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

- 包体积（解压后）：34.6 kB，8 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=18
- 运行依赖：1 个
- 首次发布：2026-07-08T19:45:37.905Z
- 最新版本发布：2026-10-12T02:59:24.682Z
- 近 30 天下载量：4061（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：4（近 12 个月 4 个）

## 中文简介

pYIN——概率主义的YIN(Mauch & Dixon,2014年)

## 安装

```sh
npm install @audio/pitch-pyin
```

也可以使用：`pnpm add @audio/pitch-pyin`、`yarn add @audio/pitch-pyin`、`bun add @audio/pitch-pyin`

## README

# @ audio/pitch-pyin (英语) [![npm](https://img.shields.io/npm/v/@audio/pitch-pyin)](https://www.npmjs.com/package/@audio/pitch-pyin) [![MIT](https://img.shields.io/badge/MIT-%E0%A5%90-white)](https://github.com/krishnized/license)

pYIN——概率主义的YIN(Mauch & Dixon,2014年)

```
npm install @audio/pitch-pyin
```

```js
import pyin, { track, notes } from '@audio/pitch-pyin'
```

**Mauch & Dixon, 2014 (英语).** 概率YIN——以比他(2,18)之前加权的多阈值运行YIN,产生对候选投子的分布,而不是单一硬取. 比YIN更强壮 在模糊的框上.

```js
let result = pyin(samples, { fs: 44100 })
// → { freq: 440.1, clarity: 0.92, candidates: [{ freq: 440.1, prob: 0.85 }, ...] }
```

| 参数 | 默认 |  |
| --- | --- | --- |
| `fs` | `44100` | 样本率(赫兹) |
| `minFreq` | `50` | 最小可探测频率(Hz) |
| `maxFreq` | `2000` | 最大可探测频率 (Hz) |

与其他原子不同,单帧结果也带有 `candidates` ——在被测出期间的完整后期,按概率排序,每后期 `{ freq, prob }` 与 `prob` 改为1名候选人. `clarity` 是(被宣布的)候选人集所捕获的总概率质量,而不是一个一峰的信心.

在一系列框架上, `track` 运行 pYIN 的第二阶段和 `notes` 将结果分为:

```js
let { times, f0, voiced, prob } = track(samples, { fs: 44100 })   // frame i at i·hopSize/fs, f0 0 where unvoiced
let events = notes(samples, { fs: 44100 })                        // → [{ time, duration, freq, midi, clarity }, ...]

let write = notes({ fs: 44100 })   // streaming, track too
write(block)                       // → the notes finished so far
write()                            // → the rest
```

| 参数 | 默认 |  |
| --- | --- | --- |
| `frameSize` | `2048` 在44.1千赫时 | 框架(样本):2的最短功率,其YIN窗口有一段时期 `minFreq` |
| `hopSize` | `256` 在44.1千赫时 | 跳(样本), 5.8毫秒 |
| `lag` | `4096` | 决定每个框架的框架:流最多在输入后如此之多 |
| `minDuration` | `0.1` | `notes`: 保存最短音符(s) |
| `candidates` | 阳哥 | 第一阶段:HMM的另一个观测模型,例如: [`@audio/neural-pitch`](https://github.com/audiojs/neural/tree/main/packages/neural-pitch)是因为 |

`track` Viterbi-decodes pYIN的发音为HMM. 国家是0.1-Semitone bines from `minFreq` 改为 `maxFreq`,发音或未发音;发音动能为每秒35.92八分之多,开出有0.01概率的开关(librosa.pyin的默认). 声音状态占用了候选人的一半概率(Vamp插件) `yinTrust`),它保持了未发声路径的开通,因此音符之间的跳跃不会被八分之一的去掉. 一旦每条维特比路径都同意, 或者,如果它们没有在其中达到 `lag` 框,沿着最佳路径(固定的lag解码,作为 pYIN Vamp 插件):内存在任意长度上保持被约束,并有短的流 `lag` 决定每个框架在其输入后有一个固定的间隔。 反对librosa.pyin 1.0:差异函数为YIN自己的(librosa0-expends the frame,它拉出低音速尖锐),候选人在一个宾加分中,以及 `f0` 是解码的垃圾桶内的候选人,而不是垃圾桶中心.

`notes` 是托尼的注解模型,带有pYIN Vamp插件的参数和输出:攻击,平稳和无声状态,每半音为3发. Vibrato和一勺入个音符 留在里面; 同样的音符再次启动一个新的音符, 电平在两个框内上升了1/0.7倍; 一个快滑翔机在它的尾端与音符相接, 通过音符缓慢的一步. `freq` 是音符框的中位点, `clarity` 他们表示的概率.

`candidates` 替换第1阶段,并保留HMM和音符模型。 它已经 `candidates.js`签名 : `(frameSize, fs, minFreq, maxFreq) → run`时 `run(frame)` 填充后返回候选人数 `run.freq`, (中文(简体) ), `run.prob` (每个候选人的投出概率最多1个)和 `run.rms` (音符读取水平); `run.frameSize` 财务报告和审定财务报表 `run.lead` 设定一个框架有多少样本,其中有多少样本在时间之前。 没有它,输出是相同的,bit for bit.

**使用时 :** 模糊的内容——有气息的相声,有吵闹的录音,或者当你需要一个投出后音进行下游HMM跟踪时. 语音或独奏乐器的美乐德:用发音平滑的f0(`track`页:1`notes`) (中文(简体) ).  
**不为:** 多声音频:每帧一发.  
**参考:** 毛奇和狄克逊, ["pYIN:使用概率阈值分布的基本频率估计器"](https://doi.org/10.1109/ICASSP.2014.6853678), ICASSP 2014 (英语). 毛奇等编;, ["电脑辅助的Melody Note 使用托尼软件转录:准确性和效率"](https://www.tenor-conference.org/proceedings/2015/04-Mauch-Tony.pdf),TENOR 2015 (英语).

* * *

部分 [@ audio/ pitch (英语)](https://github.com/audiojs/pitch) ——投出家族伞. 此 README 由伞形文件生成 .

麻省理工学院 [音频](https://github.com/audiojs)

## 常见问题

### @audio/pitch-pyin 是什么？

pYIN——概率主义的YIN\(Mauch & Dixon,2014年\)

### 如何安装 @audio/pitch-pyin？

在项目目录运行 npm install @audio/pitch-pyin，或使用 pnpm add / yarn add / bun add。

### @audio/pitch-pyin 支持 TypeScript 吗？

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

### @audio/pitch-pyin 支持 ESM 还是 CommonJS？

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

### @audio/pitch-pyin 需要什么版本的 Node\.js？

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

### @audio/pitch-pyin 可以商用吗？

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

### @audio/pitch-pyin 的下载量有多少？

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

### @audio/pitch-pyin 还在维护吗？

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

