audio - 实时音频处理 - 延迟可行性检查

标签 audio signals real-time latency feasibility

我有一个应用程序概念,需要实时音频信号处理,可以广泛描述为:a) 对传入音频(来自麦克风)进行采样,b) 执行信号处理功能(例如滤波、傅里叶变换、滤波和操作) , 逆傅里叶变换) c) 播放(通过扬声器插孔)

我相信“端到端”往返时间 (a) 到 (c) 需要在 2 到 5 毫秒的数量级,应用程序才能在现实世界中工作。

那么,我的问题是这在当今一代的 iPhone 和 Android 手机上是否可行?

最佳答案

在 iOS 上,这是可能的,但不能保证。我已经设法在我的 iOS 应用程序中获得 ~6ms(22050 采样率,128 样本缓冲区大小),它对语音输入进行实时处理。看看 Novocaine ( https://github.com/alexbw/novocaine ) - 它提供了一个很好的音频单元封装,使编程更容易。

但是请记住,即使您请求特定的缓冲区大小,在运行时 iOS 也可能会根据资源限制决定以更长的间隔(=> 更高的延迟)发送更大的缓冲区。例如,如果您请求的缓冲区大小为 128(~6 毫秒),您最终可能会在 12 毫秒时获得 256 个大小的缓冲区。您的应用必须考虑到这一点并相应地处理缓冲区。

不幸的是,在 Android 上,低延迟往返音频是一个更大的问题。这是因为延迟是由许多设备/制造商驱动的因素驱动的,例如硬件/驱动程序级别的缓冲区,并且这些因素因设备而异。您可以在这里找到关于这个长期存在的 Android 障碍的讨论:https://code.google.com/p/android/issues/detail?id=3434

我的建议是暂时忽略 Android,并在 iOS 设备上实现/验证您的信号处理算法。稍后,您可以考虑将它们移植到 Android。

关于audio - 实时音频处理 - 延迟可行性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17117562/

相关文章:

c++ - 在 mac osx 中避免 SIGPIPE - reg

python - 向 Django 中长时间运行的方法发送信号

c - Embox 编译和烧写

c - 三维伺服电机实时线性插补

audio - 具有多个广播电台的实时流媒体服务器

audio - 使用 FFmpeg 重新编码为 mp4 会导致音量显着降低

python - 在 Py3k 中,我如何让信号处理程序阻止信号的默认操作?

java - 将 wav 文件转换为 txt 文件

audio - 鸡尾酒会-音源分离

hadoop - Spring XD 是正确的工具选择吗?