【问题标题】:Changing audio pitch using Java (Android)使用 Java (Android) 更改音频音高
【发布时间】:2016-10-27 10:13:37
【问题描述】:

我想在不改变音频速度的情况下改变声音的音高,然后保存成wav或者mp3文件,想法是在android上用java做一些音效,没找到明确的方法,是否有任何教程可供阅读?

【问题讨论】:

    标签: java android audio pitch


    【解决方案1】:

    下面是 Stephan M. Bernsee 用 C 语言编写的一个简单而有价值的教程函数的链接,称为 smbPitchShift.cpp,它可以提高或降低音乐信号的音高。

    我还可以在不改变音高的情况下使用它来减慢或加快音乐的速度。如果您想在不改变原始音高的情况下进行时间拉伸,则可能需要重新采样。

    自 GitHub 上链接的版本以来,Bernsee 似乎对他的代码进行了一些更改。他的更新代码可以从他的网站下载——它可能会增加从他的原始规范转换的范围。我调整了他的原始代码,以便我可以将音调提高 8 倍。

    https://github.com/AndyA/BatPhone/blob/master/pitchshift.c

    http://blogs.zynaptiq.com/bernsee/time-pitch-overview/

    【讨论】:

    • 不是java,但我会尝试从C代码中理解算法,谢谢:D
    【解决方案2】:

    经过一番研究,我发现您正在尝试做的事情称为“音高转换”。显然,它涉及大量数学运算和对声音数据包的处理,因为改变声音的音高会自动改变它的播放速度。让它恢复到您想要的速度,同时仍将音频保持在被认为“正常”的水平,这不是在公园里散步。

    在任何情况下,由于 Unity3D 使用 C#,您可能(我强调这个词可能)能够使用这个开源库来获得您需要的声音效果。它基于 NAudio(也是开源和 C#),因此理论上您应该能够在您的项目中使用它或它的一部分。

    【讨论】:

    • 我读到了关于音高转换的文章,但我的想法是我真的不知道如何在代码中实现它,无论如何我会看看那个库,谢谢
    猜你喜欢
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    相关资源
    最近更新 更多