2016-05-17 3 views
0

Я новичок в обработке звука и стараюсь делать то, что, как я думал, будет довольно простой задачей. Я ошибся, поэтому я ищу небольшое направление.Обработка входного сигнала аудиосигнала

Это настольное приложение OS X. Я воспроизвожу один частотный тон (1 кГц) во время воспроизведения тона. Я хочу использовать выбранный вход для прослушивания тона, а затем рассчитать отношение сигнал/шум на основе этого входа.

Я попытался использовать AVFoundation и Accelerate framework, но это не работает для меня. Прежде чем я спрыгнул с этого кролика, чтобы его отладить. Мне интересно, если это лучший подход или я должен смотреть на AVAudioEngine или Amazing Audio Engine.

Конечно, если есть примеры обработки звука SNR, я мог бы посмотреть, что это тоже было бы полезно.

Заранее благодарим за то, что вы сделали звук noob в правильном направлении.

ответ

1

Прежде всего, CoreAudio не является тривиальным, но не требует инструментов высокого уровня для захвата входного сигнала и его измерения. Один экземпляр звукового компонента типа:

AudioComponentDescription audioCompDesc; 
audioCompDesc.componentType = kAudioUnitType_Output; 
audioCompDesc.componentSubType = kAudioUnitSubType_HALOutput; 
audioCompDesc.componentManufacturer = kAudioUnitManufacturer_Apple; 
audioCompDesc.componentFlags = 0; 
audioCompDesc.componentFlagsMask = 0; 

выполнит эту работу за вас.

Вы должны знать, как правильно инициализировать его и обработать обратный вызов. Обязательно включите ввод, отключите вывод на примере аудиокомпонентов . Вы можете установить и использовать обратный вызов для сбора и измерения уровня сигнала и шума.
Вдаваясь в подробности дела, это значительно превысит объем этого ответа и цели этого сайта, который не учебный сайт. К счастью, у вас есть много примеров, чтобы узнать по всему Интернету. Существует «не обойтись без» CoreAudio tutorial book, где вы можете узнать из кода, который не очень далек от того, что вам нужно. Обязательно прочитайте документацию Apple в AudioUnit и AudioToolbox API.

Проведите некоторое индивидуальное исследование, а затем отправьте сообщение, если вы столкнетесь с конкретной проблемой, связанной с программированием.