slh*_*hck 21
使用 ffmpeg:
ffmpeg -i <input> -af 'asetrate=44100*1/2,atempo=2/1' <output>
Run Code Online (Sandbox Code Playgroud)
这里,1/2 是音高因数。有关更多详细信息,请参阅其他答案。
如果您需要 GUI,请使用Audacity,它是一款免费、开源、跨平台的音频编辑工具。
特点: 在不改变节奏的情况下改变音高,反之亦然。
作为替代方案,请尝试sox。类似的东西:
sox <infile> <outfile> pitch <shift>
Run Code Online (Sandbox Code Playgroud)
其中将音高变化作为正或负“分”(即半音的 100)。一个八度有 12 个半音,所以这意味着 ±1200作为参数。
7vu*_*0hy 12
预先找到输入音频速率,因此:
ffmpeg -i input.mp4
Run Code Online (Sandbox Code Playgroud)
假设输入音频率为 44,100 Hz,此命令将完成以下工作:
ffmpeg -i input.mp4 -af asetrate=44100*3/4,atempo=4/3 output.mp4
Run Code Online (Sandbox Code Playgroud)
3/4 的系数会将大多数女性和“瘦”(花栗鼠)的声音变成男性和“胖”的声音。使用 4/3 表示相反:
ffmpeg -i input.mp4 -af atempo=3/4,asetrate=44100*4/3 output.mp4
Run Code Online (Sandbox Code Playgroud)
注意反向滤波器顺序以防止信号衰减。只要有可能,无损操作应该先于有损操作。我不是 100% 确定我是否没有因为误解 FFmpeg 过滤器而犯一些错误。
FFmpeg 过滤器asetrate应该有一个以ir输入音频速率命名的变量,类似于某些视频过滤器中的iw× ih,但我在文档中找不到任何提及。
对于大于 2 的因子(例如 4/1 或 1/4),必须使用多个atempo过滤器(1/4 = 1/2 * 1/2 或 4/1 = 2/1 * 2/1):
ffmpeg -i input.mp4 -af asetrate=44100*4,atempo=1/2,atempo=1/2 output.mp4
Run Code Online (Sandbox Code Playgroud)
我不知道如何获得“瘦”男声和“胖”女声。
取而代之的是-af,您可以编写-filter:audio或-filter:a。