# NewAPI 音频工作流 本项目的中文声音链路使用用户自有 NewAPI 中转到 Xinference,不在仓库内保存密钥。 ## 环境变量 ```bash export NEWAPI_API_KEY="..." ``` `GET https://newapi.ysblack.com/v1/models` 未带认证时返回 `401 Invalid token` 是预期行为。所有真实请求必须带 `Authorization: Bearer $NEWAPI_API_KEY`。 ## TTS 配音 - 模型:`IndexTTS-2.5` - 端点:`POST https://newapi.ysblack.com/v1/audio/speech` - 请求:`multipart/form-data` - 用途:中文角色配音、固定声线、情绪参考 `IndexTTS-2.5` 的角色声线不是预设 voice 列表,而是由 `prompt_speech` 参考音频锁定。每个角色必须有授权参考音频,并在逐句生成时重复使用同一角色参考音频。 当前工程没有用户确认的正式角色参考音频。此前用临时/机器化参考音频生成的 IndexTTS 样音已经作废。禁止使用以下音频作为 `prompt_speech`: - macOS `say` 生成的本地离线 TTS - MiniMax H3 原生音轨 - 旧 probe / 临时测试 wav - 听感机器化、带混响、带背景声、无授权或未经用户试听确认的声音 正式流程必须先获得干净自然的人声参考,或用 `Qwen3-TTS VoiceDesign`、`CosyVoice` 等自然声线先做候选试听。候选试听一次只生成单句,用户确认后才能把该声音登记为角色锁并进入批量生成。 ```bash curl -sS -o line_001.wav \ -X POST "https://newapi.ysblack.com/v1/audio/speech" \ -H "Authorization: Bearer $NEWAPI_API_KEY" \ -H "Accept: application/json, audio/*" \ -F "model=IndexTTS-2.5" \ -F "input=先别出去,树下和金属牌旁都危险。" \ -F "voice=default" \ -F "response_format=wav" \ -F "speed=1.0" \ -F "kwargs={\"language\":\"ZH\"}" \ -F "prompt_speech=@voices/chen_yu/approved_ref_01.wav;type=audio/wav;filename=prompt.wav" ``` ## ASR 校验 - 模型:`paraformer-zh-long` - 端点:`POST https://newapi.ysblack.com/v1/audio/transcriptions` - 请求:`multipart/form-data` - 用途:中文识别、台词准确性校验、字幕和时间轴对齐 ```bash curl -sS \ -X POST "https://newapi.ysblack.com/v1/audio/transcriptions" \ -H "Authorization: Bearer $NEWAPI_API_KEY" \ -F "model=paraformer-zh-long" \ -F "file=@voices/chen_yu/line_001.wav;type=audio/wav" \ -F "language=zh" \ -F "response_format=verbose_json" ``` `verbose_json` 返回识别文本、词级时间戳和音频时长。生产字幕时以原始台词表为准,ASR 文本用于发现漏字错字,ASR 时间戳用于对齐字幕。 ## 生产顺序 1. 收集或生成候选角色声线,一次只做单句试听。 2. 用户试听确认后,把正式参考音频登记为 `approved_ref_01.wav`。 3. 用 `IndexTTS-2.5` 按角色正式参考音频生成逐句 wav。 4. 标准化音频采样率、响度和命名,并写入缓存。 5. 用 `paraformer-zh-long` 对逐句 wav 或整集混音做 `verbose_json` 识别。 6. 比对原始台词和 ASR 文本,异常句重生成或人工复核。 7. 用原始台词文本加 ASR 时间戳生成字幕,再进入剪辑合成。