@audio/pitch-pyin

中文文档
2.1.0发布于 2026/10/12MITTypeScriptES Module近 30 天下载 4061

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

中文使用文档

@ audio/pitch-pyin (英语) npm MIT

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

npm install @audio/pitch-pyin
import pyin, { track, notes } from '@audio/pitch-pyin'

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

let result = pyin(samples, { fs: 44100 })
// → { freq: 440.1, clarity: 0.92, candidates: [{ freq: 440.1, prob: 0.85 }, ...] }
参数默认
fs44100样本率(赫兹)
minFreq50最小可探测频率(Hz)
maxFreq2000最大可探测频率 (Hz)

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

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

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
参数默认
frameSize2048 在44.1千赫时框架(样本):2的最短功率,其YIN窗口有一段时期 minFreq
hopSize256 在44.1千赫时跳(样本), 5.8毫秒
lag4096决定每个框架的框架:流最多在输入后如此之多
minDuration0.1notes: 保存最短音符(s)
candidates阳哥第一阶段:HMM的另一个观测模型,例如: @audio/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页:1notes) (中文(简体) ).
不为: 多声音频:每帧一发.
参考: 毛奇和狄克逊, "pYIN:使用概率阈值分布的基本频率估计器", ICASSP 2014 (英语). 毛奇等编;, "电脑辅助的Melody Note 使用托尼软件转录:准确性和效率",TENOR 2015 (英语).


部分 @ audio/ pitch (英语) ——投出家族伞. 此 README 由伞形文件生成 .

麻省理工学院 音频

版本与发布记录

@audio/pitch-pyin 共发布 4 个版本,首次发布于 2026/07/09;过去 12 个月发布了 4 个版本。

版本发布日期距今
2.1.0latest2026/10/1226 天前
2.0.02026/09/291 个月前
1.0.12026/07/113 个月前
1.0.02026/07/094 个月前

关于 @audio/pitch-pyin 的常见问题

@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 和提交记录判断。