使用Java改变音频音调(Android)

时间:2016-10-27 10:13:37

标签: java android audio pitch

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

2 个答案:

答案 0 :(得分:2)

下面是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/

答案 1 :(得分:0)

经过一番研究后,我发现你正在尝试做的事情被称为"音高转移"。它涉及大量的数学和声音数据包,显然是因为改变声音的音高,自动改变它的播放速度。让它恢复到你想要的速度,同时仍然保持音频处于考虑的状态"正常"不是在公园散步。

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