8000 hertz 샘플 속도가있는 오디오 단위를 사용하는 iOS 앱은 왜곡 된 음성을 반환합니다.
-
12-12-2019 - |
문제
이 문제에 대해서는 정말로 도움이 필요합니다.오디오 단위로 iOS 응용 프로그램을 개발하고, 기록 된 오디오는 AlAw 형식을 사용하여 8 비트 / 8000 Hertz 샘플 속도로 필요합니다.왜곡 된 목소리가 스피커를 나오는 방법.
나는이 샘플을 온라인에서 온다 :
http://www.stefanpopp.de/2011./ 캡처 - iPhone 마이크 / 코멘트 - Page-1 /
내 응용 프로그램을 디버깅하려고하면서 AudioFormat을 자신의 응용 프로그램에서 사용 했으므로 동일한 왜곡 된 사운드를 사용했습니다.나는 잘못된 설정을 가지고 있거나이를 작동시킬 수 있도록 다른 것을해야합니다.링크에 신청서와 아래의 AudioFormat 이후 뭔가 잘못되었거나 누락 된 것을하고 있는지 누군가가 말해 줄 수 있습니까?나는이 물건에 대해 많이 모른다, 고마워.
오디오 형식 :
AudioStreamBasicDescription audioFormat;
audioFormat.mSampleRate = 8000;
audioFormat.mFormatID = kAudioFormatALaw;
audioFormat.mFormatFlags = kAudioFormatFlagIsPacked | kAudioFormatFlagIsSignedInteger;
audioFormat.mFramesPerPacket = 1;
audioFormat.mChannelsPerFrame = 1;
audioFormat.mBitsPerChannel = 8;
audioFormat.mBytesPerPacket = 1;
audioFormat.mBytesPerFrame = 1;
. 해결책
결국 올바르게 재생할 수 있습니다. 비슷한 문제에 직면 한 다른 사람을 돕기 위해 여기에 게시합니다.
주요 문제는 시뮬레이터와 실제 장치간에 엄청난 차이가 있다는 것입니다. 장치에서 앱 실행 음질은 더 좋았지 만 두 번째 또는 2마다 건너 뛰는 것으로 보관 되어이 문제를 해결하는 것과 버퍼 크기 / 지속 시간을 변경하는 설정을 찾았습니다. (기간 설정은 시뮬레이터에서 작동하지 않습니다. 내 문제 중 일부는 특정 속도로 실행되도록해야했습니다. 다른 것과 동기화 할 필요가있었습니다. 왜곡 된 소리가 발생했습니다.
status = AudioSessionInitialize(NULL, kCFRunLoopDefaultMode, NULL, audioUnit);
UInt32 audioCategory = kAudioSessionCategory_PlayAndRecord;
status = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(audioCategory), &audioCategory);
[self hasError:status:__FILE__:__LINE__];
Float32 preferredBufferSize = 0.005805; // in seconds
status = AudioSessionSetProperty(kAudioSessionProperty_PreferredHardwareIOBufferDuration, sizeof(preferredBufferSize), &preferredBufferSize);
[self hasError:status:__FILE__:__LINE__];
status = AudioSessionSetActive(true);
.
첫 번째 오디오 세션 속성은 훨씬 더 부드럽게 재생되는 건너 뛰는 것을 멈췄습니다. 두 번째는 버퍼 지속 시간을 조정합니다. 콜백이 얼마나 자주 콜백을 해고하는 빈도로 다른 버퍼 크기를 제공합니다. 최선의 노력은 당신이 제공 한 가치에 따라 가깝게 얻을 수 있지만 사용 가능한 크기 목록을 가지고있는 것처럼 보입니다.
이 물건을 시작하기 위해 아주 좋은 자습서 / 샘플 프로그램을 위해 링크하는 게시물을 참조하십시오.