Licenses and model terms
The Python distribution combines MIT and Apache-2.0 source. Model weights, native libraries and other container dependencies retain their own terms. Read LICENSE, NOTICE and Third-Party Notices for the original grants and attribution. The complete Docker image is not covered by one MIT grant.
Decisions for the official Qwen models
| Question | Finding | Conditions |
|---|---|---|
| May the weights be baked into Docker images? | Yes, under the reviewed Apache-2.0 grants | Retain the license, provenance and supplied notices; identify modifications/conversions; review the image’s independent runtime components |
| May the software/model be used commercially? | Yes, under the reviewed MIT and Apache-2.0 grants | Preserve each component’s terms; no claim that the entire runtime is MIT |
| May generated speech be used commercially? | No separate noncommercial, output royalty, or mandatory output-attribution restriction was found in the reviewed Qwen licenses | Input text, reference recordings, speaker consent, publicity/privacy rights, third-party expression and applicable law remain independent; the license does not guarantee output ownership or uniqueness |
| May paid hosted inference be offered? | Yes at the reviewed code/model-license level | No model-license ban on charging for inference was found; service launch still needs actual runtime, customer-data, voice-provenance, and operational review |
These are license-scope findings, not a warranty that every possible output or business use is lawful. No permission for celebrity imitation or unauthorized cloning follows from an open model license. Software copyright, model weights, voice recordings, and generated recordings are separate objects of review.
The finding applies to these exact official repositories, including their embedded Qwen speech-tokenizer assets:
| Repository | Reviewed revision | Declared license |
|---|---|---|
Qwen/Qwen3-TTS-12Hz-0.6B-Base |
5d83992436eae1d760afd27aff78a71d676296fc |
Apache-2.0 |
Qwen/Qwen3-TTS-12Hz-1.7B-Base |
fd4b254389122332181a7c3db7f27e918eec64e3 |
Apache-2.0 |
Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice |
85e237c12c027371202489a0ec509ded67b5e4b5 |
Apache-2.0 |
Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice |
0c0e3051f131929182e2c023b9537f8b1c68adfe |
Apache-2.0 |
Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign |
5ecdb67327fd37bb2e042aab12ff7391903235d3 |
Apache-2.0 |
Qwen/Qwen3-TTS-Tokenizer-12Hz |
7dd38ad4e9bad454aae9cd937d0cd577604fe229 |
Apache-2.0 |
Model cards at the linked immutable revisions define the scope of these findings. The Studio pins its five TTS checkpoints to the listed revisions; the standalone tokenizer entry records the codec publisher’s declaration.
Apache-2.0 grants reproduction, derivation and distribution rights in sections 2 and 3, with redistribution conditions in section 4 and trademark limits in section 6. No research-only, noncommercial, revenue-threshold, or output-royalty clause was found in the reviewed official cards. This finding does not extend to arbitrary Qwen-family models, fine-tunes, conversions, or future revisions.
Source and runtime licenses
The accelerated wrapper retains its MIT license. Local Qwen inference,
compatibility and adapted streaming source retain Apache-2.0 obligations.
The package expression MIT AND Apache-2.0 describes combined source,
not a choice between those licenses. Incorporated revisions are recorded in
upstream provenance; source headers and notices are preserved.
Runtime dependencies include independently licensed Python and native code. For example, Python-SoXR/libsoxr carries LGPL-2.1-or-later terms; certifi, tqdm and portions carried by orjson include MPL-covered material. NVIDIA CUDA libraries retain their own redistribution terms. Refer to the component notices and inventory shipped with the exact image rather than applying the project license to all its dependencies.
Container release requirements
Container builds retain project notices, installed Python/Debian notices
and a component inventory under /app/licenses/runtime. Full images also
retain upstream model cards and record hashes for their pinned assets.
Inventory collection alone is not a legal approval of the combined image.
Redistribution must preserve applicable licenses, copyright and change notices, and any required corresponding source, build materials or replacement/relinking rights. Requirements depend on the actual components, build/linking choices and modifications. An external FFmpeg process does not automatically relicense independent application source or generated audio; an MIT root license also does not remove GPL/LGPL distribution obligations.
Python runtime distributions are version- and hash-locked in
requirements.runtime.txt, and the Python base image is pinned by digest.
Debian apt inputs remain moving dependencies. Review the exact
distributed payload and its original terms. See
container builds and Third-Party Notices.
Obtaining corresponding source
The publishing workflow creates a matching source image before application
images. Its application images include an app.hangrylabs.sources label
pointing to that source image in the same public registry repository.
The source reference includes the Git commit and workflow run/attempt: rebuilding
the same commit with different Debian inputs creates a different source reference.
Stable releases also publish vX.Y_sources (or vX.Y.Z_sources); moving builds
publish latest_sources. Use the exact reference from your application image,
since a moving source tag may describe a newer build.
After pulling the application image, inspect it and read app.hangrylabs.sources
under Config.Labels:
docker image inspect hangrylabs/faster-qwen3-tts-studio:latest
Substitute that source reference for SOURCE_IMAGE below. The source image is
a file archive, not an application to start; creating a stopped container lets
Docker copy its contents without running anything:
docker create --name qwen3-sources SOURCE_IMAGE /unused
docker cp qwen3-sources:/sources ./qwen3-sources
docker rm qwen3-sources
Docker Hub and GHCR carry the same source index. The equivalent GHCR reference
uses ghcr.io/hangry-labs/faster-qwen3-tts-studio with the same source tag.
Source images must remain available while distributing their matching binaries;
temporary CI evidence artifacts are not the source-delivery mechanism.
The archive includes:
- Exact Debian source packages, including descriptors, upstream archives, distribution patches and build scripts, for every installed Debian package.
- Reviewed wheel-bundled GCC runtime sources with their distribution patches and specifications; SoundFile’s libsndfile and static codec sources/build recipe; the Python-SoXR archive containing its patched libsoxr; certifi and tqdm sources.
- Installed notices, native-file identities, build inputs,
manifest.jsonandSHA256SUMS. Source files are verified against signed apt indexes or reviewed SHA-256 pins. No downloaded source is executed during collection.
Collectors fail when an exact Debian source is unavailable or a reviewed wheel
version/bundled binary changes. Update the review and source inputs rather than
substituting a newer upstream release. Local builds can produce the same archive
with task sources; local images labelled local-build do not claim a published
source reference. From the repository, verify the collected source-file hashes:
python scripts/collect_runtime_sources.py --verify --output qwen3-sources
Replacement and rebuilding
GPL/LGPL/MPL-covered components retain their original rights. No project term prohibits modifying them or debugging modifications to the LGPL components. The application uses FFmpeg as a separate executable and replaceable native libraries through ordinary dynamic loading. A derived image can replace an interface-compatible library or executable; no application signature check locks these components to the original bytes.
SoundFile’s LGPL libsndfile is a separate shared library in _soundfile_data;
its archive includes the statically incorporated codec sources and build recipe.
The Python-SoXR extension includes LGPL libsoxr statically. Its complete wrapper,
patched library, headers and CMake/build configuration are included so users can
rebuild and replace the extension together. The GCC runtime exception covers
eligible application linking; it does not remove the bundled runtime libraries’
own source/notice requirements. Component build instructions and original license
texts in the archive take precedence over this summary.
NVIDIA and Intel binary components retain their separate redistribution terms. These proprietary terms are not applied to the independent GPL/LGPL/MPL source. In particular, Torch includes Intel oneMKL 2024.2.0 under the Intel Simplified Software License. The source archive is not a promise of a bit-for-bit rebuild of every proprietary component, and collection success does not automatically approve a future image.
Reference audio and generated speech
No inherited reference recordings or local ASR model are distributed. The Studio starts with an empty saved-voice library. Optional transcription sends audio only to the configured independent service when requested.
Only use text and recordings you may process, and obtain the necessary speaker consent. Keep provenance and permissions for saved voices and published samples. An open model license does not grant rights to another person’s identity or copyrighted input.
Notice checks
python scripts/check_licensing.py
python -m unittest discover -s tests -p test_licensing.py -v
python scripts/check_licensing.py --artifact dist/package.whl --artifact dist/package.tar.gz
Use Python 3.13 and substitute the actual artifact names. These checks verify notice preservation and package contents; they do not certify an independently assembled image or infer usage rights from an SPDX identifier alone.