В моем приложении используется внешний USB-микрофон с очень точной термокомпенсированной кварцевой генераторной установкой (TCXO). Частота дискретизации составляет 48 кГц. Я подключаю его в iOS через разъем для подключения камеры. Я использую EZAudio-библиотеку, и все работает отлично, за исключением того, что iOS, похоже, сохраняет собственный внутренний источник синхронизации для выборки звука вместо моего точного 48 кГц.Внешний источник часов с аудиоустройством usb в iOS
Я прочитал всю документацию о CoreAudio, но при использовании молниеносного звука я не нашел ничего, связанного с источником синхронизации.
Есть ли какой-либо способ выбора между внутренним или внешним источником синхронизации?
Спасибо!
var audioFormatIn = AudioStreamBasicDescription(mSampleRate: Float64(48000),
mFormatID: AudioFormatID(kAudioFormatLinearPCM),
mFormatFlags: AudioFormatFlags(kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked),
mBytesPerPacket: 2,
mFramesPerPacket: 1,
mBytesPerFrame: 2,
mChannelsPerFrame: 1,
mBitsPerChannel: 16,
mReserved: 0)
func initAudio()
{
let session : AVAudioSession = AVAudioSession.sharedInstance()
do {
try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
try session.setMode(AVAudioSessionModeMeasurement)
try session.setActive(true)
}
catch {
print("Error Audio")
}
self.microphone = EZMicrophone(microphoneDelegate: self, withAudioStreamBasicDescription: audioFormatIn)
}
ОБНОВЛЕНИЕ: Благодаря @Rhythmic Fistman, установка предпочтительной частотой дискретизации частично решить эту проблему. Больше не требуется повторная выборка из iOS, и TCXO остается основным источником синхронизации. Но сигнал теперь быстро поврежден чем-то, что кажется пустым в буферах. Эта проблема становится все хуже и хуже с длиной записи. Конечно, поскольку мне нужен порт молнии для подключения оборудования, мне очень сложно легко отлаживать его!
Скриншот сигнала через 7 минут:
Скриншот сигнала через 15 минут:
Я только что попробовал (как это не реализовано в EZAudio), но это не работает, к сожалению. – jcr
Поскольку я, по-видимому, могу установить частоту дискретизации ниже, чем мой 48KHz, это действительно означает, что iOS перераспределяет входящие аудиоданные, которые, безусловно, я хочу избежать. – jcr
Что сообщает 'session.sampleRate' перед настройкой микрофона? Можете ли вы пройти через «EZMicrophone», чтобы узнать, что происходит с «inputFormat» здесь https://github.com/syedhali/EZAudio/blob/master/EZAudio/EZMicrophone.m#L246? –