Простой способ изменить высоту звука с помощью AVAudioPlayer?

Я хочу использовать AVAudioRecorder для записи звука и AVAudioPlayer для его воспроизведения с другим шагом.

Я попытался изменить свойство скорости аудиоплеера, который воспроизводит звук быстрее или медленнее, но не меняет высоту звука. Есть ли другой способ добиться этого? Могу ли я, например, записывать с частотой 22 кГц и воспроизводить с частотой 44 кГц? Я попытался изменить настройки звука в плеере, но они доступны только для чтения. Я упустил что-то простое?

Я просмотрел разные звуковые библиотеки, но мне бы хотелось просто взломать, если он есть.

Спасибо!


person Adam    schedule 01.10.2013    source источник


Ответы (2)


Audio Tap Processor - это пример кода от Apple, который, кажется, меняет частоты. Попробуйте пример приложения, и, если он вам поможет, вы можете взять фрагменты кода, чтобы собрать свое приложение.

person chuthan20    schedule 21.11.2013
comment
супер сложный, не пытающийся копаться в низкоуровневом аудиокоде - person Adam; 22.11.2013

вы можете использовать dirac-2 из измерения dsp для изменения высоты тона на iphone. Цитировать: -

DIRAC2 доступен как в виде коммерческой объектной библиотеки, предлагающей неограниченные частоты дискретизации и поддержку многоканальности с фазовой синхронизацией, так и в виде бесплатной одноканальной версии LE 44,1 / 48 кГц.

в противном случае для AVAudioPlayer

использование setEnableRate: и setRate: будет работать только с iOS 5.0 и выше. поэтому я использую RespondsToSelector: для проверки на устройстве, примет ли устройство запрос:

_noticeAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Rooster-mono" ofType:@"wav"]]
                                                      error:nil];;
if ([_noticeAudio respondsToSelector:@selector(setEnableRate:)])
    _noticeAudio.enableRate = YES;
if ([_noticeAudio respondsToSelector:@selector(setRate:)])
    _noticeAudio.rate = 2.0;
person Vizllx    schedule 27.11.2013
comment
обратите внимание, что свойство rate влияет на скорость воспроизведения, но не меняет высоту звука. - person Mr. Zystem; 11.05.2019