【发布时间】:2012-03-12 05:08:42
【问题描述】:
我是 android 平台的新手,我想开发一个在后台运行并读取麦克风输入、对其应用转换并将生成的音频输出到扬声器的应用程序。
我想知道用户在此过程中是否感觉到任何延迟,或者是否可以近乎实时地执行此操作,以便用户可以听到与环境音频同步的转换后的音频。谢谢!
【问题讨论】:
标签: android audio fft microphone
我是 android 平台的新手,我想开发一个在后台运行并读取麦克风输入、对其应用转换并将生成的音频输出到扬声器的应用程序。
我想知道用户在此过程中是否感觉到任何延迟,或者是否可以近乎实时地执行此操作,以便用户可以听到与环境音频同步的转换后的音频。谢谢!
【问题讨论】:
标签: android audio fft microphone
是的,用户会听到严重的延迟延迟或在当前未修改的 Android 设备上使用提供的 API 尝试实时音频时出现回声。
总结是,Android 设备配置了相当长的音频缓冲区,据报道,该缓冲区的长度在 100 到 400 毫秒之间,具体取决于特定设备及其运行的 Android 操作系统版本。 (可以在 Android 设备上使用您自己的自定义音频驱动程序构建和安装经过修改的自定义构建操作系统的更短的缓冲区。)
(人类在 25 毫秒左右或以上听到回声。iOS 上的音频缓冲区可以短至 5.8 毫秒,因此尝试在不同的设备平台上开发近实时音频处理可能会更好。 )
【讨论】:
android 上的音频处理并不是很好,事实上,它很烂。对于此类事情,Android 设备上的开箱即用延迟非常糟糕。但是,您可以修改 NDK 并尝试基于 OpenSL ES 组合一些具有显着低延迟的东西。
有一个类似的 StackOverflow 问题:Playing back sound coming from microphone in real-time
其他一些有用的链接:
【讨论】:
另一方面,Android 麦克风质量比 IOS 质量好得多。我有一部 Galaxy s4 和一部华为非常低端的手机,录音时的麦克风质量都很棒。
【讨论】: