fishaudio/fish-speech · error · SystemExit
--reference_audio and --reference_text must be given the sam
Error message
--reference_audio and --reference_text must be given the same number of values, got {len(ref_audios)} audio(s) and {len(ref_texts)} text(s). What it means
tools/api_client.py validates that --reference_audio and --reference_text argument lists have equal length before building the request; mismatch triggers SystemExit with a count summary.
Source
Thrown at tools/api_client.py:150
type=str,
default="YOUR_API_KEY",
help="API key for authentication",
)
return parser.parse_args()
if __name__ == "__main__":
args = parse_args()
idstr: str | None = args.reference_id
# priority: ref_id > [{text, audio},...]
if idstr is None:
ref_audios = args.reference_audio or []
ref_texts = args.reference_text or []
if len(ref_audios) != len(ref_texts):
raise SystemExit(
"--reference_audio and --reference_text must be given the same number "
f"of values, got {len(ref_audios)} audio(s) and {len(ref_texts)} text(s)."
)
byte_audios = []
for ref_audio in ref_audios:
audio_bytes = audio_to_bytes(ref_audio)
if audio_bytes is None:
raise SystemExit(f"Reference audio file not found: {ref_audio}")
byte_audios.append(audio_bytes)
ref_texts = [read_ref_text(ref_text) for ref_text in ref_texts]
else:
byte_audios = []
ref_texts = []
pass # in api.py
data = {View on GitHub (pinned to befe400174)
Solutions
- Supply exactly one --reference_text per --reference_audio, in the same order
- Use --reference_id instead if you registered the pair server-side
- Drop extra audios you don't have transcripts for
Example fix
# before --reference_audio a.wav b.wav --reference-text "first" # after --reference_audio a.wav b.wav --reference-text "first" "second"
Defensive patterns
Strategy: validation
Validate before calling
if len(args.reference_audio or []) != len(args.reference_text or []):
# fix input before invoking the client
args.reference_text += [""] * (len(args.reference_audio) - len(args.reference_text)) Prevention
- Pair audio/text via argparse nargs='+' in one option or zip them
- Prefer --reference_id for registered references
When it happens
Trigger: Running api_client.py with, e.g., two --reference_audio flags but one --reference_text (or omitting the texts for extra audios).
Common situations: Voice-cloning requests with multiple reference clips where transcripts were forgotten; shell loops that pass mismatched lists.
Related errors
- Number of prompt text ({len(prompt_text)}) and prompt audio
- Reference audio file not found: {ref_audio}
- Directory {path} does not exist.
- Invalid quantization mode {mode} needs to be one of [int8, i
AI-assisted analysis of fishaudio/fish-speech@befe400174 (2026-08-27).
Data as JSON: /api/errors/1803dcb096d2f7f3.
Report an issue: GitHub.