ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
空間オーディオによるAppへの没入
Appやウェブ上のメディアで映画館のような体験を提供するために、空間オーディオがどのように役立つかを紹介します。互換性のあるハードウェアを使用しているユーザに、没入感のあるオーディオを簡単に提供する方法や、ユーザの帯域や接続状況に応じて異なるリスニング体験を自動的に提供する方法を解説します。また、Appでの体験をカスタマイズしたり、空間オーディオを使って新しいエキサイティングな方法でストーリを伝えるお勧めの方法についても紹介します。
リソース
関連ビデオ
WWDC23
WWDC21
-
ダウンロード
♪ (空間オーディオによるAppへの没入) こんにちは このセッションでは 空間オーディオで没入感のあるAppを 作成する方法を紹介します AppleのStreaming Mediaチームの Simonです 映画館にいるような体験を ユーザーに提供して サービスを差別化することを 検討していますか? マルチポイントのオーディオソースを レンダリングして 臨場感のあるオーディオを 提供したいですか? これらをポケットの中の 便利なモバイルデバイスから 実現できたらいいですね このセッションでは 空間オーディオを Core AVFoundation playback API とWebKitを使って提供する 方法を探っていきます 充実したアジェンダを ご用意しました よく知られている既存の 技術と対比させながら 空間オーディオとは何かを 一緒に考えてみましょう 続けて この機能が提供する技術や 処理法を列挙します 後半では APIをご紹介するとともに 適用されるさまざまな 処理法をご紹介します 次は 過去のリリースにおける 空間オーディオの サポートレベルを確認し 適切な機能を選択できるように します また 2021年秋の OSリリースでの 新機能を明らかにします そして最後には デモで締めくくります それを皆さんにお伝えしたい と思っています どうぞお楽しみください 空間オーディオとは何かを 理解するために まず古典的なステレオについて 考えてみましょう ヘッドホンにしても 昔のステレオスピーカーにしても 私たちが感じる音の広がりは 限られています 後ろからの音も 真正面からの音も 上からの音も聞こえません 現実世界を反映する 位置関係が再現されていません また ヘッドホンの場合は 耳の中や頭にかぶせた小さな スピーカーから音が出ます 私たちはこれを 頭の中の体験と呼んでいます 映画を見ながら自然に 頭を動かすと 小さなスピーカーも一緒に 動きます これは劇場のような体験 ではありませんが ここで空間オーディオが 役に立つのです 空間オーディオで 劇場のような体験ができるのです これは音響心理学的な技術で 魅力的な仮想の音場を作り出す 効果があります マルチチャンネルコンテンツとの 相性は抜群ですが ステレオコンテンツにも 魅力的な体験を提供します 最後に オーディオビジュアル およびオーディオのみの メディアソースには 空間オーディオが対応します そして何よりも ユーザーが すでに持っている さまざまなApple製品に 対応しています デベロッパが空間オーディオの体験を 容易に提供できるようにしました 先ほど述べたように Appで オーディオを楽しむには マルチチャンネルが近道です マルチチャンネルオーディオの オルタネートを参照するHLS のバリアントを提供することで ユーザーの環境に最も 適応できるものです 実際 コンテンツライブラリに マルチチャンネルの オーディオソースメディアが 既にあるかもしれません これを公開するだけで Appで空間オーディオを デフォルトで有効にできます ソフトウェアの変更は 一切必要ありません 2021年秋のリリースでは 通常のメディアファイルや WebKitのMSEに含まれる マルチチャンネルオーディオ トラックも 後で述べるように 限定的にサポートされます では作成できるようになった メディア体験について ご紹介します 空間オーディオで再現できる体験は たくさんあります コンサートに参加 しているかのように 私たちを包み込むような音楽を 届けることができます フルモーションのビデオゲーム を作ることができ インタラクティブなシーンで ユーザーを没入させる冒険を することができます しかし この技術はどのように 機能するのでしょうか 空間オーディオを使用すると 仮想音場は静的になります 先ほどのステレオのように 頭の動きに合わせて音場が 動くことはありません その結果 私たちが劇場で期待するのと同じ 効果と感覚を得ることが できました この効果は 多くの製品に搭載されている 内蔵スピーカーだけでなく 一部のヘッドフォン製品でも 実現しています 空間認識機能付きヘッドホンの場合 再生デバイスの慣性計測ユニットの 計測値とヘッドホンの 同様の計測値を比較して ユーザーの頭部の姿勢を 判断します これは オーディオレンダリング を動的に変更して 静的な音場効果を維持 するために使用されます その結果 カメラやリスナーの 周りの本来の配置から 音声が発せられているような 感覚が得られ 頭の外にいるような 体験ができます 旋回中のバスや離発着中の 飛行機でも使えます また ステレオソースをアップ ミックスして5.1チャンネル を再現する技術も 提供しています 既存のステレオコンテンツ のライブラリに加えて 空間オーディオを提供します サポートされている ヘッドフォンについては 2021年秋のリリースではこれが デフォルトのステレオ処理です また この処理を暗黙のうちに 行うことで 空間音声の採用や提供を より魅力的なものにします 今現在 マルチチャンネル 音声を配信することで メディアの映像品質が 損なわれることを 心配される方もいるでしょう マルチチャンネルオーディオは 現在提供されているステレオの AACレンディションよりも はるかに高ビットレートです ネットワークの帯域が 限られている中で この2つを両立させるには どうすればいいのでしょうか これは本当に困ったことです この問題を解決するために ユーザーの帯域に合わせて 空間的なオーディオ体験を 実現しました 帯域が不足して高品質な 映像を提供できない場合 音声はシームレスに劣化し アップミックスされた ステレオ音声になりますが 空間処理は変わりません 移行前に提供されていた ヘッドトラッキングは 維持されます その後 帯域が確実に回復すると フルマルチチャンネルの 空間処理が復活します このようなアダプティブ空間 オーディオ体験では ステレオとマルチチャンネル の間で音量レベルを 正規化することが これまで以上に重要になります さらに Dynamic Range Control (DRC)や dialnormのメタデータを適宜 メディアエンコーディングに 付与してください developer.apple.comで 公開されている HLS Authoring Specification に詳細が記載されています ここでは 空間オーディオ体験を カスタマイズするための インターフェイスについて ご紹介します AVPlayerItemや 今回の AVSampleBufferAudioRenderer などを介して Appのデフォルトのオーディオ体験を カスタマイズできます 4つのAVAudioSpatializationFormats うちいずれかを指定します これは モノラルやステレオ やマルチチャンネル そして 後者2つの組み合わせの空間化 を可能にするもので モノラルやステレオや マルチチャンネルの ソースオーディオフォーマット に対応しています ゼロを指定すると オーディオ 空間化を禁止することができます なお Appleプラットフォームでは コントロールセンターや Bluetoothの設定により オーディオルートに応じて ユーザーがさらに カスタマイズできるよう システムレベルの制御を 提供しています この4つの値のうち1つを AVPlayerItem または 2021年秋のリリースの AVSampleBufferAudioRendererの allowedAudioSpatialization Formatsプロパティを設定します ではどうすればAVFoundation API でオーディオルートが空間音声を サポートしていることを 確認できるのでしょうか どうしたらAVSampleBuffer AudioRendererインスタンスに マルチチャンネルオーディオを 配信すべきかがわかるでしょうか 2021年秋のリリースでは AVAudioSessionPortDescriptionで これを示すプロパティを導入します さらにAVAudioSessionでは マルチチャンネルオーディオを Appが提供できることを システムにアピールするための 仕組みを導入しています この表示はユーザーが コントロールセンターや Bluetoothの環境設定で 空間オーディオ処理を 有効にしていない場合に 表示されます なお AppがAVPlayerを 使用している場合は これらの表示が管理されます isSpatialAudioEnabled プロパティは ポートが空間オーディオ レンダリング可であることと ユーザーがそれを許可している ことを示します ルート変更の通知を見て イベントごとに isSpatialAudioEnabledを 確認することをお勧めします 同様に AVAudioSessionは ユーザーが コントロールセンターや Bluetoothの設定で 空間設定を変更した際 spatialPlaybackCapabilities ChangedNotificationを発行します この通知には 利便性を考慮して 空間オーディオの 有効化の状態に関する情報が 含まれています AVAudioSession SpatialAudioEnabledKeyを使って 通知に関する状態を取得します 最後に あなたのソフトウェアや サービスがマルチチャネル コンテンツを提供できることを システムに示すために インテントを含めた関数 setSupportsMultichannelContent を呼び出します これは ネットワークの条件が許し 必要な処理が有効化されていれば 空間オーディオが可能であることを ユーザーに伝えるために使用されます ここで 過去3年にわたる リリースでの機能サポート を調査してみましょう macOS Catalinaや iOSやiPad OS 13では AVPlayerItemと WebKitのvideoタグで httpスキームを持つ任意の URLを指定することで 内蔵スピーカーから空間 オーディオが提供されます 2018年以降のモデルの MacBookおよびiPhone iPad Proの製品ラインを持つ ユーザーが対象となります デフォルトでは 利用可能な場合 マルチチャンネルオーディオ レンディションを選択して 空間化が提供されます macOS Big Sur iOS iPad OS 14では ヘッドトラック対応の ヘッドホンAirPods Pro およびAirPods Maxの サポートを導入しました これらのアクセサリによる 空間化機能は 2016年以降のiPhone/iPadと 連携したデバイスに提供されます ここでもデフォルトでは 利用可能な場合 マルチチャンネル オーディオレンディションを選択して 空間化が提供されます これにより 新たにmacOS Montereyや iOS iPadOSさらにtvOS 15 でのサポートが実現しました ここで AVPlayerItemと AVSampleBufferAudioRenderer によるサポートとW3C Media Source Extensionsへの 限定的なWebKitサポートを提供します MSEパスには 空間化体験を調整するための インターフェイスはありません ただし Media Capabilities API セット内の AudioConfiguration辞書を介して 空間オーディオサポートの 有無を検出する インターフェイスは存在します これらのリリースでは 利用可能で条件が許す限り モノラルやステレオ マルチチャンネル のすべてのソースに対して デフォルトでオーディオ 空間化を提供します すべてのAVSampleBuffer AudioRenderer の使用を含むオーディオのみの プレゼンテーションでは デフォルトでマルチチャンネル オーディオレンディション のみが処理を提供します 空間オーディオとは何かと その使い方がわかったところで 今日は特別な情報をお届けします 今回は ソフトウェアや サービスに空間オーディオを 使用することで クリエイティブにストーリーを 伝える新しい方法を ご紹介します 聴いてみましょう ♪
困ったな もう一度やってみましょう うーん ちょっとクパティーノ 問題が発生してるよ 画面外の声:今回はどうしたの? Simon: わかったよ 何? ささやき声:ごめんサイモン Simon:だめなの? 画面外の声:だめそう… Simon: 本当に? 画面外の声:うん Simon: もういいよ わかったわかった 私たちは空間オーディオの クールな実演のために とても素晴らしいデモを 作ったのですが どうやら 今日はこれがうまく いかないようです ああ 何とかならないかな 映像をお見せすることは できませんが できるとしたら 説明してみましょうか 皆さんが今どこにいるか わかりませんが 目を閉じて WWDCの会場にいる と想像してみてください 会場でどんな音がするか わかりますよね? どんな感じですか 心に思い描いてください ステージと大きなスクリーン を描くのです これから照明を落として 映像を流すところです ちょっとごめん 明かりを落として サンフランシスコの上空 高くにいます 湾岸から高層ビルを伝って ヒューヒューと音がしています 周りには風が吹き荒れており 街から半島を抜けて Apple Parkまで ズームアップしましょう Parkに向かって飛んでいくと すごい髪型のアヒル が見えます 速度を落として と叫んでいますが これが実にクールな左から右への ドップラー効果をもたらします 速度を落として! そして今 私たちは リンゴの 果樹園の中を飛んでいます 木々の揺らぎを感じましょう 穏やかな時間を過ごすために 池にたどり着きます ささやき声:空間オーディオ には興味ないわ Simon:そして 私たちは再び動き出しました 鳥たちの間を縫うようにして Caffè Macsの大きな ガラスのドアにたどり着き 滑らかなテラゾの床を 滑るようにして 女性を見つけました 彼女はテーブルの上にiPad を置いてピザを食べながら とても緊張感のある映画に 夢中になっています 夕暮れの早い時間帯に ジャングルが広がります
いや本当にオーディオは 私たちをシーンに 引き込んでくれますね ささやき声:彼はこのデモを うまく表現してるね まるでその場にいるかのようです とても鮮やかです
すると遠くで猿の声が聞こえます しかし突然不気味になり すべての現実世界が静かになります 聞こえるのは葉っぱの ざわめきだけ そして… 木が倒れる音 何かがやってくる とても大きい! ドン ドン ドン 私たちの胸の鼓動が聞こえます そして静寂 これで安心…かと思ったら
目の前の木の間から恐竜が 飛び出してきました そして私たちは上を見上げ 恐竜がの開いた口の中に 真っ直ぐに入っていくのです
PA:42のラップですね 振り返ると そこは映画の撮影現場でした 男性:照明がイマイチだ Simon:恐竜の動きが止まり セットを片付けるための 一団が現れました 女性:ケリーのために頑張って 無線の声:俳優たちに20点 女性:メイクアップしながら 打ち上げを見るよ 通信を切断しています あなたも来る? 2人を追ってトレーラーに向かい 今日の宇宙飛行の打ち上げを もちろんサラウンド音声で 配信します 息をのむ観客をかき分けて テレビの方へと向かいます 女性:発射準備オーケー 男性:全チェック完了 いよいよカプセルの中へ
ペダルを踏み込みましょう ロケットが点火されました 女性: レッツゴーー 月への特急便 次の停車駅はトランクウィリティ 男性:オーライ ブースター分離 3.. 2.. 1.. クリーンで滑らか ロケットの第2ステージを 一緒に追っていると.. ロケットが地球に戻ってきます どんどんスピードを上げていきます 大気圏を抜けて 地上に戻ってきます 何かに向けて 大きな飛行機です だんだん大きくなります
PA:皆さん おはようございます 機長からご連絡です
今日の最終目的地に向けて 降下していきます
Simon:美しい..
楽しかったですね では今日のまとめです ユーザーに空間オーディオ体験を 提供することがいかに 簡単であるかを学びました 実際 空間オーディオを利用するために Appに手を加える必要は ないかもしれません HLSのバリアントプレイリストに マルチチャンネルオーディオを提供する だけですむ場合もあります なお ステレオとマルチチャンネル レンディションの 音量レベルを正規化し DRCのメタデータを 含めることが重要です 最後に 過去3年間にリリース されたOSの中で いかにして幅広いユーザー層に 空間オーディオを 提供できるかを見てきました 関連セッションでは HLSリソースにマルチチャンネル オーディオが搭載されているかを 確認する方法を紹介しています AVFoundationで HLSバリアントを検証する際に これを確認できます 今日は私のチームと一緒に このセッションを楽しんで いただけたでしょうか ぜひ 空間オーディオと あなたのAppにどっぷり没入して 残りのWWDC 2021を 楽しんでください ありがとうございました ♪
-
-
6:55 - Spatialization Formats
public struct AVAudioSpatializationFormats : OptionSet { public init(rawValue: UInt) public static var monoAndStereo: AVAudioSpatializationFormats { get } public static var multichannel: AVAudioSpatializationFormats { get } public static var monoStereoAndMultichannel: AVAudioSpatializationFormats { get } }
-
7:21 - AVPlayerItem and AVSampleBufferAudioRenderer
@available(macOS 11.0, *) var allowedAudioSpatializationFormats: Int32
-
8:21 - Spatial audio availability
@available(iOS 6.0, *) class AVAudioSessionPortDescription : NSObject { @available(iOS 15.0, *) var isSpatialAudioEnabled: Bool { get } }
-
8:35 - Spatial audio availability
extension AVAudioSession { @available(iOS 15.0, *) class let spatialPlaybackCapabilitiesChangedNotification: NSNotification.Name } @available(iOS 15.0, *) let AVAudioSessionSpatialAudioEnabledKey: String
-
9:01 - Control center integration
extension AVAudioSession { @available(iOS 15.0, *) func setSupportsMultichannelContent(_ inValue: Bool) throws @available(iOS 15.0, *) var supportsMultichannelContent: Bool { get } }
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。