私のアプリは、非常に正確な熱補正水晶発振器(TCXO)を備えた外付けUSBマイクロフォンを使用しています。サンプルレートは48KHzです。 カメラキットのコネクタからiOSに接続します。 私はEZAudioライブラリを使用していますが、iOSは正確な48KHzではなく、オーディオサンプリングのための独自の内部クロックソースを保持しているようです。iOSのUSBオーディオデバイスを使用した外部クロックソース
私は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)
}
UPDATE:@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? –