我想录制来自麦克风的audio并以近实时的方式访问它以便可能的播放。 我不确定如何使用Android AudioRecord类录制一些麦克风audio并快速访问它。 对于AudioRecord类,官方网站称“该应用程序在时间上轮询AudioRecord对象”,并且“正在填充的缓冲区的大小决定了在未读取数据溢出之前logging的时间长度”。 稍后有人build议在不频繁轮询时应该使用更大的缓冲区。 他们从来没有实际上在代码中显示的例子 我在书中看到的一个例子是使用AudioRecord类来连续读取新鲜填充了现场麦克风audio的缓冲区,然后应用程序将此数据写入SD文件。 伪代码看起来像 – set up AudioRecord object with buffer size and recording format info set up a file and an output stream myAudioRecord.startRecording(); while(isRecording) { // myBuffer is being filled with fresh audio read audio data into myBuffer send contents of myBuffer to SD file } myAudioRecord.stop(); 这段代码如何使其读数与logging速率同步尚不清楚 – […]
我目前正在尝试使用Android来实现一些代码,以检测通过手机麦克风播放多个特定audio范围的时间。 我已经使用AudioRecord类设置了类: int channel_config = AudioFormat.CHANNEL_CONFIGURATION_MONO; int format = AudioFormat.ENCODING_PCM_16BIT; int sampleSize = 8000; int bufferSize = AudioRecord.getMinBufferSize(sampleSize, channel_config, format); AudioRecord audioInput = new AudioRecord(AudioSource.MIC, sampleSize, channel_config, format, bufferSize); 然后读入audio: short[] audioBuffer = new short[bufferSize]; audioInput.startRecording(); audioInput.read(audioBuffer, 0, bufferSize); 执行FFT是我陷入困境的地方,因为我在这方面的经验很less。 我一直在尝试使用这个类: 在Java和复杂类的 FFT 与它一起去 然后我发送以下值: Complex[] fftTempArray = new Complex[bufferSize]; for (int i=0; i<bufferSize; i++) […]
我正在devise一个Android应用程序,我需要实现一个AudioRecord类来logging用户的声音。 经过一些研究(没有提供足够的信息)和一些失败的尝试,我想知道是否有人可以帮助我发布一个例子(代码)如何使用AudioRecord捕获高品质的声音。 我真的很感激。 谢谢