是否可以更改音频队列的播放音高
Posted
技术标签:
【中文标题】是否可以更改音频队列的播放音高【英文标题】:is it possible to change the playback pitch of an audioqueue 【发布时间】:2011-05-13 18:36:17 【问题描述】:这应该可以在 Mac OS X 上通过覆盖 AudiostreamBasicDescription 中的采样率然后创建一个新的输出队列来实现。
我已经能够检索默认采样率并编写一个新的(即用 48000 替换 44100),但这不会导致输出信号的任何音高变化。
err = AudioFileGetProperty(mAudioFile, kAudioFilePropertyDataFormat, &size, &mDataFormat);
if (err != noErr)
NSLog(@"Couldn't determine the audio file format");
Float64 mySampleRate = mDataFormat.mSampleRate; //the initial rate
if (inRate != 1)
//write a new value
mDataFormat.mSampleRate = inRate;
//then
err = AudioQueueNewOutput etc.
任何建议将不胜感激。
【问题讨论】:
【参考方案1】:更改采样率不会改变音频的音高。您可能会感觉到播放速度更快的内容具有更高的音高。然而,这是感知而不是现实。
要更改音高,您需要通过数字信号处理 (DSP) 库处理音频数据。或者,看看通过 AudioUnit 运行它:
Audio Unit Programming Guide
【讨论】:
改变采样率确实改变音频的音高。它同时改变音高和节奏。这不仅仅是感知。你当然是正确的,可以单独改变音高,但是不改变速度。以上是关于是否可以更改音频队列的播放音高的主要内容,如果未能解决你的问题,请参考以下文章