【发布时间】:2016-10-27 10:13:37
【问题描述】:
我想在不改变音频速度的情况下改变声音的音高,然后保存成wav或者mp3文件,想法是在android上用java做一些音效,没找到明确的方法,是否有任何教程可供阅读?
【问题讨论】:
我想在不改变音频速度的情况下改变声音的音高,然后保存成wav或者mp3文件,想法是在android上用java做一些音效,没找到明确的方法,是否有任何教程可供阅读?
【问题讨论】:
下面是 Stephan M. Bernsee 用 C 语言编写的一个简单而有价值的教程函数的链接,称为 smbPitchShift.cpp,它可以提高或降低音乐信号的音高。
我还可以在不改变音高的情况下使用它来减慢或加快音乐的速度。如果您想在不改变原始音高的情况下进行时间拉伸,则可能需要重新采样。
自 GitHub 上链接的版本以来,Bernsee 似乎对他的代码进行了一些更改。他的更新代码可以从他的网站下载——它可能会增加从他的原始规范转换的范围。我调整了他的原始代码,以便我可以将音调提高 8 倍。
【讨论】:
经过一番研究,我发现您正在尝试做的事情称为“音高转换”。显然,它涉及大量数学运算和对声音数据包的处理,因为改变声音的音高会自动改变它的播放速度。让它恢复到您想要的速度,同时仍将音频保持在被认为“正常”的水平,这不是在公园里散步。
在任何情况下,由于 Unity3D 使用 C#,您可能(我强调这个词可能)能够使用这个开源库来获得您需要的声音效果。它基于 NAudio(也是开源和 C#),因此理论上您应该能够在您的项目中使用它或它的一部分。
【讨论】: