如何在 iphone sdk 中同时进行输出音频电平测量和音高变化

Posted

技术标签:

【中文标题】如何在 iphone sdk 中同时进行输出音频电平测量和音高变化【英文标题】:How to do output audio level metering and pitch changing together in iphone sdk 【发布时间】:2012-04-13 07:36:49 【问题描述】:

我有一个应用程序,用户可以在其中录制音频并在音调发生一些变化的情况下播放它。 并且还应测量输出体积功率。 我知道 avaudioplayer 和 cocos 声音引擎的计量特性。但是使用这些我不能一起满足我的需求。 我怎么能一起做这些(音高转换和电平测量)。谁能帮帮我。

编辑

  CDSoundEngine *soundEngine = [[CDSoundEngine alloc] init];

 NSArray *defs = [NSArray arrayWithObjects: [NSNumber numberWithInt:1],nil]; 
        [soundEngine defineSourceGroups:defs];
[soundEngine loadBuffer: 0 filePath: soundPath];
   ALuint soundID= [soundEngine playSound: 0 sourceGroupId: 0 pitch: PITCH pan: 0.0f gain: 2.0f loop: NO];

这是我目前使用的代码,它工作正常,但我无法测量输出功率。 在 AVAudioPlayer 的情况下 有一个属性计量启用

[玩家 setMeteringEnabled:YES];

我们可以通过

来获取能量
  [player updateMeters];
    Float32 peak=[player peakPowerForChannel:0];

但我无法通过 AVAudioPlayer 更改音高

这是我的问题

【问题讨论】:

@MDT 我已经添加了相关代码 【参考方案1】:

有一种使用外部库的方法:Dirac3 音频库 - http://dirac.dspdimension.com/Dirac3_Technology_Home_Page/Dirac3_Technology.html

这里有一个简单的教程:http://purplelilgirl.tumblr.com/post/3915153445/tutorial-other-ways-to-chipmunkify-your-voice

但许可证费用为 1000 欧元。有免费版本,但是你必须阅读许可协议,看看你是否可以在商业产品中使用它(如果我正确阅读了协议,你可以使用它,只要你给作者署名)。

【讨论】:

【参考方案2】:

@johnykutty 没有使用 avaudio 播放器更改声音的选项。您需要通过外部库来更改音高....

【讨论】:

以上是关于如何在 iphone sdk 中同时进行输出音频电平测量和音高变化的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 从后台程序访问输出音频

如何在 iphone sdk 中合并音频和视频

如何结合 AudioQueuePause 和 AudioQueueGetCurrentTime 在 iPhone SDK 中恢复音频播放?

iPhone SDK audioSession 问题

iPhone SDK:如何使用 AVAudioPlayer 标准化音频播放?

iphone sdk 如何在电话通信期间播放 DTMF 音频文件