Slide 1

Slide 1 text

entaku What’s new in voice processing ଞWhat’s new in Audio

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

🧐 🧐

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

entaku What’s new in voice processing ଞWhat’s new in Audio

Slide 6

Slide 6 text

What’s new in voice processing https://developer.apple.com/videos/play/wwdc2023/10235/

Slide 7

Slide 7 text

https://developer.apple.com/videos/play/wwdc2023/10235/ What’s new in voice processing Learn how to use the Apple voice processing APIs to achieve the best possible audio experience in your VoIP apps. We'll show you how to detect when someone is talking while muted, adjust ducking behavior of other audio, and more.

Slide 8

Slide 8 text

let audioEngine = AVAudioEngine() let inputNode = audioEngine.inputNode // 11:08 - Other audio ducking do { try inputNode.setVoiceProcessingEnabled(true) } catch { print("Could not enable voice processing \(error)") } let duckingConfig = AVAudioVoiceProcessingOtherAudioDuckingConfiguration(enableAdvancedDucking: false, duckingLevel: .max) inputNode.voiceProcessingOtherAudioDuckingConfiguration = duckingConfig https://developer.apple.com/videos/play/wwdc2023/10235/ Other audio ducking

Slide 9

Slide 9 text

// 12:31 - Voice activity detection - implementation with HAL APIs let listener = { (event : AVAudioVoiceProcessingSpeechActivityEvent) in if (event == AVAudioVoiceProcessingSpeechActivityEvent.started) { // User has started talking while muted. Prompt the user to un- mute } else if (event == AVAudioVoiceProcessingSpeechActivityEvent.ended) { // User has stopped talking while muted } } inputNode.setMutedSpeechActivityEventListener(listener) // When user mutes inputNode.isVoiceProcessingInputMuted = true https://developer.apple.com/videos/play/wwdc2023/10235/ Muted talker detection

Slide 10

Slide 10 text

Add SharePlay to your app https://developer.apple.com/videos/play/wwdc2023/10239/

Slide 11

Slide 11 text

Add SharePlay to your app Discover how your app can take advantage of SharePlay to turn any activity into a shareable experience with friends! We'll share the latest updates to SharePlay, explore the bene fi ts of creating shared activities, dive into some exciting use cases, and take you through best practices to create engaging and fun moments of connection in your app. https://developer.apple.com/videos/play/wwdc2023/10239/

Slide 12

Slide 12 text

Add SharePlay to your app struct OrderTogether: GroupActivity { // Define a unique activity identifier for system to reference static let activityIdentifier = "com.example.apple- samplecode.TacoTruck.OrderTogether" // App-specific data so your app can launch the activity on others' devices let orderUUID: UUID let truckName: String var metadata: GroupActivityMetadata { var metadata = GroupActivityMetadata() metadata.title = "Order Tacos Together" metadata.subtitle = truckName metadata.previewImage = UIImage(named: "ActivityImage")?.cgImage metadata.type = .shopTogether return metadata } } https://developer.apple.com/videos/play/wwdc2023/10239/

Slide 13

Slide 13 text

Enhance your app’s audio experience with AirPods https://developer.apple.com/videos/play/wwdc2023/10233/

Slide 14

Slide 14 text

Enhance your app’s audio experience with AirPods Discover how you can create transformative audio experiences in your app using AirPods. Learn how to incorporate AirPods Automatic Switching, use AVAudioApplication to support Mute Control, and take advantage of Spatial Audio to create immersive soundscapes in your app or game. https://developer.apple.com/videos/play/wwdc2023/10233/

Slide 15

Slide 15 text

Enhance your app’s audio experience with AirPods // Adopting AVAudioApplication into your App import AVFAudio // Get the started instance let instance = AVAudioApplication.shared // Register for mute gesture notifications on Notification Center AVAudioApplication.inputMuteStateChangeNotification // Key for mute state AVAudioApplication.muteStateKey // Updating AVAudioApplication’s mute state instance.setInputMuted(...) // Reading AVAudioApplication’s mute state instance.isInputMuted https://developer.apple.com/videos/play/wwdc2023/10233/

Slide 16

Slide 16 text

instance.setInputMuteStateChangeHandler { isMuted in //... return didSucceed } // Optional: let CoreAudio mute your input for you (macOS only) // Define the Core Audio property var inputeMutePropertyAddress = AudioObjectPropertyAddress( mSelector: kAudioHardwarePropertyProcessInputMute, mScope: kAudioObjectPropertyScopeInput, mElement:kAudioObjectPropertyElementMain) // Enable this property when you want to mute your input UInt32 isMuted = 1; // 1 = muted, 0 = unmuted AudioObjectSetPropertyData(kAudioObjectSystemObject, &inputeMutePropertyAddress, 0, nil, UInt32(MemoryLayout.size(ofValue: isMuted), &isMuted) Enhance your app’s audio experience with AirPods https://developer.apple.com/videos/play/wwdc2023/10233/

Slide 17

Slide 17 text

Explore AirPlay with interstitials https://developer.apple.com/videos/play/wwdc2023/10238/

Slide 18

Slide 18 text

Explore AirPlay with interstitials https://developer.apple.com/videos/play/wwdc2023/10238/ Learn how you can upgrade your app's AirPlay audio experience to be more robust and responsive. We'll show you how to adopt enhanced audio buffering with AVQueuePlayer, explore alternatives when building a custom player in your app, and share best practices.

Slide 19

Slide 19 text

let audioSession = AVAudioSession.sharedInstance() try audioSession.setCategory(. playback ,xmode: . default , policy:.longFormAudio ) let player = AVQueuePlayer() let url = URL(string: "http://www.examplecontenturl.com") let asset = AVAsset(url: url) let item = AVPlayItem(asset: asset) player.insert(item, after: nil) player.play() Explore AirPlay with interstitials https://developer.apple.com/videos/play/wwdc2023/10238/

Slide 20

Slide 20 text

·ͱΊ • AVAudioEngineͷڧԽͰ௨࿩தͷϛϡʔτ΍ԻΛࡌͤΒΕΔ • Share PlayͷڧԽ • αʔυύʔςΟ͔Β࢖͑Δ • AirDropͰ͖Δ • AirPods/AirPlayར༻࣌ͷΞοϓσʔτ • ϛϡʔτ͕ઃఆ΍ݕ஌ʹΑͬͯΑΓγʔϜϨεͳମݧʹͳΔʁ

Slide 21

Slide 21 text

Audio͸͍͍ͧ ΈΜͳ΋Audio৮Γ·͠ΐ͏ʙ https://developer.apple.com/videos/audio-video

Slide 22

Slide 22 text

ࣗݾ঺հ Name: ԕ౻୓໻(͑Μͨ͘) Job: iOS / AndroidΤϯδχΞͳͲ Career: SIer໿6೥ 2018/3~ εϙʔπϚονϯάΞϓϦ 2019/3~ CBcloud ෺ྲྀITαʔϏε 2021/12~ Voicy

Slide 23

Slide 23 text

https://recruit.voicy.jp/

Slide 24

Slide 24 text

Twitter: @entaku_0818 ࠙਌ձͰ΋͓࿩͠͠·͠ΐ͏ʂ ɹԻ੠ܥ΍SwiftUIͳͲiOSΞϓϦ։ൃʹ͍ͭͯ ൃ৴ͯ͠·͢ Α͔ͬͨΒϑΥϩʔ͍ͯͩ͘͠͞ γϯϓϧ࿥Ի ݸਓΞϓϦ΋࡞ͬͯ·͢ʂʂ GitHub

Slide 25

Slide 25 text

https://twitter.com/voicy_dev/status/1671796717744971777?s=20 དྷ݄LTձ͋ΔͷͰདྷ͍ͯͩ͘͞ʂʂ

Slide 26

Slide 26 text

entaku What’s new in voice processing ଞ What’s new in Audio