Key Takeaways
- SDK-Based Integration: Embeddable noise suppression library that runs inside your app's audio pipeline, not a system-level feature or end-user tool
- Built for Developers: Full programmatic control over when and how noise suppression is applied in real-time communication apps
- On-Device Processing: All noise suppression happens locally with zero network latency, ensuring user privacy
- Production-Ready Performance: Designed for real-time scenarios; minimal audio delay for smooth voice experiences
The Koala Noise Suppression iOS SDK is a real-time, on-device noise suppression library for Swift developers building real-time communication apps on iOS.
Koala Noise Suppression enables developers to remove background noise from live audio streams—such as voice calls, video conferences, and in-app chats—directly on the device with minimal latency. Running entirely within an iOS app's audio pipeline, Koala Noise Suppression gives developers full programmatic control while keeping user audio private and offline. This eliminates the need to rely on users to adopt end-user tools like Apple's Voice Isolation or other system-level noise cancellation.
This developer guide shows how to integrate the Koala Noise Suppression iOS SDK into your iOS app with Swift code examples.
Step-by-Step: Integrating Real-Time Noise Suppression in iOS Apps
Prerequisites
Supported Platforms
- iOS (16.0+)
Requirements
- Xcode
- Swift Package Manager or CocoaPods
Step 1: Install the Noise Suppression SDK
We'll install two libraries—Koala (noise suppression library) and ios-voice-processor (audio capture library).
Option A: Swift Package Manager (Recommended)
- Open your Xcode project
- Go to File → Add Package Dependencies
- Enter the repository URL:
https://github.com/Picovoice/koala.git - Click "Add Package"
Repeat the above steps for https://github.com/Picovoice/ios-voice-processor.git.
Option B: CocoaPods
Add to your Podfile:
Then run:
Step 2: Get Your SDK Access Key
- Sign up for a free account on Picovoice Console
- Copy your
AccessKeyfrom the dashboard
Your AccessKey is required for authentication and authorization. Store it securely and never commit to public repositories.
Step 3: Configure Microphone Permissions
Add the microphone usage description to your Info.plist:
This message appears when iOS requests microphone permission from the user.
Step 4: Initialize the Noise Suppression SDK
Import Koala and create an instance with your AccessKey:
Step 5: Set Up the Noise Suppression Pipeline
Using VoiceProcessor, create an audio callback that passes microphone input to the Koala SDK for noise suppression:
Latency: The processing delay is available via the koala.delaySample property.
For comprehensive implementation details including advanced audio pipeline configurations, see the iOS VoiceProcessor API Documentation.
Step 6: Start Real-Time Noise Suppression
Request microphone permission and start the noise suppression pipeline:
Critical Audio Format Requirements:
The SDK expects audio in a specific format:
- Bit Depth: 16-bit PCM
- Channels: Mono (single-channel)
- Sample Rate: Accessed via
Koala.sampleRate - Frame Length: Fixed size matching
Koala.frameLength
Step 7: Handle Audio Session Management
If an audio frame does not immediately follow the previous one—for example, when a new audio stream starts after the previous one ends—reset the Koala's internal state before beginning the new stream:
Step 8: Clean Up Noise Suppression Resources
Properly release resources when stopping noise suppression:
Stop audio capture and clear listeners:
Key Points to Remember
- Audio Format: Koala requires 16-bit, single-channel (mono) PCM
- Frame Size: Always use
Koala.frameLength - Sample Rate: Always use
Koala.sampleRate - Reset: Only call between separate audio streams, not during continuous audio
- Cleanup: Always call
delete()to free memory
For a complete example application, check out the Koala Noise Suppression iOS demo on GitHub.
SDK Dependencies
This tutorial uses the following packages:
- Koala-iOS - Noise suppression library
- ios-voice-processor - Audio capture library
Additional Resources
Comprehensive SDK documentation:
- Koala Noise Suppression Quick Start
- Koala Noise Suppression API Reference
- iOS Voice Processor Quick Start
- iOS Voice Processor API Reference
Troubleshooting Common SDK Integration Issues
SDK Initialization Failures
Problem: Koala fails to initialize with authentication errors.
Solutions:
- Verify your
AccessKeyis copied correctly from Picovoice Console (no extra spaces or characters) - Ensure device has internet connectivity for initial license verification
- Confirm Koala SDK is properly installed and imported into your project
- Verify your app's deployment target meets iOS 16.0 minimum requirement
Audio Processing Errors
Problem: Runtime errors when calling process().
Solutions:
- Verify audio frames are exactly
Koala.frameLengthsamples - Confirm sample rate is
Koala.sampleRate - Ensure audio format is 16-bit PCM, mono channel
Poor Noise Suppression Quality
Problem: Noise suppression isn't working as expected.
Solutions:
- Verify the microphone is working properly and capturing audio
- Check that you're not calling
reset()during continuous audio - Ensure audio frames are provided in the correct chronological order
- Confirm audio isn't being pre-processed by other filters that might interfere
- Test with different noise environments to verify functionality
Conclusion
The Koala Noise Suppression SDK provides developers with a production-ready noise cancellation library for iOS apps. With this implementation guide, you can integrate real-time noise suppression into your iOS app and deliver clear, professional audio experiences to your users.
Start BuildingFrequently Asked Questions
Yes, Koala is designed for real-time streaming audio processing. It processes audio frame-by-frame with minimal latency, making it perfect for live communication apps.
Yes, Koala processes all audio on-device. Internet is only required for licensing and usage tracking during initialization.
Koala requires 16-bit linearly-encoded PCM audio at 16 kHz sample rate, single-channel (mono). The exact frame size is available via "Koala.frameLength".
Yes, you can process pre-recorded audio by reading the file in chunks of "frameLength" samples and passing each chunk to "process()". Remember to call "reset()" before processing a new file.
The processing delay is available via the "delaySample" property. This represents the number of samples between input and output, which translates to milliseconds based on the sample rate.
Yes, you can specify the device parameter when initializing Koala. Set it to "best" for automatic selection, "gpu" for GPU processing, or "cpu" for CPU-only processing.







