{ "schema": "ai-drama-platform.voice-lines.v1", "episodeId": "E01", "audioPipeline": { "adapter": "newapi-audio-production", "tts": { "model": "IndexTTS-2.5", "endpoint": "/audio/speech", "request": "multipart/form-data", "voiceLockField": "prompt_speech", "referenceStatus": "requires-user-approved-natural-reference", "blockedReferenceSources": [ "macOS say", "MiniMax H3 native audio", "old probe wav", "temporary machine voice" ] }, "asr": { "model": "paraformer-zh-long", "endpoint": "/audio/transcriptions", "request": "multipart/form-data", "responseFormat": "verbose_json" } }, "characters": [ { "id": "chen-yu", "name": "陈宇", "voiceLock": { "voiceId": "local-male-calm-chenyu-v1", "status": "needs-user-approved-reference", "tone": "青年男声,普通话,中低音,镇定,不播音腔", "ttsModel": "IndexTTS-2.5", "asrModel": "paraformer-zh-long", "referenceAudio": null, "referencePolicy": "必须先获得用户确认的干净自然人声参考;禁止使用 macOS say、H3 原生音频、旧 probe 或任何机器化临时音频作为 prompt_speech。", "candidateModels": [ "Qwen3-TTS VoiceDesign", "CosyVoice", "IndexTTS-2.5" ], "auditionPolicy": "一次只生成单句试听,用户试听确认后再锁定角色声线;未确认前禁止批量生成。", "emotionRefs": {}, "ttsRequest": "multipart/form-data: model, input, voice, response_format, speed, kwargs, prompt_speech", "asrRequest": "multipart/form-data: model, file, language=zh, response_format=verbose_json" } }, { "id": "tang-xia", "name": "唐夏", "voiceLock": { "voiceId": "local-girl-natural-tangxia-v1", "status": "needs-user-approved-reference", "tone": "少女普通话,自然干净,不娃娃音,不尖锐", "ttsModel": "IndexTTS-2.5", "asrModel": "paraformer-zh-long", "referenceAudio": null, "referencePolicy": "必须先获得用户确认的干净自然人声参考;禁止使用 macOS say、H3 原生音频、旧 probe 或任何机器化临时音频作为 prompt_speech。", "candidateModels": [ "Qwen3-TTS VoiceDesign", "CosyVoice", "IndexTTS-2.5" ], "auditionPolicy": "一次只生成单句试听,用户试听确认后再锁定角色声线;未确认前禁止批量生成。", "emotionRefs": {}, "ttsRequest": "multipart/form-data: model, input, voice, response_format, speed, kwargs, prompt_speech", "asrRequest": "multipart/form-data: model, file, language=zh, response_format=verbose_json" } } ], "lines": [ { "shotId": "shot-01", "lineId": "line-001", "characterId": "chen-yu", "text": "等一下,先别出去。雷暴来了,树下和金属牌旁边都不安全。", "emotion": "冷静但有一点急", "targetDurationSec": 3.2, "audioFile": "voices/chen_yu/line_001.wav", "mouthPlan": "规避嘴形" }, { "shotId": "shot-01", "lineId": "line-002", "characterId": "tang-xia", "text": "那我现在该往哪走?", "emotion": "疑惑,压低声音", "targetDurationSec": 1.6, "audioFile": "voices/tang_xia/line_002.wav", "mouthPlan": "规避嘴形" }, { "shotId": "shot-02", "lineId": "line-003", "characterId": "chen-yu", "text": "看左边,积水旁可能有落地电线。别靠近,也别跨警戒线。", "emotion": "明确提醒", "targetDurationSec": 3.4, "audioFile": "voices/chen_yu/line_003.wav", "mouthPlan": "规避嘴形" }, { "shotId": "shot-02", "lineId": "line-004", "characterId": "tang-xia", "text": "我退回来,在门口等。", "emotion": "听懂后配合", "targetDurationSec": 1.5, "audioFile": "voices/tang_xia/line_004.wav", "mouthPlan": "规避嘴形" }, { "shotId": "shot-03", "lineId": "line-005", "characterId": "tang-xia", "text": "我给家里报个平安。", "emotion": "松一口气", "targetDurationSec": 1.6, "audioFile": "voices/tang_xia/line_005.wav", "mouthPlan": "规避嘴形" }, { "shotId": "shot-03", "lineId": "line-006", "characterId": "chen-yu", "text": "对,先待在建筑入口内侧,等雷声远了再走。", "emotion": "稳定收束", "targetDurationSec": 2.8, "audioFile": "voices/chen_yu/line_006.wav", "mouthPlan": "规避嘴形" } ] }