View in English

  • メニューを開く メニューを閉じる
  • Apple Developer
検索
検索を終了
  • Apple Developer
  • ニュース
  • 見つける
  • デザイン
  • 開発
  • 配信
  • サポート
  • アカウント
次の内容に検索結果を絞り込む

クイックリンク

5 クイックリンク

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • トピック
  • すべてのビデオ
  • 利用方法

WWDC19に戻る

ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。

  • 概要
  • トランスクリプト
  • AVAudioEngineの新機能

    AVAudioEngineは、オーディオのリアルタイムキャプチャ、処理、再生を可能にします。このセッションでは、音声処理やスペーシャルレンダリングモードの選択など、独自のオーディオAppでAVAudioEngine APIの強化点を活用する方法を紹介します。

    リソース

    • Building a Signal Generator
    • Using Voice Processing
      • HDビデオ
      • SDビデオ
    • プレゼンテーションスライド(PDF)
  • このビデオを検索

    (音楽)

    こんにちは Audio APIのアップデートの セッションへようこそ 私はピーター・バシル Core Audioチームのエンジニアです

    AVAudioEngineの新機能から お話しします

    いくつか新しいAPIと 改善点を加えました まずは Voice Processingのサポート 次に2つのノード AVAudioSinkNodeと AVAudioSourceNodeです そして 空間オーディオ レンダリングの改善

    詳細を見ていきましょう

    AVAudioEngineに VoiceProcessigモードを追加しました このモードは 主にエコーキャンセレーションと VoIPアプリケーションで使用します つまり― 有効にすると 入力されるオーディオ上で シグナルプロセッシングが 余分に適用されます すると デバイスから出る すべてのオーディオが消されます

    そのためには 入力と出力の両ノードが Voice Processingモードである 必要があります

    ですから I/Oのどちらかで モードを有効にすると エンジンが両ノードを認識し Voice Processingモードに 切り替えます

    Voice Processingが使えるのは オーディオデバイスでの レンダリング時のみです 手動のレンダリングモードでは 使えません

    有効化には I/Oノードのいずれかで setVoiceProcessingEnabledと設定 動的には有効にできません エンジンが停止している 必要があるのです

    AV Echo Touchの Sample Code Projectでは Voice Processingの使用方法を 詳しく説明しています

    では AVAudioEngine内の 新しいノードを見てみましょう AVAudioSourceNodeと AVAudioSinkNodeです 両ノードがユーザ定義の ブロックをラップすると アプリケーションが AVAudioEngineと― 送受信できるようになります

    オーディオデバイスへの レンダリング中― ブロックはリアルタイムで動作します そのため ブロック内には メモリアロケーションや Libdispatchの呼び出しが あってはいけません

    AVAudioSourceNodeを使って ノードにブロックを渡し オーディオデータを出力先に送ります これで 簡単に ノードを作成できます 完全なAudio Unitを実装し AVAudio Unitでラップする 必要はありません ノードはリアルタイムと― 手動レンダリングモードで 使えます

    AVAudioSourceNodeは サンプルレートなどの Linear PCM変換をサポートします

    出力が1つで 入力はありません

    この短いスニペットは AVAudioSourceNodeの 使い方を表しています ブロックは イニシャライザの引数として渡され ノードの作成後は 接続されることができます 更に詳しい例は Sample Code Projectの Signal Generatorに記しています

    次は AVAudioSinkNodeです AVAudioSourceNodeの 対の片方です インプットにつながる ノードチェーンからの 入力オーディオを受信する ブロックをラップします AVAudioSinkNodeは 入力チェーンに制限されています 要するに 入力ノードの ダウンストリームである必要があります フォーマット変換はサポートしません ブロック内のフォーマットは ハードウェアの入力フォーマットと 同じでなければなりません

    VoIPアプリケーションにおいて 入力のリアルタイム処理にも便利です リアルタイムコンテキストで タップは動作しないので 通常タップでは不十分だからです

    AVAudioSinkNodeの作り方を示した コードスニペットです AVAudioSourceNodeと そっくりです 主なステップは― ブロックと共にノードを初期化し エンジンに加え 入力ノードのダウンストリームに づなげます

    次は 空間レンダリングの 改善点です 自動の空間レンダリング アルゴリズムを導入しました そのため 現在のAVAudioPlayerNodeは マルチチャンネルのオーディオ コンテンツの空間化に対応

    自動の空間レンダリングの アルゴリズムを使うと ルートに最適な 空間化アルゴリズムが選択されます ヘッドフォンや スピーカーの設定を基に どのアルゴリズムが最適が 考えなくても済みます ヘッドフォン用にNear-Fieldと In-Headレンダリングが加わりました また 内蔵スピーカーの バーチャルサラウンドが iOSと2018年以降のノートブックで 利用可能です

    ご覧になっているのが AVAudio3DMixingプロトコルの 新しいAPIです AVAudio3DMixingRendering Algorithmのenumは “auto”という新しいエントリです 更に output Typeで 出力タイプを指定できます

    auto設定で 出力タイプが自動的に検出されます ただし リアルタイムモードに限ります

    マルチチャンネルストリームの 空間化で Point-SourceとAmbienceBed レンダリングをサポートします また チャンネルに基づいた フォーマットと 第3オーダーまでの Higher-Order Ambisonicsもです

    AVAudio3DMixingプロトコルに 2つの空間化プロパティを 追加しました sourceModeと pointSourceInHeadModeです

    spatializeIfMonoは レガシーの動きをします マルチチャンネルストリームの バイパスと同じで 通過か出力フォーマットへの ダウンミックスを意味します pointSourceで オーディオはモノ出力し プレーヤーノード位置で レンダリング ambienceBedを使うと オーディオは3次元の世界に 固定されます プレーヤーノード位置から リスナー方向に回転が可能です

    自動レンダリング アルゴリズムを用いた― ambienceBedの例です 次の確認が重要です プレーヤーと環境ノード間の 接続フォーマットが マルチチャンネルのレイアウトを 含んでいることです

    次はAVAudioSessionの新機能です

    AVAudioSessionPromptStyleは アプリケーションへのヒントで スタイル修正の 音声プロンプトを表示させます 例えば Siriが話している時や 電話の最中は― 音声ナビゲーションは紛らわしいです Siriが記録しても困ります プロンプトのスタイルの変化に注目し より使いやすくなるように プロンプトを修正すべきです プロンプトのスタイルは “.none” “.short” “.normal”の3種類 プロンプトを完全に無効にするには 短縮されたプロンプトか 標準のプロンプトを使います

    AVAudioSessionの 他の改良点もみましょう デフォルトでは オーディオレコーディング中― ハプティクスとシステム音を ミュートにします 新しいプロパティでは レコーディング中にも これらの音を許可します オーディオ入力のセッション中もです 使用するsetterは allowHapticsAndSystemSounds DuringRecordingです

    詳しい情報は デベロッパWebサイトにて

    ありがとうございました

Developer Footer

  • ビデオ
  • WWDC19
  • AVAudioEngineの新機能
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード(英語)
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    Apple Developerアプリを入手する
    Copyright © 2025 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン