我打算使用我的整个音乐收藏并将音高从原始录制的 a=440hz 更改为更自然的声音/感觉 a=432hz。
对于那些不熟悉这个概念或这样做的“为什么”的人,我强烈建议你进行谷歌搜索,看看它是怎么回事。但这并不完全相关。
我知道我什至可以使用 Audacity 并一个接一个地转换并重新导出具有新音调的文件。我已经尝试过了,是的,它确实有效。但是,我的集合非常大,我很高兴能找到更合适的命令行选项 SOX。任何想法 ?
$ sox your_440Hz_music_file.wav your_432Hz_music_file.wav pitch -31
这不仅仅是一个问题。将其分解为子问题,例如:
当您完成这些工作时,当您遇到困难时,请以“最简单的示例”的形式提出问题(SO 提供了更多关于如何提问的建议)。通常,在提出这样的问题时,您会在 SO 提供给您的相关问题中找到答案。
sox
的音高过滤器仅接受“分”(半音的 100 个),因此您必须以“分”计算 432Hz 和 440Hz 之间的距离。这涉及以下对数计算:
2 x/12 = 432/440 x/12 = 对数(432/440)/对数(2) x = log(432/440) / log(2) * 12 x = -0.3176665363342927165015877324608 个半音 x = -31.76665363342927165015877324608 '美分'
所以这个sox
命令应该工作:
sox input.wav output.wav pitch -31.76665363342927165015877324608
对于那些感兴趣的人;这也可以通过sox
的开源对应ffmpeg来完成:
ffmpeg -i input.wav -af "asetrate=44100*432/440,aresample=44100,atempo=440/432" output.wav
或者如果ffmpeg
使用 Rubberband 库编译:
ffmpeg -i input.wav -af "rubberband=pitch=432/440" output.wav