Files
ai-drama-platform/exports/project-template/voices/voice-lines.json
T

135 lines
4.7 KiB
JSON

{
"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": "规避嘴形"
}
]
}