Qwen3-TTS audio components for Core ML
Three Core ML packages for decoding audio tokens, encoding reference audio, and
extracting a speaker embedding from the Qwen3-TTS family.
These are audio components, not a complete text-to-speech model.
For: developers integrating the components into an Apple Silicon Mac application.
Not for: generating speech from text with this download alone; the language model and host pipeline are separate.
Platform: Apple Silicon (M1 and later), Core ML. This is a .mlpackage release, separate from Core AI .aimodel releases.
Quick start
hf download okayuji/Qwen3-TTS-12Hz-1.7B-CustomVoice-CoreML --local-dir ./qwen3-tts-coreml
Compile and load the packages with Apple's Core ML workflow, then use the exact interfaces below.
For the complete upstream TTS pipeline and language-model weights, start with
Qwen3-TTS on GitHub and
Qwen3-TTS-12Hz-1.7B-CustomVoice.
That upstream runtime does not automatically load these Core ML packages; integration code is required.
KeyVoice for Mac is the product entry point linked by the original card.
The model download here does not include KeyVoice's application pipeline.
Files and exact interfaces
These interfaces were read directly from the published model.mlmodel files at
revision 0dbcdf8
on 2026-10-23. The inspection did not execute inference.
| Package |
Input |
Output |
Package bytes |
Qwen3TTSDecoder.mlpackage |
audio_codes: Int32 [1, 500, 16] |
audio_values: Float32 [1, 960000] |
229,010,843 |
Qwen3TTSEncoder.mlpackage |
audio_samples: Float32 [1, 1, 345600] |
audio_codes: Int32 [1, 16, 180] |
193,305,798 |
Qwen3TTSSpeakerEncoder.mlpackage |
mels: Float32 [1, 1500, 128] |
speaker_embedding: Float32 [1, 2048] |
48,096,892 |
Package sizes are sums of their published manifest, model definition, and weight
file sizes in the Hugging Face file metadata. Download all files in each package.
The decoder produces waveform samples, not a mel spectrogram. At the original
24 kHz sample rate, its declared output is 40 seconds; the audio encoder's declared
input is 14.4 seconds. These durations are shape-derived values, not latency measurements.
The audio frame rate is 12.5 Hz (80 ms per frame; 1,920 samples at 24 kHz).
The codebook axis differs between the encoder output and decoder input. The host
must handle layout, valid lengths, and padding explicitly; passing encoder output
directly into the decoder does not satisfy the declared decoder shape.
Conversion and inspection
All three assets are ML Programs, specification version 8. Their embedded metadata
records coremltools 9.0 and torch==2.7.1 (TorchScript), with conversion dates
2026-04-19 (decoder), 2026-04-21 (encoder), and 2026-04-22 (speaker encoder).
The original deployment target was Apple Silicon with CPU and Neural Engine compute
allowed. A compute-unit preference alone does not prove execution on the Neural Engine.
To inspect the decoder interface without loading weights or running inference:
from coremltools.models.utils import load_spec
spec = load_spec("./qwen3-tts-coreml/Qwen3TTSDecoder.mlpackage/Data/com.apple.CoreML/model.mlmodel")
print(spec.description)
This model-definition inspection was performed on the published file. The former
Swift example compiled the package using MLModel.compileModel(at:), selected
.cpuAndNeuralEngine, and loaded it with MLModel(contentsOf:configuration:);
it did not include preprocessing or a complete generation loop.
Requirements and operational notes
- Use an Apple Silicon Mac and a Core ML runtime supporting the packages' specification version. A device/OS validation matrix is not published with this release.
- Retain each
.mlpackage directory structure. Compile to .mlmodelc before loading it in a native app, and retain the compiled result for reuse.
- Supply the separately distributed language model and a host implementation for text tokenization, generation, reference-audio preparation, speaker conditioning, and audio playback.
- Check input names, dtypes, and fixed shapes against
modelDescription; the original card's generic token/mel names do not match these assets.
- The original card reported about 30 seconds for the first package compilation. Hardware, OS, package, tool version, and cache state were not recorded, so this is a historical observation rather than a current startup-time guarantee.
Limitations
- These files do not form a standalone TTS, voice-cloning, or voice-design application. A speaker embedding component alone does not provide those features.
- All declared input shapes are fixed. Shorter and longer inputs require host-side handling. The original encoder guidance was to zero-pad short clips and truncate longer clips, but its 1.2-second cutoff described an older interface, not the distributed model.
- Core ML and PyTorch floating-point outputs need not match exactly. The original card reported small ANE differences and “no audible impact in practice”; it did not publish inputs, tolerances, listening-test conditions, or results to reproduce that observation.
- No iPhone/iPad execution results, complete public Core ML host example, reproducible generated-audio sample, or new performance/quality evaluation are provided by this revision.
- The upstream language list describes the Qwen3-TTS family. This documentation inspection does not validate language quality or end-to-end compatibility for every upstream model variant.
Verification and corrections
The 2026-10-23 revision checks artifact metadata and corrects stale interface
descriptions. It does not establish numerical parity, audio quality, execution-device
placement, or a complete text-to-speech run.
For traceability, the following statements from the
previous card
are superseded by the published model definitions above:
| Previous description |
Correction |
Decoder: audio_tokens [1, 16, T_frames] → mel [1, 80, T_mel] |
Fixed audio_codes [1, 500, 16] → waveform audio_values [1, 960000] |
Encoder: audio [1, 1, 28800], 1.2 seconds / 15 frames → audio_tokens [1, 16, 15] |
audio_samples [1, 1, 345600], 14.4 seconds / 180 frames → audio_codes [1, 16, 180] |
Speaker: mel [1, 80, T] → embedding [1, D], described as “Voice Design” |
mels [1, 1500, 128] → speaker_embedding [1, 2048]; reference-audio embedding component |
Conversion with coremltools 8.x |
Embedded metadata records 9.0 |
| Package sizes: 218 MB / 182 MB / 46 MB |
Historical rounded estimates; exact byte counts are listed above |
Related samples
For Core AI and Foundation Models examples on Apple platforms, see
coreai-samples. Those examples use their
own model assets; this Core ML component release follows the integration requirements
above.
License and attribution
Released under Apache License 2.0, consistent with the
original Qwen3-TTS model
and official Qwen3-TTS license.
Original model copyright: Copyright 2026 Alibaba Cloud.
The Core ML conversion and distribution are by okayuji.
Thanks to the Qwen team for the models and
Apple's coremltools project for the conversion tooling.
Qwen, Apple, Core ML, and other product names belong to their respective owners.
This distribution is not affiliated with or endorsed by the Qwen team or Apple.
Citation
@misc{qwen3-tts-12hz-1.7b-customvoice-coreml,
author = {okayuji},
title = {Qwen3-TTS 12Hz 1.7B CustomVoice — CoreML conversion},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/okayuji/Qwen3-TTS-12Hz-1.7B-CustomVoice-CoreML}}
}
@misc{qwen3-tts,
title = {Qwen3-TTS Technical Report},
author = {Qwen Team},
year = {2026},
eprint = {2601.15621},
archivePrefix = {arXiv},
howpublished = {\url{https://huggingface.co/Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice}}
}