Skip to main content
Code samples

NCKitFileProcessor

Offline file denoise. Input: decodable audio/video file. Output: 16-bit PCM WAV at 48 kHz mono.

APIโ€‹

public enum NCKitFileProcessor {
public static let targetSampleRate: Double // 48_000

public static func processFile(
inputURL: URL,
outputURL: URL,
processor: NCKitProcessor
) throws
}

Usageโ€‹

import NCKit

let modelURL = try NCKitModelLocator.modelTarGzURL()
let processor = try NCKitProcessor(modelURL: modelURL)

try NCKitFileProcessor.processFile(
inputURL: noisyFileURL,
outputURL: cleanFileURL,
processor: processor
)

Batch (reuse processor)โ€‹

let modelURL = try NCKitModelLocator.modelTarGzURL()
let processor = try NCKitProcessor(modelURL: modelURL)

for (input, output) in jobs {
try NCKitFileProcessor.processFile(
inputURL: input,
outputURL: output,
processor: processor
)
}

Background threadโ€‹

try await Task.detached(priority: .userInitiated) {
try NCKitFileProcessor.processFile(
inputURL: inputURL,
outputURL: outputURL,
processor: processor
)
}.value
Main thread

processFile is blocking. Never call it on the Android main thread.

Throwsโ€‹

ErrorWhen
cannotOpenInput / CannotOpenInputSource file cannot be read
cannotCreateOutput / CannotCreateOutputOutput path cannot be written
unsupportedFormat / UnsupportedFormatNo decodable audio
resampleFailed / ResampleFailedResample to 48 kHz failed