2012-10-24 92 views
0

我正在开发一个声音相关的应用程序。我正尝试将音频声音更改为完全不同于机器人的声音或使音频回声。我试过用soundpool,但没有任何想法,任何人都知道如何实现?我只需要一个基本的想法来实现这一点,请帮助。非常感谢。android音频音高变化

+0

您是否考虑过数据的本地(C)处理,将其保存到文件(例如wav)并播放?数据的输入格式将有助于确定最佳实施方式。 – sandrstar

回答

5

音高和回声是两个不同的东西。

间距:

您可以通过对矫正播放速度改变音高。您可以通过两种方式完成:audioTracksetPlayBackRateSoundPoolsetRate。取决于您的需求,AudioTrack允许较大范围的音高(从1hz到x2)在大型文件上,SoundPool用于音效,而picth可以在x0.5和x2之间变化。

回声/混响:

您可以AudioEffect因为API拉特9通过其附着到AudioTrack或MediaPlayer的实例归档此。

0

我正在一个类似的项目工作,我可以说你需要看看DSP(数字信号处理),PCM 16格式,最好是傅立叶变换。

是可能的回环与AudioRecord类音频(正在运行的线程不断填充缓冲区上AudioTrack)

但延迟可能是太大了,你要完成的任务。

祝你好运!

一些很好的指针: Android AudioRecord class - process live mic audio quickly, set up callback function

+0

我可以得到一些链接,我可以得到有关DSP的介绍 – Sri

1

对于机器人的效果要设置音频以一定的间距。即做一个FFT,把所有东西都移动到一个频率单元中,然后做一个逆FFT以回到时域。

对于回声效果,您可以保留一个单独的缓冲区,它与您想要的回声延迟一样长。并且对于每个样本做类似以下的事情(伪代码):

output = mix(currentSample, echoBuffer[echoPos]*echoVolume) 
echoBuffer[echoPos] = mix(currentSample, echoBuffer[echoPos]*echofeedback) 
echoPos += 1