
-
アプリの音声録音機能の強化
アプリの音声録音機能を向上させる方法を学びましょう。iOSおよびiPadOS26の入力ピッカーインタラクションを使用して、オーディオデバイスを柔軟に選択する方法や、AirPodsで高品質な音声録音を行うためのAPIを紹介します。また、発話と環境音の分離を実現するAudioToolbox、AVFoundation、Cinematicの各種フレームワークを使用した空間オーディオの収録および編集の機能の概要も説明します。
関連する章
- 0:00 - イントロダクション
- 1:02 - 入力経路の選択
- 3:06 - AirPodsでの録音
- 5:11 - 空間オーディオのキャプチャ
- 11:04 - Audio Mix
リソース
- AVFoundation
- Capturing Spatial Audio in your iOS app
- Cinematic
- Editing Spatial Audio with an audio mix
- TN3177: Understanding alternate audio track groups in movie files
関連ビデオ
WWDC25
-
このビデオを検索
こんにちは Steve Nimickです 空間オーディオテクノロジーに携わる オーディオ担当ソフトウェアエンジニアです このセッションでは アプリのオーディオ機能を 強化する方法をご紹介します 入力デバイス選択やオーディオキャプチャ 再生に関するAPIの新情報をお伝えします
オーディオキャプチャの最初のステップは 入力デバイスの選択です マイクには さまざまな種類があり 新しいAPIでは アプリ内から アクティブな音源を変更できます その他の機能強化により AirPodsを使用した 新しい高音質録音モードにも 対応できるようになりました さらに 空間オーディオキャプチャのほか オーディオ処理の さまざまな可能性を提供する 新機能が追加されています 新しいAPIにより 空間オーディオ再生中も オーディオミックス機能が利用できます まずは入力ルートの選択と 接続されたデバイスとアプリの やり取りに関する最新情報を紹介します コンテンツ制作者は 音楽の録音や Podcastなど さまざまなアプリで 複数のオーディオデバイスを 併用します iOS 26では システムによる オーディオハードウェア管理方法が改善され アプリでもその方面が 改善されています AVKitの新しいAPIでは 使用可能な入力のリストが表示されます アプリ内からオーディオソースを 切り替えできるため システム設定に 移動する必要はありません こちらがUIの表示例です アプリには 新しい入力選択メニューを表す UIボタンを設けることができます ライブサウンドレベル測定機能を備えた デバイスのリストが表示されます マイクモードの 選択ビューでは 入力デバイスがサポートする モードが表示されます オーディオスタックは 選択したデバイスを記憶して 次回アプリをアクティブした際に 同じ入力を選択します こちらが この機能を 可能にするAPIです
まず このAPIを呼び出す前に オーディオセッションの設定が必要です これで入力選択ビューに デバイスの正しいリストが表示されます 入力ピッカーを表示するには AVInputPickerInteractionのインスタンスを オーディオセッションの設定後に 作成します 次に InputPickerInteractionの デリゲートを 表示する側の ビューコントローラとして指定します アプリでは ピッカー操作ビューの 表示に使用する ボタンなどのUI要素を 指定できます 最後に UIコールバック関数で 「present」メソッドを使用して オーディオ入力メニューを表示させます これで ボタンをタップすると ピッカー操作ビューが表示され デバイスの選択や変更を実行できます このAPIは アプリを稼働させたままの状態で 入力を直感的に変更する 便利な手段を提供します コンテンツ制作者にとって 最高のマイクとは 最もアクセスしやすい マイクでしょう ここで 人気の便利な入力デバイス AirPodsの話をしましょう iOS 26では オーディオキャプチャ機能を 備えたアプリ用に 高品質、高サンプルレートの Bluetoothオプションを新たに提供します コンテンツ制作者のため特別に設計された 新しいメディア調整機能により 声とバックグラウンドサウンドの 絶妙なバランスを実現し LAVマイクに匹敵する 仕上がりになっています チューニングモードをアクティブにすると アプリはAirPodsでの高品質録音用に 特別設計された より信頼性の高い Bluetoothリンクを使用します アプリでこの機能を構成する方法を ご紹介します AVAudioSessionとAVCaptureSessionの 両方に対応しています AudioSession向けに 新しいカテゴリオプションが登場しました 「bluetoothHighQualityRecording」です アプリがすでにAllowBluetoothHFP オプションを使用している場合は 高品質オプションを追加すれば アプリがこれをデフォルトとして使用します BluetoothHFPは 入力ルートが Bluetooth高品質に非対応だった場合の フォールバックに使用します AVCaptureSessionにも 同様のプロパティがあり trueに設定すると この高品質モードが有効になりますが このとき アプリでオーディオセッションを 手動設定する必要はありません 両方のセッションで このオプションが有効である場合 システムレベルの オーディオ入力メニューには デバイスリスト内の 高品質AirPodsが表示されます AirPods機能という 優れたオーディオ録音機能がアプリに加わり 最小限のコード変更をするだけで これをサポートできます 高品質録音にプラスして AirPodsには 録音を簡単に制御できる 機能も組み込まれています AirPodsのステムを押す動作で 開始と停止を操作できます この機能をアプリでサポートする方法の 詳細については WWDC25の「Enhancing your camera experience with capture controls」をご覧ください 次は 空間オーディオのキャプチャに関する 新しいアップデートを紹介します iOS 26では AVAssetWriterを使用する アプリで 空間オーディオを録音できます まず 「空間オーディオ」の 仕組みから説明しましょう 空間オーディオのキャプチャでは iPhoneのマイクと同様に マイクの配列を使用して 3Dシーンを録音し マイクからのキャプチャが 「アンビソニックス」と呼ばれる 球面調和関数に基づく形式へと 変換されます 空間オーディオは 一次アンビソニックス すなわちFOAとして保存されます FOAは 最初の4つの球面調和関数 コンポーネントを使用します オムニコンポーネントが1つと X、Y、Z方向または 前後、左右、上下の 3つの垂直双極子です この形式で録音したオーディオは AirPodsのヘッドトラッキングのように 空間オーディオ再生機能を 活用できます さらに オーディオミックスエフェクト用の 新しいAPIを使用することで 前景音と背景音のバランスを 簡単に調整できます 空間オーディオキャプチャ用のAPIは iOS 18で導入されました AVCaptureMovieFileOutputを使用するアプリで multichannelAudioModeプロパティの AVCaptureDevice入力を .firstOrderAmbisonicsに設定すると 空間オーディオを録音できます iOS 26では ボイスメモなど 音声のみのアプリでも QuickTimeオーディオ形式でデータを 保存できるオプションが加わりました 拡張子は.qtaです QuickTimeムービーや MPEGファイルと同様に QTA形式は 代替トラックグループを含む 複数のオーディオトラックをサポートします 空間オーディオファイルの 作成方法と同じです 適切にフォーマットされた 空間オーディオアセットの概要を紹介します オーディオトラックは2つで AAC形式のステレオトラックと 新しいApple Positional Audio Codec (APAC) フォーマットの空間オーディオトラックです ProResでの録音中 両オーディオトラックは PCMとしてエンコードされます ステレオトラックは 空間オーディオ非対応のデバイスとの 互換性を確保するためのものです 最後に 少なくとも1つの メタデータトラックに 再生用の情報が収容されます 録音を停止すると キャプチャプロセスが データサンプルを作成します これは オーディオミックスエフェクトを 使用できることを示すものです 再生中に適用されるチューニング パラメータも ここに含まれます このトピックについては 次の オーディオミックスの項で詳しく説明します トラックグループの作成と フォールバック関係の詳細については テクニカルドキュメント「Understanding alternate track groups in movie files」をご覧ください MovieFileOutputに代えてAVAssetWriterで 独自のファイルを構築するアプリにおいて 空間オーディオ録音に 必要な要素を紹介します オーディオトラック2本と メタデータトラック1本が必要になります CaptureDeviceInputのmultichannelAudioMode プロパティをFOAに設定した場合 AVCaptureSessionはAudioDataOutput (ADO)インスタンスを2つまでサポートします 1つのADOで 4チャンネルのFOAまたは 2チャンネルのステレオを生成できます 2トラックの空間オーディオには ADOが2つ必要です そのうちの1つはFOAで構成し もう1つは ステレオ出力にする必要があります ADOオブジェクトに 新しいチャンネル レイアウトタグのプロパティが加わりました 「spatialAudioChannelLayoutTag」です このレイアウトタグは ステレオまたは HOA、ACN、SN3Dの4チャンネルによる 一次アンビソニックスの いずれかの値を取ることができます アプリでオーディオトラックを作成するには AssetWriter入力が2系統必要です 1つはステレオ用 1つはFOA用です 最後のピースがメタデータで このサンプル作成用の新しいAPIがあります AVCaptureSpatialAudioMetadataSampleGenerator というヘルパーオブジェクトを使用します サンプルジェネレータオブジェクトは FOA AudioDataOutputからのものと 同じバッファを受け取ります 録音が停止したら 最後のバッファを送信した後 サンプルジェネレータが 時間メタデータのサンプルを作成して もう1つのAssetWriterInputに渡し メタデータトラックとしてコンパイルして 最終的なコンポジションが完成します AVCaptureSessionではもう1つ MovieFileOutputと AudioDataOutputに影響する アップデートが行われました 両方のオブジェクトを活用するアプリにも 役立つものとなっています AudioDataOutputは 取得したオーディオ サンプルバッファへのアクセスを提供し これをもとに エフェクトを適用したり 画面上に波形を描画したりできます iOS 26では CaptureSessionが MovieFileOutputと AudioDataOutput 両方の動作を同時にサポートします つまり ファイルへの記録と オーディオサンプルの処理や 視覚化を アプリがリアルタイムで 実行できるというわけです 今回のアップデートにより こうした「サプライズ風」の要素を より自由に アプリに追加できるようになりました AVAssetWriterを使用した 空間オーディオキャプチャの例については 新しいビデオ「Capturing Spatial Audio in your iOS app」にリンクされた サンプルアプリをご確認ください iOS 26では 空間オーディオを含む シネマスタイルのビデオを 録画できるオプションもあります 詳しくは WWDC25の「Capture Cinematic video in your app」をご覧ください 次のセクションでは 空間オーディオの もう1つの要素 オーディオミックスによる 再生と編集についてお話しします iOS 26およびmacOS 26では Cinematicフレームワークに オーディオミックスエフェクト制御用の オプションが加わりました 写真編集機能と同じですが こちらは 空間オーディオで録画された ビデオ用です オーディオミックス機能により 話し声などの前景音と 周囲のノイズとの バランスを制御できるようになります 新しいAPIは 写真アプリと同じ シネマティックやスタジオ センターフレームといった ミックスモードを備えています アプリでは ほかにも6つのモードを 利用できます 抽出された話し声だけのモノラル音声や 前景寄りの音声や 環境音だけの背景音声を FOA形式で提供できます 次にご紹介するデモのように 空間オーディオコンテンツ再生用の パワフルな機能をプラスできます こちらのデモは 空間オーディオ録音における オーディオミックスエフェクトの 制御方法を紹介するものです この美しいApple Parkキャンパスは ビデオの舞台として申し分ない環境です ただ 携帯電話のマイクは そのままだと 周囲の音をすべて拾ってしまいます 私が録りたい音は このような音ではありません Steveさんが さまざまなオーディオミックススタイルを 切り替えられるUI要素を アプリに追加してくれました 標準、シネマティック、スタジオ そして複数の背景音声系統モードです シネマティックを選択すると 映画のような オーディオミックススタイルが適用されます ほら ずっといい音になりました 話し声と周囲のノイズのバランスを コントロールするための スライダーも追加されています 自分の声が大きくはっきりと 聞こえるポジションを探します ここですね かなりいいバランスだと思います
バックグラウンドモードを選択すると 私の声はまったく聞こえなくなります オーディオトラックには 環境音だけが収録されます ポストプロダクション用に 環境音だけの トラックを作成するのに利用できます そのモードを選択してみます
ボイスモードに戻りました Steveさんから この機能を アプリに追加する方法を紹介します
実装方法を説明します まず Cinematicフレームワークを インポートします オーディオミックスの 2つのプライマリパラメータは effectIntensityとrenderingStyleで デモアプリではUI要素を使用して これらをリアルタイムで変更します 強度については 0から1の範囲で動作します CNSpatialAudioRenderingStyleは スタイルオプションを含む列挙型です 次に CNAssetSpatialAudioInfoの インスタンスを初期化します このクラスにはオーディオミックス操作用の さまざまなプロパティとメソッドがあります たとえば 次の行にある run audioInfo.audioMix()は 現在のミックスパラメータを使用して AVAudioMixを作成します この新しいミックスを AVPlayerItemの オーディオミックスプロパティに設定します AVPlayerアプリでオーディオミックスの 使用を始める準備は これだけです
AVPlayerの外では 新しいAudioUnit 「AUAudioMix」で オーディオミックスの処理を実行できます これは 話し声と環境音の 分離を実行するAUです このAUを直接使用すると 多くの設定を自動でこなし AVPlayerを使用しないアプリで 威力を発揮します より詳細にカスタマイズされた ワークフローが必要になるアプリには AUAudioMixが より多くの柔軟性と チューニングオプションを提供します ここからは AU内のさまざまな コンポーネントを紹介します 入力は4チャンネルの FOA空間オーディオです これが 話し声と環境音を分離する 処理ブロックに流れ込みます 出力は AUSpatialMixerに送られます ここで複数の再生オプションを 選択できます 最初の2つのAUパラメータは RemixAmountとStyleという オーディオミックスの 2つの基本要素です また AUAudioMixプロパティの EnableSpatializationは SpatialMixerの オン/オフを切り替えます これで AU全体の 出力形式を変更します これについては 後で詳しく説明します AudioUnitプロパティ SpatialMixerOutputTypeは ヘッドフォン、デバイス内蔵スピーカー 外部スピーカーから 出力先を選択する オプションを提供します AUには 入力ストリーム形式と 出力ストリーム形式のプロパティもあります AUはFOAオーディオを受信するので 入力ストリームを4チャンネルに設定します もう1つ SpatialAudioMixMetadata というプロパティがあります 話し声のコンポーネントや 環境音コンポーネントについて 自動生成される チューニングパラメータを 収容するCFDataオブジェクトです その仕組みを紹介します 空間オーディオの録音が 停止した直後 キャプチャプロセスが 前景と背景の音を分析します 再生中に適用される ゲインやEQなどの オーディオパラメータを計算します 値は メタデータトラックに 保存されます AUAudioMixを設定する際 アプリは 入力ファイルからデータを読み取って チューニングパラメータを AUに適用する必要があります メタデータをファイルから 抽出する方法の一例を紹介します ここでも CNAssetSpatialAudioInfo のインスタンスから始まり audioInfo.spacialAudioMixMetadata を呼び出して MixMetadataの プロパティを取得します このプロパティをAUで設定するには CFData型とする必要があります
先ほど EnableSpatialization プロパティの話をしました デフォルトではオフになっており このモードでは AUは 5チャンネル分の 音源分離結果を出力します FOAにおける環境音用の4チャンネルと 話し声用の1チャンネルです 空間化プロパティを有効にすると AUは 5.1サラウンドや7.1.4など 他の一般的なレイアウトをサポートします さて ビデオにはコマンドラインツールの サンプルプロジェクト 「Editing Spatial Audio with an audio mix」がリンクされています SpatialAudioCLIでオーディオミックスを 適用する方法には 3通りあります プレビューモードは「AVPlayer」を使用して 入力内容を再生し パラメータを適用します ベイクオプションは AVAssetWriterで ステレオ互換性トラックなど オーディオミックスパラメータを含む ファイルを新規で保存します プロセスモードは「AUAudioMix」を介して 入力を送信し 指定したチャネルレイアウトに 出力をレンダリングします 新しいオーディオ機能を すべてお伝えしたところで アプリを1つ上のレベルに 引き上げる方法をご紹介します
AVInputPickerInteractionを追加して アプリ内でネイティブに オーディオ入力を 選択できるようにしましょう AirPodsのBluetooth 高品質録音オプションを有効にして 素晴らしいサウンドを 迅速かつ 簡単にキャプチャできるようにしましょう MovieFileOutputとAudioDataOutput を使用して 録音やオーディオエフェクト適用時の 柔軟性を高めましょう 空間オーディオキャプチャと AVAssetWriterを統合し 再生中は 新しいオーディオミックスAPIを使用して コントロール性を最大限に高めましょう サンプルコードをダウンロードして 空間オーディオを始めましょう
皆さんのアプリを使って 創造された世界に 没入できる瞬間を 楽しみにしています ご視聴ありがとうございました
-
-
2:10 - Input route selection
import AVKit class AppViewController { // Configure AudioSession // AVInputPickerInteraction is a NSObject subclass that presents an input picker let inputPickerInteraction = AVInputPickerInteraction() inputPickerInteraction.delegate = self // connect the PickerInteraction to a UI element for displaying the picker @IBOutlet weak var selectMicButton: UIButton! self.selectMicButton.addInteraction(self.inputPickerInteraction) // button press callback: present input picker UI @IBAction func handleSelectMicButton(_ sender: UIButton) { inputPickerInteraction.present() } }
-
3:57 - AirPods high quality recording
// AVAudioSession clients opt-in - session category option AVAudioSessionCategoryOptions.bluetoothHighQualityRecording // AVCaptureSession clients opt-in - captureSession property session.configuresApplicationAudioSessionForBluetoothHighQualityRecording = true
-
13:26 - Audio Mix with AVPlayer
import Cinematic // Audio Mix parameters (consider using UI elements to change these values) var intensity: Float32 = 0.5 // values between 0.0 and 1.0 var style = CNSpatialAudioRenderingStyle.cinematic // Initializes an instance of CNAssetAudioInfo for an AVAsset asynchronously let audioInfo = try await CNAssetSpatialAudioInfo(asset: myAVAsset) // Returns an AVAudioMix with effect intensity and rendering style. let newAudioMix: AVAudioMix = audioInfo.audioMix(effectIntensity: intensity, renderingStyle: style) // Set the new AVAudioMix on your AVPlayerItem myAVPlayerItem.audioMix = newAudioMix
-
16:45 - Get remix metadata from input file
// Get Spatial Audio remix metadata from input AVAsset let audioInfo = try await CNAssetSpatialAudioInfo(asset: myAVAsset) // extract the remix metadata. Set on AUAudioMix with AudioUnitSetProperty() let remixMetadata = audioInfo.spatialAudioMixMetadata as CFData
-
-
- 0:00 - イントロダクション
iOS 26 introduces API updates for app audio recording enhancements, including input device selection, high-quality AirPods recording, Spatial Audio capture, audio processing, and the Audio Mix feature during Spatial Audio playback.
- 1:02 - 入力経路の選択
AVKit includes a new API, 'AVInputPickerInteraction', that enhances audio input management for content creators using multiple devices. 'AVInputPickerInteraction' allows apps to display a live input selection menu with sound-level metering and microphone mode selection, enabling you to switch audio sources directly within the app without navigating to System Settings. The audio stack remembers the selected device for future use.
- 3:06 - AirPodsでの録音
Starting in iOS 26, AirPods offer LAV-like sound quality with a new media tuning mode, allowing you to use AirPods as a recording tool. Apps can easily enable this high-quality Bluetooth recording feature through 'AVAudioSession' or 'AVCaptureSession', providing a reliable and convenient high-quality solution with built-in stem controls for easy start and stop.
- 5:11 - 空間オーディオのキャプチャ
iOS 26 introduces several updates to Spatial Audio recording capabilities. Spatial Audio capture now allows apps using 'AVAssetWriter' to record in First Order Ambisonics (FOA) format. FOA utilizes four spherical harmonic components to capture a 3D audio scene, enabling immersive Spatial Audio playback with features like headtracking on AirPods. New APIs enable you to adjust the balance of foreground and background sounds using the Audio Mix effect and to save audio-only data in the QuickTime audio format (.qta). A properly formatted Spatial Audio asset includes two audio tracks: a stereo track in AAC format for compatibility and a Spatial Audio track in the new Apple Positional Audio Codec (APAC) format. Additionally, there is at least one metadata track containing essential playback information. iOS 26 also allows simultaneous operation of 'MovieFileOutput' and 'AudioDataOutput', enabling real-time audio processing and visualization while recording to a file. You can also now record Cinematic Videos with Spatial Audio included.
- 11:04 - Audio Mix
In iOS and macOS 26, the Cinematic framework introduces new Audio Mix controls for Spatial Audio videos. This feature, like the Photos app's edit feature, allows you to adjust the balance between foreground sounds, such as speech, and background ambient noise. The framework provides various mix modes, including Cinematic, Studio, and In-Frame, as well as six additional modes that extract speech or ambience separately. You can implement these controls using UI elements to adjust the effect intensity and rendering style in real-time. The AudioUnit AUAudioMix enables more specific and customized workflows for apps that don't use AVPlayer. It separates speech and ambience, and allows you to render to different outputs, such as headphones, speakers, or surround sound systems. The framework also includes 'SpatialAudioMixMetadata' that automatically tunes the dialog and ambience components during playback. A command-line tool sample project, 'SpatialAudioCLI', is linked to this video. Download it to get started with Spatial Audio.