2010-03-11 5 views
2

AVAudioRecorder @ 1.5x 또는 2.0x 속도로 녹음 한 오디오를 재생할 수 있습니다. 나는 그것을 지원할 AVAudioPlayer에서 아무것도 보지 못합니다. 가능한 경우 코드를 사용하여 iPhone 3.x SDK로이를 수행하는 방법에 대한 몇 가지 제안을 보내 주시면 감사하겠습니다. 필자는 재생 속도를 높이기 위해 피치를 낮추는 것에 지나치게 신경을 쓰지 않지만 그렇게 할 수 있다면 최적 일 것입니다.iPhone SDK : 코어 오디오를 사용하여 재생 속도 변경 AVAudioPlayer

답변

1

this question을 참조하십시오. 즉, 오디오 대기열 서비스와 같은 다른 API를 사용해야합니다. 간단한 해킹을 시도하려는 경우 오디오 파일의 샘플 속도 속성을 두 배로 늘릴 수 있습니다. 그것은 아마 비록 작동하지 않습니다. 또한, 동일한 피치를 유지하면서 재생 속도를 조정해야한다는 것은 상당히 까다로운 CPU 임에주의하십시오. "time stretching"이라는 사용 가능한 기술 중 하나를 사용해야합니다. Apple의 설명서가 일반적으로 매우 나쁘거나 없기 때문에 iPhone에서 오디오로 복잡한 작업을하는 것은 큰 어려움입니다.

+0

해답을 가져 주셔서 감사합니다. – memmons

+0

따라서 8000의 샘플 속도로 레코딩하는 경우 재생을 위해 이론적으로 샘플 속도를 12000으로 변경하면 1.5x 속도가 발생합니까? – memmons

+0

그렇습니다. 보통의 샘플 속도 (44100, 22050 등)가 아닌 임의의 샘플 속도를 사용하면됩니다. 나는 그럴 것이라고 생각하지만, 나는 그것을 시도하지 않았다. –

2

샘플 속도를 변경하면 테이프 레코더처럼 빠르게 작동해야합니다. 모든 것이 음조가 높아집니다. 피치를 동일하게 유지하려면 AUPitch 효과가 포함 된 오디오 장치 그래프를 설정하고 샘플 속도를 높이는 것과 같은 비율로 피치를 낮춰야합니다.

+0

고맙습니다. – memmons

0

오디오를 더 빠르게 또는 느리게 재생하려면 avAudioPlayer에 빌드 인 메서드가 있습니다. AudioPlayer Rate 속성을 사용해 보셨습니까? 스위프트에서 이렇게됩니다 -

audioP = try! AVAudioPlayer(contentsOf: URL(fileURLWithPath: selectedPath), fileTypeHint: "caf") 
    audioP.enableRate = true 
    audioP.prepareToPlay() 
    audioP.rate = 1.5 
    audioP.play() 
관련 문제