Android:如何移动输出声音的音高(实时)

mid*_*ghz 7 audio android pitch-shifting

我是Android开发的新手.我正在寻找任何将音高变换应用于输出声音的方法(实时).但我找不到任何开始的意义.

我找到了这个话题,但我仍然不知道如何应用这个.

有什么建议?

Ant*_*ake 6

通常,该算法称为阶段声码器 - 在互联网上搜索该算法应该让您开始.

有一些开源阶段声码器,你应该也可以使用它们作为参考.

您可以实时进行相位声码器 - 使用的主要组件是FFT,因此您需要快速FFT.Android库可以为您完成此操作,请参阅此文档:http://developer.android.com/reference/android/media/audiofx/Visualizer.html

碰巧的是,我即将发布ARM的开源FFT,它比Apple的vDSP库(迄今为止最快)更快.我会在几天后将其上传到github.com.

祝好运.


vit*_*kot 5

Android SDK中没有内置音高变换算法.你必须编写自己的代码.音高变换是一种真正的硬核DSP算法; 良好的声音算法是数月或更长时间的发展成果......

我个人不知道任何Java实现,所以我建议你采用一些免费的C++ PS算法,我在音频应用程序中使用的最好的算法是SoundTouch:

http://www.surina.net/soundtouch/

我玩了一些代码,看起来用Java重写代码并不会太复杂.