# Omnivoice Tts

> Generate local text-to-speech audio with Jay's installed OmniVoice CLI. Use when Codex needs to create Chinese or multilingual speech, voiceover WAV files, short narration clips, test TTS output, or stable voice-cloned audio from a reference recording using `/Users/maxazure/jayhome/projects/OmniVoice`.

- Skill: `maxazure/omnivoice-tts` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add maxazure/omnivoice-tts`
- Raw SKILL.md: https://api.skillmd.com/api/skills/maxazure/omnivoice-tts/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: maxazure (https://skillmd.com/u/maxazure)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/maxazure/omnivoice-tts

---


# OmniVoice TTS

Use Jay's local OmniVoice install to generate WAV speech from text. The installed project is:

`/Users/maxazure/jayhome/projects/OmniVoice`

The preferred wrapper is:

`scripts/omnivoice_tts.py`

## Quick Start

Generate a Chinese WAV with the default male Mandarin-style voice:

```bash
python3 /Users/maxazure/.codex/skills/omnivoice-tts/scripts/omnivoice_tts.py \
  --text "你好，Jay，这是用 OmniVoice 生成的一段中文语音。"
```

The script prints the output path. By default, files are saved under:

`/Users/maxazure/jayhome/projects/OmniVoice/outputs/`

## Default Settings

Use these defaults unless the user asks otherwise:

- `language`: `Chinese`
- `instruct`: `男，中音调`
- `num_step`: `16`
- `class_temperature`: `0`
- `position_temperature`: `0`
- output format: WAV, 24 kHz mono

For a faster rough preview, pass `--num-step 8`.

## Voice Consistency

For consistent voice across multiple generations, prefer voice cloning:

```bash
python3 /Users/maxazure/.codex/skills/omnivoice-tts/scripts/omnivoice_tts.py \
  --text "这里是要生成的新文本。" \
  --ref-audio /path/to/reference.wav \
  --ref-text "这里写参考音频中实际说的话。" \
  --output /path/to/output.wav
```

Keep the same `ref-audio`, `ref-text`, `language`, `instruct`, `num-step`, `speed` or `duration`, and temperatures for every segment. Avoid Auto Voice when the user asks for a consistent speaker.

Reference audio guidance:

- Use 3-10 seconds of clean speech.
- Use the same language as the target text when possible.
- Provide accurate `ref-text`; omitting it makes stability worse because ASR must infer it.
- Do not clone a real person's voice unless the user has rights or consent.

## Longer Scripts

For paragraphs or article narration:

- Generate one paragraph at a time if the user needs easier review or editing.
- Use the same reference audio and settings for all segments.
- Name files in reading order, such as `part_001.wav`, `part_002.wav`.
- If exact duration matters, pass `--duration` and `--postprocess-output false`.

## Validation

After generation, verify the file exists and has audio:

```bash
ffprobe -v error -show_entries stream=sample_rate,channels,duration \
  -of default=nw=1 /path/to/output.wav
```

For a quick waveform sanity check:

```bash
python3 - <<'PY'
import soundfile as sf, numpy as np
x, sr = sf.read("/path/to/output.wav")
print("sr", sr, "samples", len(x), "duration", len(x) / sr, "peak", float(np.max(np.abs(x))))
PY
```

