Files
ai-drama-platform/docs/NEWAPI_AUDIO_WORKFLOW.md
T

3.1 KiB
Raw Blame History

NewAPI 音频工作流

本项目的中文声音链路使用用户自有 NewAPI 中转到 Xinference,不在仓库内保存密钥。

环境变量

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 等自然声线先做候选试听。候选试听一次只生成单句,用户确认后才能把该声音登记为角色锁并进入批量生成。

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
  • 用途:中文识别、台词准确性校验、字幕和时间轴对齐
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 时间戳生成字幕,再进入剪辑合成。