我正在开发一个与声音相关的应用程序。我正在尝试将音频声音更改为完全不同的声音,例如机器人声音或使音频回声。我试过 soundpool ,但不知道,有人知道如何实现吗?我只需要一个基本的想法来实现这一点,请帮忙。非常感谢。
问问题
7538 次
3 回答
5
音高和回声是两个不同的东西。
沥青:
您可以通过修改播放速率来改变音高。您可以通过 2 种方式进行操作,使用audioTrack和setPlayBackRate或使用SoundPool和setRate。取决于您的需要,AudioTrack 允许在大文件上进行更大范围的音高(从 1hz 到 x2),而 SoundPool 用于音效和 picth 可以在 x0.5 和 x2 之间变化。
回声/混响:
从 API lvl 9 起,您可以通过将它附加到 AudioTrack 或 MediaPlayer 实例来使用 AudioEffect归档它。
于 2012-10-24T09:16:06.797 回答
1
对于机器人效果,您需要为音频设置一个恒定的音高。即进行 FFT,将所有内容移入单个频率仓,然后进行逆 FFT 以返回时域。
对于回声效果,您可以保留一个单独的缓冲区,该缓冲区与您想要的回声延迟一样长。对于每个示例,请执行以下操作(伪代码):
output = mix(currentSample, echoBuffer[echoPos]*echoVolume)
echoBuffer[echoPos] = mix(currentSample, echoBuffer[echoPos]*echofeedback)
echoPos += 1
于 2012-10-24T08:32:42.107 回答
0
我正在做一个类似的项目,我可以说你需要研究 DSP(数字信号处理)、PCM 16 格式,最好是傅立叶变换。
可以使用 AudioRecord 类回送音频(运行一个线程不断填充 AudioTrack 上的缓冲区)
但是对于您要完成的工作,延迟可能太大了。
祝你一切顺利!
于 2012-10-24T08:05:52.137 回答