@audio/tune-curve

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

沿着投出曲线重调一个声音,它自己的光滑循环重排(TD-PSOLA):成形物和相容物保存,流出(Melodyne class)

中文使用文档

@ audio/tune-曲线 npm MIT

沿着投出曲线重定向一个声音,它自己的光滑循环重排(TD-PSOLA):成形物和所保存的相容物(Melodyne类)

npm install @audio/tune-curve
import tuneCurve from '@audio/tune-curve'

tuneCurve(voice, { semitones: 3, fs: 44100 })                               // a constant shift
tuneCurve(voice, { semitones: { t: [0, 1, 1.5], v: [0, 2, 0] }, fs })      // a drawn curve: seconds → semitones
tuneCurve(voice, { semitones: t => 0.5 * Math.sin(2 * Math.PI * 5 * t), fs }) // vibrato
tuneCurve(voice, { semitones: 2, f0: { t: times, v: hz }, fs })            // cycles found on a pitch track given

let write = tuneCurve({ semitones: curve, fs })   // streaming: write(chunk) → output `write.latency` samples behind
let out = write(chunk), tail = write()

一次的周期被一扇双开的窗户绕住其标志,并按曲线要求的间隔铺设(Moulnes & Charpentier, 语音交流 9, 1990),每个叶片取出源的那一面而不超过相距的时间,如普拉特的PSOLA有:两个叶片相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相 脉搏形状,声道的响起在上面,呼吸和焦躁保持声音的自发性,所以成形者停留在原地而无物被再合成. 未发声相声相声相声相声相相声相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相 如果比例为1,周期设于原地,则输出为输入.

重排时段,周期比QQ( ratio - 1) 输入时提前运行, 当比例返回到 1 时, 某一时段的某个部分就会被留下: 接下来是什么( 输入, 交叉时返回) 将会遇到远处, 最糟糕时半个时段, 两个取消 。 在比分回回1之前的100多米,他们从10多米的高度回到了自己的分数上(大约一个声音以最快的速度移动出几个半音), 日本航天局 111, 2002),从这里输入回取样品. 在8个录音上(VoiceBank, Spoken Wikipedia),一个曲线0.05至5个半音或上下下相接3个半音,它的收尾中行:在回放为0后超过10ms后,与输入相差2.2分B,高于输入本身的关卡(中间为32分;最差为5.2分),现在任何一个都无.

循环作为音频流:f0 by pYIN(Mauch & Dixon, ICASSP 2014;); @audio/pitch-pyin在频道的平均值上,每5.8 ms的帧,它的维特比路径在最后一帧读取的0.15 s之内决定(在0.1 s之内,讲座的帧已经取出每条八分线下维特比的距离);每个周期的标记,在表示的运行的第一个周期和下一个周期中,第一个在最响亮的样本中,移动到一个波形比最佳的时期(正常的关联,在样本之间细化);从跑的第一个标记,每次最多可达40 ms的周期,而每个周期与一个关联度超过7.7(Praat对一个脉冲经过一个表示的间隔的边缘的测试)相匹配,从不进入一个表示的标记:pYIN在它的框架大部分被表达后发现一个声音,每一次运行的前20 ms左右在剩余时间被移动时停留在它的投放地(6.5%的框架Praat在8个录音上表示,现在0.9%). YIN在持续运行语音表达的阈值(35:其自有的15只持有一个不滑翔在帧内的声音),为语音取出一个强烈的第二口琴的时期(/i/,/u/,/ʊ/,每个帧上都有他们的第一种形式):脉冲和脉冲之间的波纹被切为两个循环,每个循环跳过或反复地将两个善良的相并起,声音的相相相相相跳在那里. 一次讲座降低了半音,有2.4个这种接合的秒,现在没有;Vocadito(158 s)的8名以上的独唱歌手取而代之的PYIN路径(离线)取而代之的是30毫秒的相框,其周期(减去YIN最不正常化的差别)从+2 simtons的0.8多从103多降至36多;在+2 simtons的183到48;在+5的278到76。 低调的投出会使其周期比长更相去甚远,并留下它们之间的空隙:叶片被拓宽以填充在周期中的任何一面所取出,而八分之一,相隔两段,使输入的自相回放. 循环在分数位置通过一个被Kaiser-windowed sinc来读取,因此输出在新投出时是周期性的,而不是被整个样本所焦躁.

options默认
semitones0数字、 流起秒函数或曲线 { t, v } (各点之间,平地过其端口)
ratio转换为频率比, 形式相同
fs44100赫兹(sampleRate 也读取)
minFreq60赫兹,一个循环中的最低投出量
maxFreq1000赫兹,最高
rmin0.25曲线的最小比值: 溪流的耐久度覆盖它
f0声音的发声 找到它的循环 而不是pYIN 的: 一个曲线 { t, v } (秒 = Hz, 0 未发声,在表示的点之间以对数频率直取) 或秒函数

频道在一集循环上被重新调整,在他们的平面上被找到,所以一个立体声保持了它的形象. 流出输出等于样本的批量输出样本,但输入是被块化的:回跑有多远是它自己的音频的意思(以周期的设定程度为准,反之,以其他方式被块化的唱出,相去甚远可达全相隔的.76分). 溪流流开来 write.latency 它输入的后方样本: 0.36 s 以44.1 kHz为单位,声音下至60 Hz将半音降低,其中多数是0.15 s pYIN的决定等待,40 ms的一跑被找回.

计量

与目标投出地(Rosenberg脉冲通过Peterson & Barney's /a/ formants,两个投出地相同)上合成的声音再合成,从−7到+12分音以120和220赫兹:

关于真相的口琴,中位数(最大)口琴之间周期形状对事实
tune-curve3.2分贝(5.7)-95分贝0.92 (中文(简体) )
@audio/shift-formant4.3分贝(6.1)-80分贝0.81 (中文(简体) )
相位锁定的vocoder10.9分贝(34.5)-64分贝0.60 (韩语)

在一次唱出录相(autio-lena)和一次语音样本上,长期频谱超过所发音的帧会停留在−4至+7个半个子(vocoder:±3.7至±12.6个dB)输入的±0.5至±1.7分贝内,投出在输入比例的中位数0.7至2.2分贝内.

使用时 : 单声道,口语或唱歌:发音校正,入声道,所画出发音曲线.
不为: 和弦,相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接.


部分 @ audio/ tun曲调家庭伞.

麻省理工学院 音频

版本与发布记录

@audio/tune-curve 共发布 4 个版本,首次发布于 2026/10/03;过去 12 个月发布了 4 个版本。

版本发布日期距今
0.4.0latest2026/10/1226 天前
0.3.02026/10/1127 天前
0.2.02026/10/041 个月前
0.1.02026/10/031 个月前

关于 @audio/tune-curve 的常见问题

@audio/tune-curve 是什么?

沿着投出曲线重调一个声音,它自己的光滑循环重排(TD-PSOLA):成形物和相容物保存,流出(Melodyne class)

如何安装 @audio/tune-curve?

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

@audio/tune-curve 支持 TypeScript 吗?

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

@audio/tune-curve 支持 ESM 还是 CommonJS?

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

@audio/tune-curve 需要什么版本的 Node.js?

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

@audio/tune-curve 可以商用吗?

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

@audio/tune-curve 的下载量有多少?

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

@audio/tune-curve 还在维护吗?

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