2016-12-30 80 views
2

我很新的语音转换器应用程序。可以任何一个请建议我改变音调像女孩的声音的方式。什么是改变AudioPitch与Out 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的间距后,我缺少透明度和得到更多的disturbance.can任何一个建议此

+0

你能帮助我的格式和目标c –

回答

2

的解决方案,它不是一个简单的任务。基本上你必须改变声音formants而不是整体音高。

想象一个男人和一个女人在唱同一个音符。尽管他们在唱同样的音符(意思是他们的声音实际上处于相同的音高),但你仍然可以认识到男女之间的差异。原因因此是不同的formants。您可以将频谱中的formants视为预设范围。

我不知道Obj-C/Swift框架提供共振峰转换。我假设你会在那里找到基本的C++解决方案。

如果你想/必须自己实现它,你很可能必须使用Core Audio并自己完成DSP。在这种情况下,我建议在开始在Obj-C/Swift中实现之前,使用Matlab/Octave或图形化DSP编程软件(如Native Instrument的“Reaktor”)创建一个工作原型。

如上所述,这是一项不重要的任务。


根据您的要求,你当然可以用不同的组合和音调变化和均衡器设置进行试验,但结果永远是“玩具一样”。

+0

一些示例代码好吧,你可以建议C++解决方案,它支持arm64.recently我被用于Dirac音频播放器。为此,我刚刚删除arm64.but完成后,我功能。当我验证上传到Appstore时,我得到了Arm64支持missing.Do有任何想法关于this.Could建议任何DSP音频播放器,这将对我非常有用。 –

+0

不幸的不是。 – shallowThought