Я пытаюсь получить массив значений данных PCM из звука, записываемого микрофоном ... и затем отправить его на сервер, но я не понимаю, как получить эти данные.Я попытался найти какой-нибудь совет по образцу «speakHere», но он мне не помог, я не хочу никакой информации из аудиопакета, только значения данных PCM. У кого-нибудь есть идея?Это не из файла, мне нужно получить звук с микрофона, получить массив и отправить его ..
Так как SpeechHere слишком сложный .. Я попробовал другое решение ..
AVCaptureDevice *audioDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
AVCaptureDeviceInput *audioInput = [AVCaptureDeviceInput deviceInputWithDevice:audioDevice error:&error];
[session addInput:audioInput];
AVCaptureAudioDataOutput *audioOutput = [[[AVCaptureAudioDataOutput alloc] init] autorelease];
[session addOutput:audioOutput];
// Configure your output.
dispatch_queue_t audioQueue = dispatch_queue_create("audioQueue", NULL);
[audioOutput setSampleBufferDelegate:self queue:audioQueue];
dispatch_release(audioQueue);
и эта реализация вызывает этот метод:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection
, но проблема в том, что эти выходные данные генерируются с этой конфигурацией:
mSampleRate: 44100.000000 mFormatID: 'lpcm' mBitsPerChannel: 16
Но мне нужно 8000 sampleRate с 8 битамиPerChannel.
Итак ... как преобразовать или сжать его ??