FluidAudio
Enrichment pendingFrontier CoreML audio models in your apps — text-to-speech, speech-to-text, voice activity detection, and speaker diarization. In Swift, powered by SOTA open source.
GraphCanon updated today · GitHub synced today
Trust & integrity
Full report- Maintenance
- Very active (0d since push)
- As of today · Source: github_public_v1
- Provenance
- Not a fork · Organization account
- As of today · Source: github_public_v1
- Security (OSV)
- No lockfile
- As of today · Source: none
Public GitHub metadata and optional OSV dependency scans. Signals, not a guarantee. Trust methodology.
Overview
Frontier CoreML audio models in your apps — text-to-speech, speech-to-text, voice activity detection, and speaker diarization. In Swift, powered by SOTA open source.
Capability facts
- Languages
- swift
Source: github.language · Jul 11, 2026
Categories
Tags
README
Installation
Add FluidAudio to your project using Swift Package Manager:
dependencies: [
.package(url: "https://github.com/FluidInference/FluidAudio.git", from: "0.12.4"),
],
In Xcode:
- Add the FluidAudio package to your project
- In the "Add Package" dialog, select
FluidAudio - Add it to your app target
In Package.swift:
.product(name: "FluidAudio", package: "FluidAudio")
CocoaPods: We recommend using cocoapods-spm for better SPM integration, but if needed, you can also use our podspec: pod 'FluidAudio', '~> 0.12.4'
ASR Quick Start
import FluidAudio
// Batch transcription from an audio file
Task {
// 1) Initialize ASR manager and load models
let models = try await AsrModels.downloadAndLoad(version: .v3) // Switch to .v2 for English-only work
let asrManager = AsrManager(config: .default)
try await asrManager.loadModels(models)
// 3) Transcribe the audio 16hz, already converted
let result = try await asrManager.transcribe(samples)
// 3) Transcribe a file
// let url = URL(fileURLWithPath: sample.audioPath)
// 3) Transcribe AVAudioPCMBuffer
// let result = try await asrManager.transcribe(audioBuffer)
print("Transcription: \(result.text)")
}
---
### VAD Quick Start (Offline Segmentation)
Simple call to return chunk-level probabilities every 256 ms hop:
```swift
let results = try await manager.process(samples)
for (index, chunk) in results.enumerated() {
print(
String(
format: "Chunk %02d: prob=%.3f, inference=%.4fs",
index,
chunk.probability,
chunk.processingTime
)
)
}
The following are higher level APIs better suited to integrate with other systems
import FluidAudio
Task {
let manager = try await VadManager(
config: VadConfig(defaultThreshold: 0.75)
)
let audioURL = URL(fileURLWithPath: "path/to/audio.wav")
let samples = try AudioConverter().resampleAudioFile(audioURL)
var segmentation = VadSegmentationConfig.default
segmentation.minSpeechDuration = 0.25
segmentation.minSilenceDuration = 0.4
let segments = try await manager.segmentSpeech(samples, config: segmentation)
for segment in segments {
print(
String(format: "Speech %.2f–%.2fs", segment.startTime, segment.endTime)
)
}
}
License
Apache 2.0 — see LICENSE for details.