Home/Speech & Audio/FluidAudio
FluidAudio logo

FluidAudio

FluidInference/FluidAudio

CoreML audio models for text-to-speech, speech-to-text, voice activity detection and speaker diarization in Swift.

GraphCanon updated 3w · GitHub synced 3w · 34 views this month

2.6k stars360 forksLast push 3w Swift Apache-2.0

Decision brief

FluidAudio provides CoreML-based models for tasks like text-to-speech, speech-to-text, voice activity detection, and speaker diarization in Swift, focused on iOS and macOS.

Good fit when

  • You need accurate speech-to-text transcription with support for real-time processing in a Swift environment
  • Your application is specifically designed for distribution on iOS or macOS platforms

Avoid when

  • If your project requires cross-platform compatibility beyond Apple's ecosystem
  • For projects that do not require CoreML-based optimizations and can run on more universally adopted frameworks across multiple operating systems

Observed Jul 17, 2026 · Source: enrich:decision_facts

Verify the decision

Maintenance and security

Full trust report
Maintenance
Very active (4d since push)
As of 3w
Provenance
Not a fork · Organization account
As of 3w
Security (OSV)
No lockfile
As of 1mo

Public GitHub metadata and optional OSV scans. Signals, not a guarantee. Trust methodology.

Install

git clone https://github.com/FluidInference/FluidAudio

Similar tools

Same-category neighbours. No typed graph edges are catalogued for this tool yet.

Evidence and technical details

Sourced facts, taxonomy, compatibility claims, README excerpt, and machine-readable endpoints.

Overview

FluidInference/FluidAudio provides CoreML-based models for handling various tasks related to automatic speech recognition, including real-time processing capabilities. It supports features such as text-to-speech conversion, speech-to-text transcription, voice activity detection, and speaker diarization on iOS and macOS platforms.

Capability facts

Languages
swift

Source: github.language · Jul 30, 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:

  1. Add the FluidAudio package to your project
  2. In the "Add Package" dialog, select FluidAudio
  3. 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.

For agents

This page has a .md twin and JSON over the API.

Was this helpful?

Anonymous feedback helps us improve pages and translations.