
-
Mejora las capacidades de grabación de audio de la app
Aprende a mejorar la funcionalidad de grabación de audio de la app. Explora la flexibilidad de la selección de dispositivos de audio con la interacción del selector de entrada en iOS y iPadOS 26. Descubre las API disponibles para grabación de voz de alta calidad con AirPods. También presentaremos capacidades de grabación y edición de audio espacial que te permiten aislar la voz y los sonidos ambientales de fondo, todo mediante las estructuras AudioToolbox, AV Foundation y Cinematic.
Capítulos
- 0:00 - Introducción
- 1:02 - Selección de ruta de entrada
- 3:06 - Grabación con AirPods
- 5:11 - Captura de audio espacial
- 11:04 - Mezcla de audio
Recursos
- 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
Videos relacionados
WWDC25
-
Buscar este video…
¡Hola! Mi nombre es Steve Nimick. Soy Audio Software Engineer, trabajo en tecnologías de audio espacial. Hoy te hablaré sobre cómo mejorar las capacidades de audio de tu app, de actualizaciones de API para la selección de dispositivos de entrada, captura de audio y reproducción.
El primer paso para capturar audio es seleccionar un dispositivo de entrada. La nueva API permite cambiar la fuente de audio desde dentro de la app. También se permite que tu app use AirPods en un modo de grabación de alta calidad. Y además, la captura de audio espacial y más funcionalidades para procesar audio. La nueva API desbloquea la funcionalidad Mezcla de Audio al reproducir audio espacial. Veamos la selección de la ruta de entrada y la interacción con dispositivos conectados. Quienes crean contenido pueden usar dispositivos de audio para varias tareas, como grabar música o hacer podcasts. iOS 26 mejora cómo el sistema administra el hardware de audio, que se aplica también a las apps. La API de AVKit muestra entradas disponibles y permite cambiar la fuente desde la app sin tener que ir a la configuración. Este es un ejemplo de esta interfaz de usuario. Tu app puede tener un botón que revele el menú de selección de entrada. Muestra la lista de dispositivos, con medición del nivel de sonido en vivo. Una vista de selección del modo de micrófono muestra los modos compatibles. La pila de audio recuerda el dispositivo y elige la misma entrada la siguiente vez. Esta es la API que permite esto para tu app.
Primero, es necesario configurar la sesión de audio antes de invocar esta API. Esto garantiza que la vista de selección muestre la lista correcta de dispositivos. Para presentar el selector de entrada, crea una instancia de AVInputPickerInteraction. Haz esto después de configurar la sesión de audio. Asigna el delegado de InputPickerInteraction como controlador de vista de presentación. Tu app puede designar un elemento de IU que revele la vista de interacción del selector. En la función de respuesta de IU, usa “present” para mostrar el menú de entrada de audio. Cuando se toca el botón, las personas pueden seleccionar y cambiar el dispositivo. Así, los usuarios pueden cambiar de entrada mientras mantienen tu app activa. Para quienes crean contenido, el mejor micrófono es el más disponible. Ahora hablaré de un dispositivo de entrada popular y conveniente: los AirPods. En iOS 26, hay una nueva opción de Bluetooth de alta calidad para apps con captura de audio. Con un nuevo ajuste de medios, logra un equilibrio entre voz y ruidos de fondo, como si un micrófono grabara en vivo.
Con este modo, tu app usa un enlace Bluetooth más confiable, diseñado para grabación de alta calidad con AirPods. Así es cómo la app configura esta funcionalidad. Es compatible tanto con AVAudioSession como con AVCaptureSession. Para la sesión de audio, hay una nueva opción de categoría: bluetoothHighQualityRecording. Si tu app ya usa la opción AllowBluetoothHFP, al agregar la opción de alta calidad, la usará como predeterminada. Usa BluetoothHFP si la ruta de entrada no es compatible con Bluetooth de alta calidad. Para AVCaptureSession, hay una propiedad similar que habilita este modo sin que la app tenga que configurar la sesión de audio manualmente. Si habilitas la opción, verás los AirPods de alta calidad entre los dispositivos en el menú de entrada de audio del sistema. Esta es una gran incorporación para tu app y se activa con cambios mínimos de código. Los AirPods tienen controles integrados que facilitan la grabación en alta calidad. Se puede iniciar y detener la grabación presionando la base de los AirPods. Para más información, ve “Mejorar experiencia de la cámara con controles de captura”. Ahora, te presentaré actualizaciones de la captura de Audio Espacial. En iOS 26, las apps que usan AVAssetWriter pueden grabar con Audio Espacial. Primero, es importante definir cómo funciona el “Audio Espacial”. Con un conjunto de micrófonos, como los del iPhone, se graba la escena 3D y las capturas se pasan a un formato basado en armónicos esféricos, o Ambisonics. El Audio Espacial se almacena como ambisónico de primer orden, o FOA. FOA utiliza los primeros cuatro componentes armónicos esféricos. Hay un componente omni y tres dipolos perpendiculares en las direcciones X, Y y Z. El audio con este formato se beneficia de las funcionalidades del Audio Espacial. Tus apps pueden usar la Mezcla de Audio de la nueva API y equilibrar los sonidos en primer y segundo planos. La API de captura de Audio Espacial se lanzó con iOS 18. Las apps que usan AVCaptureMovieFileOutput pueden grabar audio espacial si configuran la propiedad multichannelAudioMode de la entrada AVCaptureDevice en .firstOrderAmbisonics. En iOS 26, las apps de audio pueden ahorrar datos usando formato QuickTime con la extensión .qta. Como con las películas QuickTime o archivos MPEG, el formato QTA admite pistas de audio con grupos de pistas alternativos, tal como se componen los archivos de audio espacial. Este es un activo de Audio Espacial con el formato correcto. Hay dos pistas de audio: una pista estéreo en formato AAC y una de Audio Espacial en formato APAC. Durante la grabación en ProRes, estas pistas se codifican como PCM. La pista estéreo es para la compatibilidad con dispositivos sin Audio Espacial. Hay al menos una pista de metadatos con información para la reproducción. Al parar la grabación, se crea una muestra de datos que indica que se puede usar la Mezcla de Audio. También contiene parámetros de ajuste que se aplican durante la reproducción. Hablaré más sobre este tema en la sección sobre Mezcla de Audio. Para más información sobre los grupos de pistas y las relaciones alternativas, lee “Understanding alternate track groups in movie files”. Para apps que usan AVAssetWriter, veremos qué se necesita para grabar Audio Espacial. Debe haber dos pistas de audio y una pista de metadatos. Cuando multichannelAudioMode de CaptureDeviceInput está establecida en FOA, AVCaptureSession admite hasta dos instancias de AudioDataOutput, o ADO. Un solo ADO puede producir cuatro canales de FOA o dos en estéreo. El Audio Espacial con dos pistas requiere dos ADO, uno configurado en FOA y otro con salida estéreo. Hay una nueva propiedad de etiqueta de disposición de canal en el objeto ADO: spacialAudioChannelLayoutTag. La etiqueta puede tomar dos valores: estéreo o ambisónico de primer orden, que tiene cuatro canales de disposición ambisónica: HOA - ACN - SN3D. Tu app necesita dos entradas AssetWriter para crear las pistas de audio. Una para estéreo y otra para FOA. La pieza final son los metadatos, y hay una nueva API que crea esa muestra. Usa el objeto auxiliar: AVCaptureSpatialAudioMetadataSampleGenerator. El objeto generador de muestra recibe los mismos buffers desde AudioDataOutput. Al detener la grabación, el generador crea una muestra de metadatos temporizada que se pasa a otro AssetWriterInput y se compila en la composición final como una pista de metadatos. Hay otra actualización de AVCaptureSession que afecta MovieFileOutput y AudioDataOutput. AudioDataOutput da acceso a los búferes de muestras de audio cuando los recibe, así la app aplica efectos en la pantalla. En iOS 26, puedes ejecutar MovieFileOutput y AudioDataOutput al mismo tiempo. Tu app puede grabar un archivo y procesar o visualizar las muestras en tiempo real. Esta actualización te permite agregar elementos de sorpresa a tu app. Hay un ejemplo captura de Audio Espacial con AVAssetWriter en la app de muestra de “Capturar audio espacial en tu app de iOS” en un enlace del video. En iOS 26, también puedes grabar videos cinematográficos con Audio Espacial. Para más información, ve “Captura video cinematográfico en tu app” de WWDC25.
En la siguiente sección, veremos otro elemento del Audio Espacial: la reproducción y edición, usando Mezcla de Audio. Ahora Cinematic Framework incluye opciones para usar la Mezcla de Audio. La misma funcionalidad de edición de Fotos para videos grabados con Audio Espacial. Mezcla de Audio permite equilibrar los sonidos de primer plano y de fondo. La nueva API incluye los modos de Fotos: Cine, Estudio y Primer Plano. Además, hay otros seis modos disponibles para tu app. Pueden darte solo el habla, el sonido de primer plano o el ambiental en formato FOA. Es una poderosa adición a las apps que admiten contenido de Audio Espacial. Aquí se muestra cómo controlar el efecto Mezcla de Audio. Estoy en el hermoso campus de Apple Park, un gran escenario para mi video. Pero los micrófonos de mi teléfono captan todos los sonidos que me rodean. Y eso no es lo que busco para mi grabación de audio. Steve agregó un elemento de IU a su app para cambiar entre las mezclas de audio: standard, cinematic, studio o uno de los modos de fondo. “Cinematic” aplica el estilo de mezcla de audio cinematográfico. Ahí, ahora suena mucho mejor. Ahora también hay un regulador para equilibrar el habla y el ruido ambiental. Encontraré la posición donde mi voz se escuche fuerte y clara. Creo que esta funciona bastante bien.
Si eligiera un modo en segundo plano, mi voz desaparecería. La pista de audio solo contendría sonidos ambientales. Esto se puede usar para crear una pista de ambiente puro para la postproducción. Ahora seleccionaré ese modo.
Ahora, volvamos al modo voz. Steve te mostrará cómo agregar esto a tus apps.
Así es cómo puedes implementarlo. Primero, importa la estructura Cinematic. Los parámetros principales de Mezcla de Audio son effectIntensity y renderizedStyle. La app usa elementos de IU para cambiarlos en tiempo real. La intensidad opera en un rango de 0 a 1, y CNSpatialAudioRenderingStyle contiene opciones de estilo. Luego inicia una instancia de CNAssetSpatialAudioInfo. Esta clase tiene muchas propiedades y métodos para la Mezcla de Audio. Por ejemplo, en la siguiente línea, ejecuta audioInfo.audioMix() Esto crea un AVAudioMix con los parámetros de mezcla actuales. Luego, coloca esta mezcla en la propiedad de mezcla de audio de AVPlayerItem. Eso es todo lo que necesitas para usar Mezcla de Audio en tu app AVPlayer.
Fuera de AVPlayer, puedes procesar las mezclas de audio con AUAudioMix. Esta es la unidad de audio (AU) que separa el habla y el ambiente. Usar la AU directamente es útil para apps que no usan AVPlayer, que ajusta muchas configuraciones automáticamente. Si necesitas un flujo de trabajo más personalizado, AUAudioMixv da más flexibilidad y ajustes. Estos son los diferentes componentes dentro de la AU. La entrada son cuatro canales de audio espacial con FOA. Fluye hacia el bloque de procesamiento que separa el habla y el ambiente. Y el resultado se envía a AUSpatialMixer, que ofrece otras opciones de reproducción. Los primeros dos parámetros AU son RemixAmount y Style. Y está la propiedad EnableSpatialization, que activa o desactiva SpatialMixer. Esto cambia el formato de salida del AU. Hablaremos de eso en breve. La propiedad de AudioUnit, SpatialMixerOutputType, permite renderizar la salida a audífonos, a las bocinas de tu dispositivo o unas externas. La AU tiene una propiedad para formatos de transmisión de entrada y salida. La AU recibe audio FOA, así que configura la transmisión de entrada con cuatro canales. Hay una propiedad más: SpatialAudioMixMetadata. Es un objeto CFData con parámetros de ajuste generados automáticamente para los componentes de diálogo y ambiente. Así es cómo funciona. Al detener la grabación de audio espacial, se analiza el sonido en primer plano y de fondo. Calcula los parámetros de audio que se aplican durante la reproducción. Estos valores se guardan en una pista de metadatos. Al configurar AUAudioMix, tu app lee los datos del archivo de entrada y aplica los parámetros en el AU. Este es un ejemplo de cómo extraer estos metadatos de un archivo. Comienza con una instancia de CNAssetSpatialAudioInfo, recupera la propiedad MixMetadata con audioInfo.spacialAudioMixMetadata. Debe ser de tipo CFData para establecer esta propiedad en la AU.
Antes, mencioné la propiedad EnableSpatialization. Viene ya desactivada y, en este modo, la AU emite el resultado de cinco canales de la separación de sonido. Es decir, cuatro canales de ambiente, en FOA, más un canal de diálogo. Cuando se activa la propiedad Spatialization, AU admite otras disposiciones de canales, como surround 5.1 o 7.1.4. Puedes ver un proyecto de muestra en uno de los enlaces de este video, que se llama “Editar audio espacial con una mezcla de audio”. SpatialAudioCLI da ejemplos de cómo aplicar mezclas de audio de distintas formas. El modo de vista previa usa AVPlayer para reproducir la entrada y aplicar parámetros. “Bake” usa AVAssetWriter para guardar un archivo con los parámetros de la mezcla, incluida una pista de compatibilidad estéreo. “Process” envía la entrada por “AUAudioMix” y renderiza la salida en la disposición de canal que indiques. Ahora te mostramos cómo llevar tu app al siguiente nivel.
Agrega AVInputPickerInteraction para permitir la selección de la entrada de audio en la app.
Habilita la grabación Bluetooth de alta calidad para AirPods para creadores de contenido. Usa MovieFileOutput y AudioDataOutput para grabar y aplicar efectos de audio, lo que brinda más flexibilidad. Integra la captura de Audio Espacial con AVAssetWriter y usa Mezcla de Audio en la reproducción. Para comenzar con Audio Espacial, descarga los proyectos de código de muestra relacionados.
Ya quiero ver todo lo que la gente crea usando tus apps. ¡Que tengas un lindo día!
-
-
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 - Introducción
iOS 26 presenta actualizaciones de API para mejoras en la grabación de audio de apps, incluida la selección del dispositivo de entrada, grabación de AirPods de alta calidad, captura de audio espacial, procesamiento de audio y la funcionalidad de mezcla de audio durante la reproducción de audio espacial.
- 1:02 - Selección de ruta de entrada
AVKit incluye una nueva API, AVInputPickerInteraction, que mejora la administración de la entrada de audio para los creadores de contenido que usan múltiples dispositivos. AVInputPickerInteraction permite que las apps muestren un menú de selección de entrada en vivo con medición del nivel de sonido y selección del modo de micrófono, lo que te permite cambiar las fuentes de audio directamente dentro de la app sin tener que navegar a la Configuración del sistema. La pila de audio recuerda el dispositivo seleccionado para uso futuro.
- 3:06 - Grabación con AirPods
A partir de iOS 26, los AirPods ofrecen una calidad de sonido similar a la de un micrófono LAV con un nuevo modo de ajuste de medios, que permite usar los AirPods como herramienta de grabación. Las apps pueden habilitar fácilmente esta funcionalidad de grabación Bluetooth de alta calidad a través de AVAudioSession o AVCaptureSession, lo que proporciona una solución confiable y conveniente de alta calidad con Stem Control integrado para iniciar y detener fácilmente.
- 5:11 - Captura de audio espacial
iOS 26 presenta varias actualizaciones a las capacidades de grabación de audio espacial. La captura de audio espacial ahora permite que las apps que usan AVAssetWriter graben en formato Ambisónico de Primer Orden (FOA). FOA usa cuatro componentes armónicos esféricos para capturar una escena de audio 3D, lo que permite una reproducción de audio espacial envolvente con funcionalidades como seguimiento de la cabeza en los AirPods. Las nuevas API te permiten ajustar el equilibrio de los sonidos de primer plano y de fondo mediante el efecto Mezcla de audio y guardar datos de solo audio en el formato de audio QuickTime (.qta). Un recurso de audio espacial con el formato correcto incluye dos pistas de audio: una pista estéreo en formato AAC para compatibilidad y una pista de audio espacial en el nuevo formato códec de audio posicional de Apple (APAC). Además, hay al menos una pista de metadatos que contiene información de reproducción esencial. iOS 26 también permite el funcionamiento simultáneo de MovieFileOutput y AudioDataOutput, lo que permite el procesamiento y la visualización de audio en tiempo real mientras se graba en un archivo.
- 11:04 - Mezcla de audio
En iOS y macOS 26, la estructura Cinematic presenta nuevos controles de mezcla de audio para videos de audio espacial. Esta funcionalidad, al igual que la funcionalidad de edición de la app Fotos, te permite ajustar el equilibrio entre los sonidos de primer plano, como el habla, y el ruido ambiental de fondo. La estructura proporciona varios modos de mezcla, incluidos Primer Plano, Estudio y Cine, así como seis modos adicionales que extraen el habla o el ambiente por separado. Puede implementar estos controles usando elementos de la UI para ajustar la intensidad del efecto y el estilo de representación en tiempo real. La nueva AudioUnit llamada AUAudioMix permite flujos de trabajo más específicos y personalizados para apps que no usan AVPlayer. Separa el habla y el ambiente, y permite reproducir en diferentes salidas, como audífonos, bocinas o sistemas de sonido envolvente. La estructura también incluye SpatialAudioMixMetadata que ajusta automáticamente los componentes de diálogo y ambiente durante la reproducción. Está disponible un nuevo proyecto de muestra de herramienta de línea de comandos, SpatialAudioCLI, para el procesamiento de audio espacial. Descárgalo para comenzar a usar el audio espacial.