我是一个非常新的声音转换器apps.Can任何人请给我建议的方式来改变音高,像女孩的声音。
这是我使用的代码。
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任何人建议解决这个问题的方法
发布于 2016-12-30 19:12:52
这不是一项微不足道的任务。基本上,你必须改变声音的formants,而不是整个音高。
想象一下,一个男人和一个女人唱着同样的音符。尽管他们唱的是相同的音符(意思是他们的声音实际上是相同的音调),你仍然可以辨别出男人和女人之间的区别。因此,原因是formants不同。你可以把formants看作是频谱中的一个预先确定的范围。
我不知道有Obj-C/Swift框架提供共振峰变换。我假设您会找到基本的C++解决方案。
如果你想/必须自己实现它,你很可能必须使用Core Audio并自己做DSP。在这种情况下,我建议在开始在Obj-C/Swift中实现之前,在Matlab/Octave中创建一个工作原型,或者创建一个图形DSP编程软件,如Native Instrument的"Reaktor“。
如上所述,这不是一项微不足道的任务。
根据你的要求,你当然可以尝试不同的音高变化和均衡器的组合和设置,但结果总是“像玩具一样”。
https://stackoverflow.com/questions/41394134
复制相似问题