# @audio/stretch 中文文档

规范地址：https://npmcn.com/package/%40audio/stretch/

版本：2\.3\.0
npm 元数据更新时间：2026-10-17T22:05:30.441Z
中文译文更新时间：2026-11-07T04:55:24.338Z
软件包许可：MIT

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

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

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

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

## 中文简介

时间拉伸——为@audio/stretch- \* 原子提供伞 (WSOLA,相相vocoder变体,PaulStrech,PSOLA, SMS)

## 安装

```sh
npm install @audio/stretch
```

也可以使用：`pnpm add @audio/stretch`、`yarn add @audio/stretch`、`bun add @audio/stretch`

## README

# @ audio/ stetch (英语) [![test](https://github.com/audiojs/stretch/actions/workflows/test.yml/badge.svg)](https://github.com/audiojs/stretch/actions/workflows/test.yml) [![npm](https://img.shields.io/npm/v/@audio/stretch)](https://www.npmjs.com/package/@audio/stretch) [![license](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/audiojs/stretch/blob/main/LICENSE)

在浏览器中尝试: [弹出和变速器](https://audiojs.dev/util/pitch-tempo/)。运行此软件包,没有上传.

时间拉伸算法——伞过 `@audio/stretch-*` 原子。 原子.

| 原子 | 算法 | 域名 | 质量 | CPU 软件 | 最好还是 |
| --- | --- | --- | --- | --- | --- |
| [`@audio/stretch-wsola`](https://npmcn.com/package/%40audio/stretch/#readme-wsola) | 西非 | 时间 | ★★★★ | 低级 | 单声道 |
| [`@audio/stretch-psola`](https://npmcn.com/package/%40audio/stretch/#readme-psola) | PSOLA 人民解放军 | 时间 | ★★★★ | 介质 | 单声道 |
| [`@audio/stretch-pvoc`](https://npmcn.com/package/%40audio/stretch/#readme-pvoc) | 纯相电极 | 法国克 | ★★ | 介质 | 教育基线 |
| [`@audio/stretch-pvoc-lock`](https://npmcn.com/package/%40audio/stretch/#readme-pvoc-lock) | 相位锁定的vocoder | 法国克 | ★★★★ | 介质 | 一般音乐 |
| [`@audio/stretch-pghi`](https://npmcn.com/package/%40audio/stretch/#readme-pghi) | 相相渐变电极 | 法国克 | ★★★★ | 介质 | 紫外线,滑翔,鸣叫 |
| [`@audio/stretch-pvsola`](https://npmcn.com/package/%40audio/stretch/#readme-pvsola) | 重新设置为波形 | 时间 | ★★★★★ | 介质 | 语音、独奏 |
| [`@audio/stretch-transient`](https://npmcn.com/package/%40audio/stretch/#readme-transient) | 瞬间意识活化器 | 法国克 | ★★★★★ | 介质 | 有冲击力的音乐 |
| [`@audio/stretch-hybrid`](https://npmcn.com/package/%40audio/stretch/#readme-hybrid) | HPSS 混合设备 | 时间 | ★★★★ | 高级 | 完全混合-圆筒翻转 |
| [`@audio/stretch-paulstretch`](https://npmcn.com/package/%40audio/stretch/#readme-paulstretch) | 保罗·斯特雷克 | 法国克 | —— 说 | 介质 | 极端延伸(环境、无人驾驶飞机) |
| [`@audio/stretch-sms`](https://npmcn.com/package/%40audio/stretch/#readme-sms) | 斜向建模 | 鼻窦 | ★★★★ | 高级 | 口琴/通心材料 |

投出时,请看 `@audio/shift-*` 和家人一样.

## 使用量

安装伞( 所有原子) :

```
npm install @audio/stretch
```

```js
import { transient, wsola } from '@audio/stretch'

let slower = transient(samples, { factor: 2 })          // 2× slower, same pitch
let fast   = wsola(samples, { factor: 0.75 })           // 1.33× faster

let write = transient({ factor: 1.5 })                  // real-time streaming
write(block1)
write(block2)
write()                                                  // → remaining samples
```

或者安装你需要的原子 每个原子都是自成一体的:

```
npm install @audio/stretch-transient
```

```js
import transient from '@audio/stretch-transient'
let out = transient(samples, { factor: 2 })
```

> `Float32Array` 内出; 频道数组 `[L, R]` (或 `Float64Array`(a) 接受和处理每个频道——与 `@audio/shift`。输出大小可能是可变的——小的或空的早期块在流出时是正常的.

## 时间域

### `wsola` —— 说 `@audio/stretch-wsola`

波形相似度重叠- Add, 以 SundTouch 和 sux 为分块形式 `tempo`. 输入部分被放出一跳相隔一跳,每跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相隔一跳相相隔一跳相隔一跳相隔一跳相相隔一跳相隔一跳相(相相相隔一跳相隔一跳相隔一跳相隔一跳相相隔一跳相相相隔一跳相相隔一跳相相隔一跳相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相 波形被复制,而不是被再合成,所以一个声音保持了它的光滑脉冲形状并相通保持了它们的攻击. 一个相相的vocoder保持了每一个口琴,但它们彼此不相配合,这就是为什么通过它说话听起来很遥远的原因. 频道共享一搜索. 没有FFT.

```js
import wsola from '@audio/stretch-wsola'

wsola(data, { factor: 1.5 })
wsola([left, right], { factor: 0.5, sampleRate: 48000 })
```

| 参数 | 默认 |  |
| --- | --- | --- |
| `factor` | `1` | 时间长度比, 或输入秒函数 |
| `sampleRate` | `44100` |  |
| `frameSize` | 40分钟 | 部分 |
| `hopSize` | `frameSize · 3/5` | 输出跳;部分横跨其余部分(16毫秒,一个周期为62.5赫兹) |
| `delta` | 8分钟 | 搜索(±),该期间的一半 |

**使用时 :** 缩短语音、独唱或单声道乐器, [`pvsola`](https://npmcn.com/package/%40audio/stretch/#readme-pvsola) (复制会重复噪音和反响成一股花花相).  
**不为:** 和弦并相会. 一个对齐不能适合多个投出;使用频率域方法.

### `psola` —— 说 `@audio/stretch-psola`

(原始内容存档于2017-07-21). Pitch-Synchronous Overlap-Add. 通过自相接探测出投出周期,然后在投出周期边界上检测出窗口颗粒. 由于谷物与投出周期一致,重叠时没有相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相.

```js
import psola from '@audio/stretch-psola'

psola(data, { factor: 1.5 })
psola(data, { factor: 0.75, sampleRate: 48000 })
psola(data, { factor: 2, minFreq: 100, maxFreq: 400 })  // male voice range
```

| 参数 | 默认 |  |
| --- | --- | --- |
| `factor` | `1` | 时间长度比 |
| `sampleRate` | `44100` | 投出探测频率范围 |
| `minFreq` | `80` | 最低预期投出( Hz) |
| `maxFreq` | `500` | 最高预期投出( Hz) |

**使用时 :** 语音,独声,单声道乐器,因子为0.5–2×.  
**不为:** 多管材料——自相通取出一发投出期,使和弦被搅拌. 极端比率(>2×)造成差距.

## 频率域

### `pvoc` —— 说 `@audio/stretch-pvoc`

纯相相相相相. 每个垃圾箱的相位以瞬间频率独立推进. 磁性研究被保留下来,但不一致的相和相相相关系使复杂的信号具有扩散,"水下"的质量.

```js
import pvoc from '@audio/stretch-pvoc'
pvoc(data, { factor: 2 })
```

| 参数 | 默认 |  |
| --- | --- | --- |
| `factor` | `1` | 时间长度比 |
| `frameSize` | `2048` | FFT 尺寸( 功率 2) |
| `hopSize` | `frameSize/4` | 在相框间跳动 |

**使用时 :** 教育基线,简单的通体信号.  
**不为:** 一般音乐——使用 [`pvoc-lock`](https://npmcn.com/package/%40audio/stretch/#readme-pvoc-lock) 或者说 [`transient`](https://npmcn.com/package/%40audio/stretch/#readme-transient)。 。 。 .

### `pvoc-lock` —— 说 `@audio/stretch-pvoc-lock`

相锁发泡器(Laroche & Dolson,1999年)。 在传播相后,将非高峰相机箱锁定在最接近光谱峰值的自转上. 恢复口琴相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相.

```js
import pvocLock from '@audio/stretch-pvoc-lock'
pvocLock(data, { factor: 2 })
```

与 [`pvoc`](https://npmcn.com/package/%40audio/stretch/#readme-pvoc)。 。 。 .

**使用时 :** 通俗音乐——不需要瞬息万变的物质.  
**不为:** 攻击有重要意义的震撼材料——使用 [`transient`](https://npmcn.com/package/%40audio/stretch/#readme-transient)。 。 。 .

### `pvsola` —— 说 `@audio/stretch-pvsola`

一个相位锁定的vocoder,其帧从输入器本身的波形中在任何适合的地方重新启动(Moinet & Dutoit, DAFx 2011). 如果一个声音是周期性的,其帧会取出输入的自相相并保持其光滑脉冲的形状;噪音,呼吸和反响会停留在vocoder上,因此减速从不重复它们(WSOLA的发光),也不会传播出声音(vocoder的发光).

```js
import pvsola from '@audio/stretch-pvsola'
pvsola(data, { factor: 1.5 })
```

| 参数 | 默认 |  |
| --- | --- | --- |
| `factor` | `1` | 时间长度比, 或输入秒函数 |
| `sampleRate` | `44100` |  |
| `frameSize` | 46分钟 | 框架, 2 的功率 |
| `shift` | 4.5 毫秒 (千分点) | 移动搜索重置 (±) |

**使用时 :** 减慢口音或独唱声.  
**不为:** 缩短, 在哪里 [`wsola`](https://npmcn.com/package/%40audio/stretch/#readme-wsola) 保持更好的攻击.

### `pghi` —— 说 `@audio/stretch-pghi`

相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相 合成相由分析相梯度整合而成,通过最大堆积按数量顺序访问相机:不取峰取峰,不取瞬间回升;鸣叫,活字和滑翔等通过构造保持相通.

```js
import pghi from '@audio/stretch-pghi'

pghi(data, { factor: 2 })
```

| 参数 | 默认 |  |
| --- | --- | --- |
| `factor` | `1` | 时间长度比 |
| `frameSize` | `2048` | FFT 尺寸( 功率 2) |
| `hopSize` | `frameSize/8` | Hop - 梯度集成需要密集帧 |
| `tolerance` | `1e-6` | 下面的纸箱 `tolerance×max` 获得随机相 |

**使用时 :** 调制出的材料——活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活.  
**不为:** 平稳多声 [`pvoc-lock`](https://npmcn.com/package/%40audio/stretch/#readme-pvoc-lock)身份锁会复制部分内部的阶段 也就是梯度融合仅接近它们的地方.

### `transient` —— 说 `@audio/stretch-transient`

瞬变相-有意识相锁活化器(Röbel,2003年)。 测量相框之间的光谱通量;一瞬间,光谱通量会重新回到原来的分析阶段,而不是传播光谱通量,保持出鼓和取出的攻击锐度。 隐形相锁.

```js
import transient from '@audio/stretch-transient'

transient(data, { factor: 2 })
transient(data, { factor: 1.5, transientThreshold: 2.0 })  // less sensitive detection
```

| 参数 | 默认 |  |
| --- | --- | --- |
| `factor` | `1` | 时间长度比 |
| `frameSize` | `2048` | FFT 尺寸( 功率 2) |
| `hopSize` | `frameSize/4` | 在相框间跳动 |
| `transientThreshold` | `1.5` | 光谱通量阈值( 较高 = 较少的重排) |

**使用时 :** 多数音乐的正确默认——打击,混合出处.  
**不为:** 语音/语音——使用 [`psola`](https://npmcn.com/package/%40audio/stretch/#readme-psola). 极限拉伸-使用 [`paulstretch`](https://npmcn.com/package/%40audio/stretch/#readme-paulstretch)。 。 。 .

### `hybrid` —— 说 `@audio/stretch-hybrid`

相和/相和杂交(Driedger & Müller). 中相-过滤器HPS将分光分出分出两层;相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相.

```js
import hybrid from '@audio/stretch-hybrid'

hybrid(data, { factor: 2 })
```

| 参数 | 默认 |  |
| --- | --- | --- |
| `factor` | `1` | 时间长度比 |
| `frameSize` | `2048` | 用于 HPSS + 口琴道的 FFT 大小 |
| `percFrame` | `512` | 法律厅打击层框架 |
| `harmMedian` | `17` | 跨时间的中间过滤器(框架) |
| `percMedian` | `17` | 跨频率的中间滤波器(相机) |

**使用时 :** 完全混合——取出圆筒取出通心材料.  
**费用:** 分离 + 2 延伸 QQ 4–6× CPU 的 QQ 4–6× : [`pvoc-lock`](https://npmcn.com/package/%40audio/stretch/#readme-pvoc-lock) 一个人.

### `paulstretch` —— 说 `@audio/stretch-paulstretch`

通过相随机化进行极端时间拉长(纳斯卡,2006年)。 保留了星等,但以随机值来取代所有相相,产生平滑,梦想般的纹理. 为大因素所设计.

```js
import paulstretch from '@audio/stretch-paulstretch'

paulstretch(data, { factor: 8 })
paulstretch(data, { factor: 100, frameSize: 8192 })
```

| 参数 | 默认 |  |
| --- | --- | --- |
| `factor` | `8` | 时间拉伸比率(最佳 > 2×) |
| `frameSize` | `4096` | FFT 大小( 较大 = 平滑) |
| `seed` | `0x1f123bb5` | PRNG 种子( 决定输出) |

**使用时 :** 安徽音乐,音效设计,无人机生成,8×–-1000×拉伸.  
**不为:** 小比例(<2××)——声音冲出. 不是为了保持节奏或瞬间.

## 阴性

### `sms` —— 说 `@audio/stretch-sms`

阴道模型合成(Serra 1989, McAulay-Quatieri 1986). 将音频分解成单独跟踪的sinusoidal部分并按新的时间速率进行再合成. 每个部分的频率和规模都是独立地插入的——没有相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相.

```js
import sms from '@audio/stretch-sms'

sms(data, { factor: 2 })
sms(data, { factor: 0.5, maxTracks: 80 })
sms(data, { factor: 3, frameSize: 4096 })
```

| 参数 | 默认 |  |
| --- | --- | --- |
| `factor` | `1` | 时间长度比 |
| `frameSize` | `2048` | FFT 帧大小 |
| `hopSize` | `frameSize/4` | 在相框间跳动 |
| `maxTracks` | `60` | 最大同时的鼻音轨 |
| `minMag` | `1e-4` | 峰值探测阈值(线性) |
| `freqDev` | `3` | 音轨续作的最大频率偏差( 宾) |
| `residualMix` | `1` | 混入正辛醇-水分配系数 |

**使用时 :** 谐音/通纳的内容——乐器,和弦,相声——相发音引入抹片. 默认 `residualMix=1` 混合了呼吸,噪音, 和瞬时能量 与鼻道模型.  
**不为:** 噪声为主的材料.

## 质量衡量标准—— `@audio/quality`

每个原子都是自成一体的(花纹/OLA助动器被内嵌;相相锁的引擎生活在其中) [`@audio/spectral-pvoc`](https://github.com/audiojs/spectral)) (中文(简体) ). 产出质量评价 [`@audio/quality`](https://github.com/audiojs/measure)数字 :

```js
import { lsd, spectralSim, chordBalance, chordRetention, modulationDepth } from '@audio/quality'
```

`lsd` (log-光谱相距), `spectralSim` (同理相似), `chordBalance`, (中文(简体) ), `chordRetention`,以及 `modulationDepth` (AM深度每部分)对照参考值评价算法输出.

## 研究和比较

| 命令 | 它会做什么 |
| --- | --- |
| `node scripts/compare.js` | 写入 `compare.html` ——交互式波形,回放,内相-vs-外相比较 |
| `node scripts/bench.js` | 批量和流水的吞吐量和x实时数字 |
| `node scripts/diagnose.js` | 特定算法行为的定向诊断 |

[演示](https://audiojs.github.io/time-stretch/) 用于轻量级浏览器监听矩阵.

## 另见

-   [四进制](https://github.com/audiojs/fourier-transform) ——FFT+STFT内核
-   [@ audio/ transfer-\*](https://github.com/audiojs/shift) - 投球转接家庭
-   [@ audio/ 过滤器](https://github.com/audiojs/filter) - 音频过滤器
-   [数字过滤器](https://github.com/audiojs/digital-filter) - 过滤器设计

## 参考资料

-   Verhelst, W. & Roelands, M. (1993年). "一种基于波形相似性的相重叠添加技术(WSOLA)" _ICASSP 软件_。 。 。 .
-   Laroche, J. & Dolson, M.(1999年). "改进相相机vocoder时间尺度修改音频" _IEEE Trans. (原始内容存档于2017-10-21). 语音音频处理_。 。 。 .
-   Röbel, A. (2003年). "阶段活化器中瞬态处理新办法" _DAFx 函数_。 。 。 .
-   Nasca, P. (2006年). "保罗·斯特拉奇——极端时间拉伸" _paulnasca.com (英语)_。 。 。 .
-   Moulines, E. & Charpentier, F. (1990年). "利用双管进行文字对语音合成的比奇同步波形处理技术" _语音交流_,第9(5-6)页.
-   Driedger, J. & Müller, M. (2016年) (英语). "音乐信号时间尺度修改审查" _应用科学_第6(2)条.
-   Serra, X. (1989) (英语). “一个基于定态加Stochastic分解的音效分析/变形/合成系统”。 斯坦福博士论文.
-   McAulay, R.J. & Quatieri, T.F. (1986年). "基于鼻音表达的语音分析/合成" _IEEE Trans. (原始内容存档于2017-10-21). 阿萨普_第34(4)条.

[麻省理工学院](https://github.com/audiojs/stretch/blob/main/LICENSE) [ॐ](https://github.com/krishnized/license)

## 常见问题

### @audio/stretch 是什么？

时间拉伸——为@audio/stretch- \* 原子提供伞 \(WSOLA,相相vocoder变体,PaulStrech,PSOLA, SMS\)

### 如何安装 @audio/stretch？

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

### @audio/stretch 支持 TypeScript 吗？

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

### @audio/stretch 支持 ESM 还是 CommonJS？

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

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

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

### @audio/stretch 可以商用吗？

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

### @audio/stretch 的下载量有多少？

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

### @audio/stretch 还在维护吗？

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

