资讯动态

MOSS-TTS-Realtime 微调教程:用多轮对话数据定制专属语音Agent

发布时间:2026/9/16 14:54:40 来源:尧图企业网站定制
MOSS-TTS-Realtime 微调教程用多轮对话数据定制专属语音Agent【免费下载链接】MOSS-TTSAn open-source model family for long-form speech, dialogue synthesis, voice design, sound effects, and real-time streaming TTS项目地址: https://gitcode.com/GitHub_Trending/mo/MOSS-TTSMOSS-TTS-Realtime是 OpenMOSS 推出的实时流式 TTS 模型专为多轮对话语音 Agent 设计。本教程带你用**多轮对话数据微调Fine-tuning**它定制一个音色统一、上下文连贯的专属语音助手。全程只需 4 个文件、一条命令即可启动训练无需深厚算法背景也能上手。关键词MOSS-TTS-Realtime 微调、TTS 模型 SFT、多轮对话数据训练、专属语音 Agent、声音克隆微调一、认识 MOSS-TTS-Realtime为什么值得微调在动手之前先搞清楚它「强在哪」你就明白微调后能拿到什么。MOSS-TTS-Realtime 属于 MOSS TTS 家族中的实时成员核心定位是「上下文感知 流式合成」多轮上下文建模不止孤立合成单句而是把历史文本 历史声学信息一起作为条件让每一句回复都承上启下。音色克隆 全程一致基于参考音频ref_wav克隆音色并在整段多轮对话中保持稳定。长上下文最长支持32K约 40 分钟上下文长对话也不跑偏。低延迟单卡 L20 上 TTFB首包延迟约180msRTF实时率约0.51适合真实对话。多语言支持中文、英文等20 种语言。 微调的价值让模型继承你指定的音色与说话风格并学会「在你的业务场景里」如何组织语气、停顿与措辞从而成为一个真正属于你的专属语音 Agent。二、模型架构微调到底在训练什么理解架构能帮你判断显存需求、也更容易调试。MOSS-TTS-Realtime 采用分层架构1.7B 参数主干Backbone由 Qwen3-1.7B 初始化负责编码语言与上下文信息并暴露其隐状态。200M 本地 Transformer架构与主干对齐基于主干隐状态自回归生成 RVQ 音频 token。MOSS-Audio-TokenizerCat把音频 token 重建为 24kHz 高保真波形。技术规格一览项目规格主干模型初始化自 Qwen3-1.7B本地 Transformer4 层 Transformer Block音频编解码器Cat因果式音频 Tokenizer采样率 / 帧率24,000 Hz / 12.5 Hz1s ≈ 12.5 token代码本16 层 RVQ生成方式纯自回归AR因为主体是 1.7B 主干 轻量本地网络单机 DDP 通常就够微调这也是它对普通用户友好的原因。更多细节可查阅 moss_tts_realtime/README.md 与 docs/moss_tts_realtime_model_card.md。三、环境准备一键安装微调依赖先克隆仓库只读使用请勿修改仓库内文件git clone https://gitcode.com/GitHub_Trending/mo/MOSS-TTS cd MOSS-TTS安装微调所需依赖相比推理多了accelerate与wandbpip install --extra-index-url https://download.pytorch.org/whl/cu128 -e .[torch-runtime,finetune]如果你计划使用DeepSpeed ZeRO-3参数全分片适合更大模型 / 多机额外安装pip install --extra-index-url https://download.pytorch.org/whl/cu128 -e .[torch-runtime,finetune-deepspeed] 依赖定义见 pyproject.tomlfinetune额外引入accelerate与wandbfinetune-deepspeed再补充deepspeed。四、构造多轮对话训练集JSONL 格式详解核心微调的关键是数据格式。所有数据统一使用conversations多轮对话格式每条记录是一个conversations列表其中roleuser用户语音或assistantAgent 语音text该轮文本内容wav该轮音频文件路径ref_wav可选用于声音克隆的参考音频1单轮数据等同普通 TTS / 声音克隆只有一个assistant轮次没有参考音频时可省略ref_wav{id: 000001, ref_wav: ./data/ref0.wav, conversations: [{role: assistant, text: She said she would be here by noon., wav: ./data/utt0001.wav}]}2多轮数据VoiceAgent 交互user轮代表用户与 VoiceAgent 的语音assistant轮代表 MOSS-TTS-Realtime 合成的语音必须与ref_wav同一说话人user轮可以是不同说话人。单轮与多轮数据可混合训练兼顾两种能力{id: 000003, ref_wav: ./data/ref0.wav, conversations: [ {role: user, text: I just landed in Paris, about six hours before my next flight., wav: ./data/user_utt0001.wav}, {role: assistant, text: Nice, welcome to Paris! Six hours is perfect for a short city walk., wav: ./data/assistant_utt0001.wav}, {role: user, text: Just a backpack, I dont want anything too rushed., wav: ./data/user_utt0002.wav}, {role: assistant, text: Got it. Id suggest starting near the Seine and grabbing a coffee., wav: ./data/assistant_utt0002.wav} ]}⚠️ 铁律所有assistant轮必须是同一说话人这决定微调后 Agent 的音色一致性。五、数据预处理把音频编码为 audio_codes训练前用 prepare_data.py预先把目标音频编码为audio_codesRVQ 码避免训练时反复编码、拖慢速度。音频编解码由MOSS-Audio-TokenizerCat完成把波形与离散音频 token 互转是合成保真度的基础单进程预处理python moss_tts_realtime/finetuning/prepare_data.py \ --codec-path OpenMOSS-Team/MOSS-Audio-Tokenizer \ --device auto \ --input-jsonl train_raw.jsonl \ --output-jsonl train_with_codes.jsonl默认会连参考音频一起预编码若只需目标音频加--skip-reference-audio-codes。数据量大时可用accelerate launch --num_processes 16 ...多机多卡并行编码按 rank 切分成多个 shard如train_with_codes.rank00000-of-00016.jsonl训练阶段sft.py支持直接用 glob 读取。六、启动训练单卡 → DDP → ZeRO-3训练入口是 sft.py数据由 dataset.py 组装。1单卡基线最易上手accelerate launch moss_tts_realtime/finetuning/sft.py \ --model-path OpenMOSS-Team/MOSS-TTS-Realtime \ --codec-path OpenMOSS-Team/MOSS-Audio-Tokenizer \ --train-jsonl train_with_codes.jsonl \ --output-dir output/moss_tts_realtime_sft \ --per-device-batch-size 1 \ --gradient-accumulation-steps 8 \ --learning-rate 1e-5 \ --warmup-ratio 0.03 \ --num-epochs 3 \ --mixed-precision bf162单机 8 卡数据并行DDP使用模板配置 accelerate_ddp_8gpu.yamlaccelerate launch \ --config_file moss_tts_realtime/finetuning/configs/accelerate_ddp_8gpu.yaml \ moss_tts_realtime/finetuning/sft.py \ --model-path OpenMOSS-Team/MOSS-TTS-Realtime \ --codec-path OpenMOSS-Team/MOSS-Audio-Tokenizer \ --train-jsonl prepared/train_with_codes.rank*.jsonl \ --output-dir output/moss_tts_realtime_sft_ddp \ --per-device-batch-size 1 \ --gradient-accumulation-steps 4 \ --mixed-precision bf163参数分片FSDP / DeepSpeed ZeRO-3可选对 1.7B 模型单机 DDP 一般已足够需要更强分片时可选FSDP配置 accelerate_fsdp_1.7b.yaml参数 / 梯度 / 优化器状态按 rank 分片。DeepSpeed ZeRO-3配置 accelerate_zero3_1.7b.yaml全分片适合更大模型与多机需安装deepspeed。 训练日志会自动打印带时间戳的前缀、global_batch_size、step_time、steps_per_sec、samples_per_sec与eta便于盯进度。常用可调超参数速查类别参数优化器--learning-rate、--weight-decay、--adam-beta1/2、--adam-eps学习率调度--lr-scheduler-type、--warmup-steps、--warmup-ratio稳定性--max-grad-norm、--mixed-precisionno / fp16 / bf16观测--wandb-project可选接入 Weights Biases七、一键启动脚本 run_train.sh不想拼长命令直接跑 run_train.shbash moss_tts_realtime/finetuning/run_train.sh它会自动串联「预处理 → 训练」常用环境变量RAW_JSONL原始训练 JSONLPREPARED_JSONLprepare_data.py的输出TRAIN_JSONL训练输入单文件 / 目录 / glob未设则自动推断OUTPUT_DIR训练输出目录ACCELERATE_CONFIG_FILE可选的 DDP / FSDP / ZeRO-3 配置SKIP_PREPARE1跳过预处理直接用已有数据训练TRAIN_EXTRA_ARGS_STR透传给sft.py的额外训练参数用 ZeRO-3 一键启动示例RAW_JSONLtrain_raw.jsonl \ PREPARED_JSONLprepared/train_with_codes.jsonl \ OUTPUT_DIRoutput/moss_tts_realtime_sft_zero3 \ ACCELERATE_CONFIG_FILEmoss_tts_realtime/finetuning/configs/accelerate_zero3_1.7b.yaml \ TRAIN_EXTRA_ARGS_STR--per-device-batch-size 1 --gradient-accumulation-steps 4 --num-epochs 3 --warmup-ratio 0.03 --mixed-precision bf16 \ bash moss_tts_realtime/finetuning/run_train.sh多机训练只需改配置里的num_machines、num_processes、machine_rank、main_process_ip、main_process_port例如 2 节点 16 卡num_machines: 2、num_processes: 16、节点 0 / 1 各设对应machine_rank训练命令保持不变。八、微调之后验证与部署训练产物保存在--output-dir指定目录每个 checkpoint 自带完整mossttsrealtime包可独立加载。验证与上线可复用官方入口Gradio 流式 Demopython3 moss_tts_realtime/app.pyFastAPI 服务python3 moss_tts_realtime/fast_api.py再调 tts_client.py 验证多轮流式example_multiturn_stream_to_tts.py第 0 轮重置 KV cache后续轮复用天然承载上下文推理实现见 modeling_mossttsrealtime.py推荐解码参数temperature0.8、top_p0.6、top_k30、repetition_penalty1.1、repetition_window50。九、常见问题 FAQQ1.7B 模型微调需要多少卡A单卡可做基线per-device-batch-size 1 梯度累积追求速度用单机 8 卡 DDP更大规模再用 FSDP / ZeRO-3。Quser轮和assistant轮一定要同一个人吗A不必。assistant轮必须与ref_wav同一说话人user轮可以是不同说话人这正贴近真实对话。Q为什么训练前要prepare_data.pyA预先把音频编码成audio_codes训练时不再重复跑编解码器显著提速数据大时用accelerate launch多卡并行分片编码。Q能只用单轮数据吗A可以但多轮 单轮混合训练能同时保留单句克隆与多轮对话能力效果更稳。小结用 MOSS-TTS-Realtime 微调专属语音 Agent 的路径非常清晰装依赖pip install -e .[torch-runtime,finetune]造数据conversations多轮 JSONLassistant轮保持同一音色预处理prepare_data.py把音频编码为audio_codes训练sft.py单卡 → DDP → ZeRO-3 渐进式放大一键run_train.sh串起全流程上线app.py/fast_api.py部署验证按此流程你无需修改仓库任何文件即可完成一次稳定、音色统一、上下文连贯的专属语音 Agent 微调。【免费下载链接】MOSS-TTSAn open-source model family for long-form speech, dialogue synthesis, voice design, sound effects, and real-time streaming TTS项目地址: https://gitcode.com/GitHub_Trending/mo/MOSS-TTS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价