2016-12-30 7 views
2

나는 음성 체인저 응용 프로그램에 관해서 매우 새로운 소식입니다. 어떤 것이 든 소녀의 목소리처럼 피치를 바꾸는 방법을 제안 해주세요.AudioPitch withOut noise를 바꾸는 가장 좋은 방법은 무엇입니까

여기 내가 사용한 코드입니다.

audioPlayerNode=[[AVAudioPlayerNode alloc]init]; 

    [audioEngine attachNode:audioPlayerNode]; 

    changePitchEffect=[[AVAudioUnitTimePitch alloc]init]; 
     changePitchEffect.pitch=pitch; 
[audioEngine attachNode:changePitchEffect]; 


[audioEngine connect:audioPlayerNode to:changePitchEffect format:audioFile.processingFormat ]; 

[audioEngine connect:changePitchEffect to:audioEngine.outputNode format:processingFormat]; 

[audioPlayerNode scheduleFile:audioFile atTime:nil completionHandler:nil ]; 

    AVAudioInputNode *input = [audioEngine inputNode]; 
    AVAudioFormat *format = [input outputFormatForBus: 0]; 

    [audioEngine prepare]; 

    [audioEngine startAndReturnError:nil]; 

audioFile의 피치를 변경 한 후 내가 선명도를 누락 더 하나가 사소한 일이 아니다이

+0

당신은 형식과 목표 코드에있는 몇 가지 예제 코드로 나를 도울 수 있습니까? –

답변

2

에 대한 솔루션을 제안 disturbance.can되었다. 기본적으로 전체 음높이가 아닌 formants 음을 옮겨야합니다.

같은 메모를 부르는 한 남자와 한 여자를 상상해보십시오. 그들은 같은 음을 부르지 만 (실제로 동일한 음정을 의미 함), 남자와 여자의 차이를 여전히 인식 할 수 있습니다. 원인은 다르므로 formants입니다. 주파수 스펙트럼을 기준으로 formants을 미리 정의 된 범위로 생각할 수 있습니다.

나는 포르 만트 변이를 제공하는 Obj-C/Swift 프레임 워크에 대해 알지 못합니다. 기본 C++ 솔루션을 찾을 수 있다고 가정합니다.

직접 구현하고 싶다면 코어 오디오를 사용해야하고 DSP를 직접 사용해야합니다. 이 경우 Obj-C/Swift에서 구현하기 전에 Matlab/Octave 또는 Native Instrument의 "Reaktor"와 같은 그래픽 DSP 프로그래밍 소프트웨어에서 작동하는 프로토 타입을 만드는 것이 좋습니다.

이 말처럼, 이것은 사소한 작업입니다.


당신은 확실히 다른 조합 및 피치 변화와 EQ를의 설정을 실험 할 수 있지만, 결과는 항상 "와 같은 장난감"입니다 귀하의 요구 사항에 따라.

+0

좋아요, arm64.recently를 지원하는 C++ 솔루션을 제안 해 주시겠습니까? Dirac Audio Player가 사용되었습니다.이 경우 arm64.but가 삭제 된 후 삭제되었습니다. 기능 .while App 스토어에 업로드에 대한 유효성을 Arm64 지원을 놓친있어.이 대한 어떤 생각이있어. 나에게 매우 유용합니다 모든 DSP 오디오 플레이어를 제안 할 수 있습니다. –

+0

불행히도 아닙니다. – shallowThought