android';s媒体记录器以匹配iOS';那是AVAudioRecorder吗?
我有一个跨平台(iOS和Android)的应用程序,我将录制音频片段,然后将其发送到服务器上进行一些机器学习操作。在我的iOS应用程序中,我使用android';s媒体记录器以匹配iOS';那是AVAudioRecorder吗?,android,ios,audio,audio-recording,audio-processing,Android,Ios,Audio,Audio Recording,Audio Processing,我有一个跨平台(iOS和Android)的应用程序,我将录制音频片段,然后将其发送到服务器上进行一些机器学习操作。在我的iOS应用程序中,我使用AVAudioRecorder录制音频。在Android应用程序中,我使用MediaRecorder录制音频。在手机中,由于尺寸限制,我最初使用m4a格式。到达服务器后,我会将其转换为wav格式,然后在ML操作中使用它 我的问题是,在iOS中,默认情况下,AVAudioRecorder会在开发人员访问原始数据之前对原始音频数据进行放大。但在安卓系统中,M
AVAudioRecorder
录制音频。在Android应用程序中,我使用MediaRecorder录制音频。在手机中,由于尺寸限制,我最初使用m4a格式。到达服务器后,我会将其转换为wav
格式,然后在ML操作中使用它
我的问题是,在iOS中,默认情况下,AVAudioRecorder会在开发人员访问原始数据之前对原始音频数据进行放大。但在安卓系统中,MediaRecorder不提供任何原始数据的默认放大功能。换句话说,在iOS中,我永远不会从麦克风获取原始音频流,而在Android中,我总是只从麦克风获取原始音频流。如果您可以在iPhone和Android手机中使用一个公共音频源并排录制相同的音频,然后将录制的音频导入Audacity以进行可视化表示,那么这种区别是显而易见的。我在下面附上了一个示例表示屏幕截图
在图像中,第一个曲目是Android录制,第二个曲目来自iOS录制。当我通过耳机听到这两个音频时,我可以模糊地区分它们,但当我看到数据点时,你可以清楚地看到图像中的差异。这些区别不利于ML操作
显然,在iPhone中,有一个特定的放大因子,我也想在Android中实现
有人知道放大系数吗?或者还有其他可能的替代方案吗?很可能区别在于自动增益控制的效果 您可以在应用程序的
AVAudioSession
中禁用此功能,方法是将其模式设置为AVAudioSessionModeMeasurement
,通常在启动时在应用程序中执行一次。这将禁用大量输入信号处理
阅读您的问题描述,您最好在Android上启用AGC
如果这两种方法都不能产生结果,您可能需要对两种信号进行缩放,使其刚好低于限幅
let audioSession = AVAudioSession.sharedInstance()
audio.session.setMode(AVAudioSessionModeMeasurement)