AudioRecord を使用してオーディオ パケットをキャプチャし、それらを音声認識サーバーにストリーミングしています。私の Galaxy Note 4、Android M デバイスでは、問題なく動作します。ただし、他のデバイス (Nexus 7/Android L および HTC コンボ/Android ICS) を使用すると、結果のオーディオが途切れ途切れになり、0.5 秒ごとにグリッチ ノイズが発生し、サーバーでの音声認識プロセスが損なわれます。
私はこれが複雑なトピックであることを知っています.Androidでこのオーディオキャプチャの不規則性に対処する方法を知っている人はいますか?
これは私のコード設定です:
private static final int AUDIO_SOURCE = MediaRecorder.AudioSource.VOICE_RECOGNITION;
private static final int SAMPLING_RATE = 16000; //44100,
private static final int CHANNEL_CONFIG = AudioFormat.CHANNEL_IN_MONO;
private static final int BIT_RATE = AudioFormat.ENCODING_PCM_16BIT;
bufferSize = AudioRecord.getMinBufferSize(SAMPLING_RATE,
CHANNEL_CONFIG,
BIT_RATE;
audioBuffer = new byte[bufferSize];
AudioRecord recorder = new AudioRecord(AUDIO_SOURCE,
SAMPLING_RATE,
CHANNEL_CONFIG,
BIT_RATE,
bufferSize);
recorder.startRecording();
while (isRecording) {
short[] buffer = new short[bufferSize];
int shorts_recorded = recorder.read(buffer, 0, buffer.length);
byte[] audioBytes = new byte[bufferSize*2]; //bufferSize*2
ByteBuffer.wrap(audioBytes).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().put(buffer);//runningBuffer.get(0));
Integer.toString(audioBytes.length)+","+audioBuffer.length);
handler.onAudioDataCapture(audioBytes); //expose audio data to upload callback interface
proceed();
}