|
Download README.md from FluidInference/lfm3-audio-2b-coreai: direct link, hf CLI and curl.
- Browser
- Download file 5.06 kB
-
https://huggingface.co/FluidInference/lfm3-audio-2b-coreai/resolve/main/README.md
- Command line
-
hf download hf://FluidInference/lfm3-audio-2b-coreai/README.md
-
curl -L -o README.md https://huggingface.co/FluidInference/lfm3-audio-2b-coreai/resolve/main/README.md
5.06 kB
| license: other | |
| license_name: lfm1.0 | |
| license_link: LICENSE | |
| base_model: LiquidAI/LFM3-Audio-2B | |
| library_name: fluidaudio | |
| pipeline_tag: automatic-speech-recognition | |
| tags: | |
| - coreai | |
| - apple-silicon | |
| - asr | |
| - tts | |
| - text-to-speech | |
| - on-device | |
| # LFM3-Audio-2B language model for Core AI | |
| The language model of [LiquidAI/LFM3-Audio-2B](https://huggingface.co/LiquidAI/LFM3-Audio-2B) as a Core AI bundle | |
| (`.aimodel`, macOS 27 / iOS 27) for [FluidAudio](https://github.com/FluidInference/FluidAudio)'s | |
| `LFM3AudioManager` with `backend: .coreAI`, plus the TTS depth decoder. The audio encoder and the codec come from | |
| [FluidInference/lfm3-audio-2b-coreml](https://huggingface.co/FluidInference/lfm3-audio-2b-coreml) and stay on Core ML | |
| (the codec and the LiveASR encoder run on the Neural Engine there; Core AI has no Neural Engine path on macOS 27.0). | |
| This is a modified version of the original model: the backbone was exported to Core AI and quantized (see below). | |
| ## Files | |
| | File | What | | |
| |---|---| | |
| | `coreai/LFM3-Audio-u8b32-f16L20-23.aimodel` | LFM3 backbone (2048 x 24) taking `inputs_embeds`; entrypoints `prefill` (state update), `main` (logits of the last row), `hidden` (final-norm hidden of the last row, for speech frames); states `keyCache` / `valueCache` / `convStates`. 2.16 GB | | |
| | `coreai/DepthDecoder-fp16-gpu.aimodel` | MaskGIT depth decoder, fp16. FluidAudio runs `depth_frame`: 3 passes + presence penalty, temperature, top-k 128 and Gumbel-max in one call per speech frame (inputs `h`, `sched` [3, 12], `noise` / `present` [12, 2017], `params`; output `codes` [12]). Also has `depth_in`, `depth_pass`, `depth_frame_f32s`. 208 MB | | |
| Quantization: asymmetric uint8 weights with block size 32, decoder layers 20-23 kept in fp16. Plain int8 (per | |
| channel or per block) is fine for ASR but flips too many speech codes in TTS; the last layers carry most of that error. | |
| ## Use (Swift) | |
| ```swift | |
| import FluidAudio | |
| let manager = try await LFM3AudioManager.downloadAndLoad(backend: .coreAI) // macOS 27 / iOS 27 | |
| let text = try await manager.transcribe(samples).text | |
| let speech = try await manager.synthesize("Hello from Core AI.") | |
| ``` | |
| FluidAudio loads one `AIModel` per entrypoint, all bound to the same host-owned states: with a single shared | |
| `AIModel`, macOS 27.0 aborts in `GPUMemrefOps` ("Failed to resolve dynamic dimensions for memref.alloc") when one | |
| function runs twice at consecutive positions with the same row count and another function is then called with the | |
| next shape (the first `main` after speech frames in TTS). The first load specializes the graph for the GPU and | |
| caches it (~3.3 GB under `~/Library/Caches/coreai-cache`); the system purges the entry under storage pressure or when | |
| the bundle changes, and `LFM3AudioModels.clearCoreAICache()` deletes it. | |
| ## Parity (vs the original fp32 model) | |
| | Check | Result | | |
| |---|---| | |
| | ASR, 20 golden LibriSpeech clips (greedy) | 18/20 token-identical (2 differ by a comma), WER 1.46% = original | | |
| | TTS, 319 teacher-forced speech frames | LM hidden cosine min 0.99988 / mean 0.999985; codes 98.35% identical (fp32 reference depth decoder) | | |
| | Depth decoder `depth_frame`, 319 golden frames (injected order and noise) | codes 99.40% identical; 3.24 ms per frame on the GPU | | |
| ## Speed and accuracy | |
| Apple M5 Pro (24 GB), macOS 27.0, FluidAudio release build; wall time includes warm-up after load. | |
| | Task | Data | Result | | |
| |---|---|---| | |
| | Offline ASR | LibriSpeech test-clean, first 100 utterances (901 s) | WER 1.32%, RTFx 24.6 (Core ML LM: 18.4); 98/100 transcripts identical to the original model | | |
| | LiveASR (160 ms pieces) | LibriSpeech test-clean, first 20 utterances | WER 1.46%, RTFx 13.3 (Core ML LM: 10.4) | | |
| | TTS (Core AI depth decoder) | 20 phrases (71 s of speech) | RTFx 5.07, first audio 37 ms (median), Parakeet round-trip WER 2.5% (Core ML backend: RTFx 4.3-4.5) | | |
| ASR peak memory footprint: 1.9 GB. | |
| ## License | |
| [LFM Open License v1.0](LICENSE) (Liquid AI). Commercial use by organizations with annual revenue of USD 10 million or | |
| more requires a separate license from Liquid AI; see the license for the full terms. | |
| ## Changelog | |
| | Date | Files | Change | Issue | FluidAudio PR | HF commit | | |
| |---|---|---|---|---|---| | |
| | 2026-10-29 | `coreai/LFM3-Audio-u8b32-f16L20-23.aimodel` | Initial release: Core AI LM bundle (uint8 b32, layers 20-23 fp16) | [FluidAudio #49](https://github.com/FluidInference/FluidAudio/issues/49#issuecomment-6501658263) | [#1076](https://github.com/FluidInference/FluidAudio/pull/1076) | [e89ebdab](https://huggingface.co/FluidInference/lfm3-audio-2b-coreai/commit/e89ebdabaf2bd52044d753e8c87f9579d5520b72) | | |
| | 2026-10-29 | `coreai/DepthDecoder-fp16-gpu.aimodel` | Added the Core AI depth decoder (fused `depth_frame`, TTS RTFx 4.28 -> 5.07) | [FluidAudio #49](https://github.com/FluidInference/FluidAudio/issues/49#issuecomment-6501658263) | [#1076](https://github.com/FluidInference/FluidAudio/pull/1076) | [6dc374f3](https://huggingface.co/FluidInference/lfm3-audio-2b-coreai/commit/6dc374f303e5f04cc6bbc4bd044cdd800b065818) | | |