音频变速变调
我要提建议把声音的参数摊开自己组装:速度、音高、共振峰 F1/F2、温暖(低频)、临场(清晰度)、齿音抑制、气声、动态压缩、响度,外加 50 个模板打底(短视频常用 / 通用 / 主播口播 / 角色人物 / 特殊效果五组:甜妹音 / 低音炮 / 新闻播报 / 萝莉音 / 电话听筒 等);变调默认保持共振峰(不再变娃娃音)。本地处理:数据不出设备。
相关工具
这个工具是做什么的
把一段讲座录音加快听、把伴奏升两个半音来配合唱不上去的调、把翻唱降调后再听——这些都需要「变速」与「变调」分开控制。本工具的两项参数互相独立:改速度只改时长、音高保持不变(用 WSOLA 波形相似度叠加实现,拼的是原始波形片段,不是简单拉伸);改音高只改音调、时长保持不变(先把时长拉长再用重采样缩回去)。也可以两项一起改,比如「0.9× 速度 + −2 半音」。变调默认会**保持共振峰**:单纯变调会让所有频率一起缩放,共振峰(决定音色的那个包络峰)也跟着移动,所以升调常会变成娃娃音;勾上保持后会把共振峰搬回原位,听起来就是「同一个人用更高 / 更低的音说话」。另有一组独立的音色参数自己组装:共振峰分**低区 F1**(约 1kHz 以下,反映口腔开合,压低更浑厚)与**高区 F2**(决定前后,上移更清亮)两段各 ±12 半音;**温暖**(200Hz 钟形 ±12dB,就是近讲效应那种厚度)、**临场**(3kHz 钟形 ±12dB,吐字清不清楚)、**齿音抑制**(动态压 5–9kHz,最多 −12dB);气声 / 沙哑 0–35%(混入跟着语音包络走的高频噪声,停顿处不出噪声);动态压缩 0–100%(把轻的地方抬上来,是「贴耳 / 电台感」的主要来源)。50 个模板(短视频常用 / 通用 / 主播口播 / 角色人物 / 特殊效果)给的是起点而不是终点;其中「特殊效果」那组只改频响与动态,没有混响 / 失真 / 环形调制。处理全程在本机完成,音频数据不出设备;预览只处理你指定的 30 秒,导出才处理整段。
使用方法
- 选择音频文件,等待解码完成(会显示时长、采样率与声道数)。
- 从「声音参数」里挑一个模板打底(低沉 / 清亮 / 童声 / 电台 / 气声),再拖滑块自己微调;速度与音高单独调,音色参数不会改变时长与音高。
- 点「试听处理后」与「试听原声」来回对比;长文件可先填「预览起点」,从想听的位置试。
- 确认效果后点「处理音频」,选择导出格式,确认预估时长与体积后导出文件。
常见问题
- 变速会改变音调吗?
- 不会。变速用的是 WSOLA(波形相似度叠加):把音频切成一帧帧,每帧在允许的搜索窗内找一个与上一帧自然延续最像的位置再拼起来,帧间 50% 重叠并做交叉淡化。因为拼接的都是原始波形片段,音高与音色都保持不变,只是时长变了。
- 变调会改变时长吗?
- 不会。变调是「先用 WSOLA 把时长拉长、再线性缩回原长」两步:拉长不改音高,缩回按比例升高音高,两者相抵就只剩音高变化。代价是变化幅度越大,可能的细微质感损失越明显(±12 半音这种极端值建议先试听)。
- 能改多少?
- 速度 0.25×–4×,音高 ±12 半音(一个八度)。超出范围会被夹到边界。变速幅度越大,算法需要重复或跳过的片段越多,极端值下鼓点等瞬态会有轻微涂抹感。
- 变调后为什么会变成娃娃音?「保持共振峰」是怎么修的?
- 变调本质是把所有频率按同一比例缩放,共振峰(频谱包络上的峰,决定「听起来像谁」)也跟着跑 —— 实测升 7 半音时共振峰同样移动 1.50 倍。勾上「保持共振峰」后,工具会在频域把包络按 1/变调倍率 反向搬回去:音高升了、共振峰留在原位,听感就是同一个人用更高的音说话。实测升 7 半音:不保持时共振峰 721→1078Hz,保持后 718Hz(几乎完全回到原位),而音高照样升到 182Hz。两条路径的快慢不同:纯变速与不变调都不走频域处理(30 秒素材约 0.15 秒),保持共振峰的变调约 1.3 秒。
- 「共振峰 ±半音」和「明暗」能改到什么程度?能变成别人的音色吗?
- 共振峰 ±12 半音是**独立于音高**的音色旋钮:往负走声音更浑厚(像体格更大的人),往正走更细亮(像更小的人);明暗 ±12 dB/倍频程相当于一个很宽的搁架 EQ,只改亮/闷。但**音色克隆(让 A 的声音变成 B 的声音)做不到** —— 那需要神经网络声码器与说话人模型(几十到上百 MB 加算力),不适合静态站。能调的是共振峰位置、频谱倾斜、音高、语速、响度这些可测量、可复现的特征。
- 为什么选「电台主播」听起来像主播了?它到底改了什么?
- 播音腔的配方是三件事:**近讲效应带来的低频隆起**(温暖 +8dB @200Hz)、**临场提亮**(+5dB @3kHz,吐字更清楚靠前)、**齿音压住**(动态压 5–9kHz,避免提亮后人声发刺),再加**强动态压缩**(80%+)把音量拉平。早先版本用的是一个「整体明暗」单斜率,往上调会同时把低频砍掉、把齿音抬起来(实测低频 −14.4dB、齿音 +10.8dB,正好把该做的两件事做反了),所以怎么调都不像;现在改成三个独立频段,实测低频相对临场提升 5.6dB、齿音对比从 4.1dB 压到 1.0dB。
- 这些参数能组装出「另一个人的声音」吗?
- 能组装出**另一类**声音(低沉 / 清亮 / 童声 / 电台 / 气声),但不能精确复刻**某一个具体的人**。原因是声纹的辨识度主要藏在频谱的微观结构里 —— 每个共振峰的精确形状、谐波之间的相位细节、发音与气息习惯,而上面这些参数改的是宏观特征(基频、共振峰位置、频谱倾斜、气声比例、动态)。要真正做声音转换需要神经网络声码器与说话人模型(几十到上百 MB 加算力),不适合放在纯静态站里。
- 处理很慢吗?
- 实测 30 秒 44.1kHz 立体声约 0.3 秒(本机单线程 JS),整段 5 分钟大约几秒。预览只处理 30 秒,所以调参数时几乎即时;导出才处理整段。
- 文件会上传吗?
- 不会。解码、伸缩、重采样、编码全部在本机用本地引擎完成,没有网络请求。