オーディオ セッションを使用せずに 16kHz のサンプル レートを要求したいのですが、これまでのところ成功していません。
マイク/スピーカーを構成する前に AudioUnitGetProperty / SampleRate を介してハードウェアをクエリすると、mSampleRate が 0 であることがわかります。これは、任意のサンプル レートがサポートされていることを意味するものとしてドキュメントに記載されていますが、ハードウェアが実際に最も近いレートを提供することも述べられています。それはサポートします。16k を要求してハードウェアに再度クエリを実行すると、mSampleRate はマイクとスピーカーの両方でそれぞれ 44100 になります。AudioUnitGetProperty / SampleRate を使用して入力/出力バスの入力/出力スコープをクエリすると、代わりに StreamFormat で同等のクエリを使用した場合と同様に、すべての場合で 0 が返されます。セッションが構成または初期化されていないにもかかわらず、AudioSessionGetProperty / CurrentHardwareSampleRate でクエリを実行すると、44100 が返されます。オーディオ セッションを使用すると、すべてが期待どおりに機能します。
また、オーディオ セッションを使用して 16k Hz を要求すると、入力バスの入力スコープと出力スコープの間でセッションが静かに 16k に変換されるのか、それともハードウェアが前述のように「任意の」サンプル レートを実際にサポートするのかは不明です。ドキュメントで。また、ハードウェアでサポートされているサンプル レートのリストがあると便利です。クエリ可能なリストがない理由を理解するのは困難です。
これを行う方法 (セッションなし) を説明する関連ドキュメント、または入力バスの出力範囲を設定できるサンプルレートを正確に説明する関連ドキュメントに興味があります。ここのさまざまなスレッドで、44.1k のダウンシフトでなければならないという議論を見てきましたが、これまでのところ、その主張を裏付ける文書は見つかりませんでした。
どうもありがとう。