跳到正文

Audio8-AI

Audio8_TTS

SOTA-Class TTS at Compact Scale

README 已保存到本站,可直接阅读

Documentation snapshot

README 快照

本页保存的是公开项目资料快照,阅读过程不需要连接 GitHub。

Audio8_TTS Preview

A 0.6B-parameter multilingual text-to-speech model with zero-shot voice cloning.

图片:GitHub 图片:Demo 图片:Hugging Face 图片:ONNX INT4 图片:License

中文文档: README_zh.md

This repository provides the audio8_tts Preview checkpoint, Hugging Face remote code, inference tools, and an independent SFT pipeline for multilingual speech generation and zero-shot voice cloning.

Preview status: language coverage is intentionally limited in this release. Use the model primarily with the 11 recommended languages below. Multilingual coverage and Chinese dialect support will be expanded in later releases.

Supported Languages

The Preview checkpoint performs best in the following languages:

LanguageName
Cantonese粤语
Chinese中文
Dutch荷兰语
English英语
French法语
German德语
Italian意大利语
Japanese日语
Korean韩语
Polish波兰语
Spanish西班牙语

Architecture

audio8_tts uses a DualAR architecture inspired by Fish Audio S2 Pro.

ComponentConfiguration
Main model601,159,424 parameters, excluding the codec
Slow AR24 layers, width 896, 14 attention heads, 2 KV heads
Fast AR4 layers, width 896, 14 attention heads, 2 KV heads
Acoustic tokens10 codebooks, 4,096 entries per codebook
Codec44.1 kHz, 2,048 samples per model frame (~21.5 frames/s)
ContextUp to 2,048 packed text/audio positions

The slow AR transformer predicts one semantic token for each audio frame. The fast AR transformer then predicts the frame’s codec codebooks, conditioned on the slow hidden state and preceding codebooks. Static KV caches are used by both branches during generation. The checkpoint also bundles its neural codec, so reference encoding and waveform decoding require no separate model.

Installation

Python 3.10 or newer and a CUDA-capable GPU are recommended.

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Download the checkpoint from Hugging Face and place it in the repository’s model/ directory. The expected local checkpoint path is model/audio8_tts_0_6B_preview/. All commands also accept a Hugging Face model ID through --model.

Inference

Zero-shot voice cloning

The reference transcript should match the spoken content in the reference audio.

python audio8_tts_infer.py \
  --text "Welcome to audio8_tts." \
  --reference-audio examples/reference.wav \
  --reference-text "Transcript of the reference recording." \
  --output outputs/clone.wav

Generation without a reference

python audio8_tts_infer.py \
  --text "This utterance does not use a reference voice." \
  --output outputs/no_reference.wav

Batch inference

Each line in the input manifest is an independent JSON object. Relative audio paths are resolved from the manifest directory.

{"id":"sample_001","text":"Target text","reference_audio":"audio/ref.wav","reference_text":"Reference transcript"}
{"id":"sample_002","text":"Text without a reference voice"}
python audio8_tts_infer.py \
  --input-jsonl data/prompts.jsonl \
  --output-dir outputs/batch \
  --batch-size 2

The batch command writes manifest.jsonl and failures.jsonl. Existing WAV files are skipped unless --overwrite is passed. See python audio8_tts_infer.py --help for sampling and code-saving options.

CPU ONNX Runtime

onnx_runtime/ provides a standalone CPU deployment using weight-only INT4 Slow/Fast AR models, FP16 activations and KV caches, and an FP16 codec. It includes CLI inference, a local web and HTTP service, streaming PCM output, and reference-voice registration without PyTorch or Transformers.

The online sessions use about 1 GiB of memory in the tested Apple M2 setup. During voice registration, the online sessions are released before the codec encoder is loaded to keep peak memory low.

Download the ONNX model from Audio8-TTS-Preview-0.6B-ONNX-INT4 and follow the ONNX Runtime guide.

SGLang Omni Serving

The adapter in sglang_omni/ provides an OpenAI-compatible service with SGLang paged attention, dynamic batching, a fixed KV cache for the fast codebook decoder, reference-audio encoding, and waveform decoding. It is installed as an independent audio8_tts model plugin and does not overwrite SGLang Omni core files.

Compatibility

The adapter uses internal SGLang Omni interfaces, so deploy it with the tested revision instead of the latest main branch.

DependencyTested version
SGLang Omni68a572348837f7b004857b4b07993c20ade4c017 (0.1.0)
SGLang0.5.8
PyTorch2.9.1+cu128
Transformers4.57.1
PrecisionBF16

Install

Run these commands from the Audio8 TTS repository root. The example uses Python 3.12 and uv.

export SGLANG_OMNI_ROOT=/opt/sglang-omni
export MODEL=/models/Audio8-TTS-Preview-0.6b

git clone https://github.com/sgl-project/sglang-omni.git "${SGLANG_OMNI_ROOT}"
git -C "${SGLANG_OMNI_ROOT}" checkout 68a572348837f7b004857b4b07993c20ade4c017

uv venv .venv-sglang --python 3.12
source .venv-sglang/bin/activate
uv pip install -v -e "${SGLANG_OMNI_ROOT}"

hf download AutoArk-AI/Audio8-TTS-Preview-0.6b --local-dir "${MODEL}"
./sglang_omni/scripts/install_adapter.sh "${SGLANG_OMNI_ROOT}"
python3 ./sglang_omni/scripts/verify_install.py --model-path "${MODEL}"

For an existing wheel or site-packages installation, resolve the package directory and install the adapter there:

SGLANG_OMNI_PACKAGE="$(python3 -c 'import importlib.util, pathlib; s=importlib.util.find_spec("sglang_omni"); assert s and s.origin; print(pathlib.Path(s.origin).parent)')"
./sglang_omni/scripts/install_adapter.sh "${SGLANG_OMNI_PACKAGE}"

Start the service

CUDA_VISIBLE_DEVICES=0 \
SGLANG_OMNI_ROOT="${SGLANG_OMNI_ROOT}" \
MODEL="${MODEL}" \
HOST=0.0.0.0 \
PORT=8010 \
./sglang_omni/scripts/run_server.sh

The defaults use model name audio8/tts-0.6b, BF16, one GPU, a 0.2 static memory fraction, and up to 32 running requests. The main runtime controls are MODEL_NAME, AUDIO8_TTS_MEM_FRACTION_STATIC, AUDIO8_TTS_MAX_RUNNING_REQUESTS, AUDIO8_TTS_CHUNKED_PREFILL_SIZE, and AUDIO8_TTS_DISABLE_CUDA_GRAPH. Set SGLANG_OMNI_SITE_PACKAGES when the runtime dependencies are installed in a separate site-packages directory.

Call the API

Generate speech without a reference:

curl -sS --fail-with-body \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "audio8/tts-0.6b",
    "input": "Hello from Audio8 TTS.",
    "response_format": "wav",
    "max_new_tokens": 256,
    "temperature": 0.8,
    "top_p": 0.95,
    "top_k": 50
  }' \
  http://127.0.0.1:8010/v1/audio/speech \
  -o audio8.wav

Generate speech with one reference voice:

curl -sS --fail-with-body \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "audio8/tts-0.6b",
    "input": "This sentence uses the reference voice.",
    "response_format": "wav",
    "temperature": 0.8,
    "top_p": 0.95,
    "top_k": 50,
    "references": [{
      "audio_path": "/data/reference.wav",
      "text": "The exact transcript of the reference recording."
    }]
  }' \
  http://127.0.0.1:8010/v1/audio/speech \
  -o audio8_clone.wav

The reference path must be visible inside the service environment. The current adapter supports TP=1, one reference per request, and non-streaming WAV output. Run the smoke test to verify a deployment:

BASE_URL=http://127.0.0.1:8010 ./sglang_omni/scripts/smoke_test.sh

To build the adapter into an existing image, append sglang_omni/Dockerfile.snippet after the SGLang Omni package and its Python dependencies are installed.

Supervised Fine-tuning

Install the training dependencies first:

pip install -r requirements-train.txt

1. Create a raw manifest

The target audio field is required. reference_audio and reference_text are optional, but must be provided together.

{"id":"utt_001","text":"Target transcript","audio":"audio/target.wav","reference_audio":"audio/reference.wav","reference_text":"Reference transcript"}
{"id":"utt_002","text":"Another transcript","audio":"audio/another.wav"}

2. Precompute codec indices

python audio8_tts_prepare.py \
  --input-jsonl data/train.jsonl \
  --output-jsonl prepared_data/train.jsonl \
  --batch-size 4

The prepared manifest points to validated [10, T] NumPy arrays using paths relative to the prepared manifest. Existing valid arrays are reused unless --overwrite is passed.

3. Train

Single GPU:

TRAIN_JSONL=prepared_data/train.jsonl \
NPROC_PER_NODE=1 \
bash audio8_tts_sft.sh

Eight GPUs on one node:

TRAIN_JSONL=prepared_data/train.jsonl \
NPROC_PER_NODE=8 \
BATCH_SIZE=2 \
GRADIENT_ACCUMULATION_STEPS=8 \
bash audio8_tts_sft.sh

For multi-node training, set NNODES, NODE_RANK, MASTER_ADDR, and MASTER_PORT on each node. Common hyperparameters and output paths can be overridden through the environment variables in audio8_tts_sft.sh; additional Transformers arguments may be appended to the command.

SFT optimizes both the slow semantic/EOS objective and the fast codebook teacher-forcing objective. Set FREEZE_SLOW_AR=true or FREEZE_FAST_AR=true when adapting only one branch. The exported directory remains loadable with standard AutoModel and AutoProcessor APIs using trust_remote_code=True.

Evaluation

Audio8 TTS Preview is the smallest model in this comparison at just 0.6B parameters. Despite using only a fraction of the parameters of the other systems, it delivers results in the first tier of industry-leading SOTA TTS models on the benchmarks below. In particular, it achieves the best English WER and competitive Chinese CER on Seed-TTS, while remaining competitive across the CV3 multilingual evaluation.

Lower WER/CER is better; higher SIM is better. Seed-TTS similarity values are shown as percentages.

Seed-TTS

ModelParametersEN WER / SIMZH CER / SIMHard ZH CER / SIM
Audio8 TTS Preview0.6B1.506 / 63.20.950 / 73.111.510 / 68.7
Fish S2 Pro4.6B1.607 / 64.61.038 / 73.810.149 / 70.1
Higgs Audio v24.7B1.524 / 66.40.806 / 72.110.622 / 69.3
CosyVoice3-1.5B1.5B2.22 / 72.01.12 / 78.15.83 / 75.8
MOSS-TTS8.5B1.85 / 73.41.20 / 78.8-
VoxCPM22.3B1.84 / 75.30.97 / 79.58.13 / 75.3

图片:Seed-TTS WER and CER comparison

CV3 multilingual error rate

ModelParameterszhenhard-zhhard-enjakodeesfritru
Audio8 TTS Preview0.6B3.2053.12810.5355.9977.2054.2233.4473.6418.7904.790-
Fish S2 Pro4.6B3.6003.49310.5887.3495.1394.1113.6052.9728.6004.2294.702
Higgs Audio v24.7B3.3783.40410.4245.7544.7424.2603.3002.9299.4253.5555.423
CosyVoice3-1.5B1.5B3.914.999.7710.557.575.696.434.4711.810.56.64
VoxCPM22.3B3.655.008.558.485.965.694.773.809.854.255.21

图片:CV3 multilingual WER and CER comparison

Parameter counts are calculated directly from the released weight tensors. MOSS-TTS contains 8,489,841,664 parameters. VoxCPM2’s main model contains 2,290,004,544 parameters; the separate AudioVAE is not included in the parameter comparison.

Fish S2 Pro was reevaluated because its official evaluation uses its own normalizer. Higgs Audio v2 was evaluated locally because concrete values were unavailable. All other baseline values were collected from their official reports through the VoxCPM repository.

Different normalizers and evaluators make cross-project values reference comparisons rather than a strictly matched ranking. Evaluation coverage does not expand the Preview’s supported-language claim beyond the 11 languages listed above.

Limitations and Responsible Use

  • This is a Preview checkpoint with limited multilingual and dialect coverage.
  • Very long, noisy, or inaccurate reference clips can reduce stability and speaker similarity.
  • Generated speech can be misused for impersonation or misinformation. Obtain consent before cloning a voice and clearly disclose synthetic audio where appropriate.
  • Test the model for accuracy, safety, and legal compliance before deployment.

License and Acknowledgements

Code and model weights in this repository are released under the Apache License 2.0. See NOTICE for attribution details.

We thank the Fish Audio team for publishing the DualAR architecture used in Fish S2 Pro.

Star History

Official distribution

获取与安装

暂未发现可确认的官方软件包地址

当前 README 快照没有出现 npm、PyPI、Crates.io、pub.dev 等官方包页链接。本站不会根据仓库名称猜测下载地址。

本站不托管项目文件;需要安装时,请以项目维护者发布的官方文档为准。

使用前核验

本站保存公开资料用于阅读,不代表安全审计或功能背书。安装前请核对许可证、依赖来源和发布签名,不要直接运行来源不明的二进制文件或高权限脚本。