GPT-SoVITS api_v2 服务怎么启用 streaming_mode 流式返回音频?
GPT-SoVITS api_v2 服务怎么启用 streaming_mode 流式返回音频【免费下载链接】GPT-SoVITS1 min voice data can also be used to train a good TTS model! (few shot voice cloning)项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS如果你已经把 GPT-SoVITS 的推理服务跑起来希望/tts接口不要等整段音频合成完才返回而是按块chunk by chunk逐步返回音频流那么需要在 api_v2.py 启动的 API 服务里把请求参数streaming_mode打开。这篇文章基于仓库内api_v2.py的文件头文档和 TTS 推理管线 的实际代码说明服务的启动方式、streaming_mode的取值含义、启用后服务端的自动降级行为以及如何根据 HTTP 响应判断是否生效。先确认环境与服务启动方式api_v2.py是一个基于 FastAPI uvicorn 的独立 API 入口服务启动时会按-c指定的配置文件初始化 TTS 管线。依赖安装可参考 README.md在 Linux 下执行bash install.sh --device CU126|CU128|ROCM|CPU --source HF|HF-Mirror|ModelScope或不走安装脚本时手动执行pip install -r requirements.txt如需 aac 等格式打包还要保证环境里有ffmpegREADME 给出了sudo apt install ffmpeg/conda install ffmpeg/brew install ffmpeg等对应平台的安装命令。服务启动命令来自api_v2.py文件头文档python api_v2.py -a 127.0.0.1 -p 9880 -c GPT_SoVITS/configs/tts_infer.yaml参数含义-a绑定地址默认127.0.0.1需要让其他机器访问时改成对应网卡地址传-a None可让 api 监听双栈。-p绑定端口默认9880。-cTTS 配置文件路径默认GPT_SoVITS/configs/tts_infer.yaml。该文件见 GPT_SoVITS/configs/tts_infer.yaml包含custom、v1、v2、v2Pro、v2ProPlus、v3、v4等版本配置段custom段决定实际加载的模型版本和设备——这一点直接影响流式是否可用见下文限制。注意streaming_mode是每个请求的参数不是服务启动参数也不需要改配置文件。启动命令本身不用变改的是调用/tts时传的参数。调用 /tts 时启用 streaming_mode/tts支持 GET 和 POST 两种方式streaming_mode在两种方式里都可以传。api_v2.py文件头文档给出的 GET 示例http://127.0.0.1:9880/tts?text先帝创业未半而中道崩殂今天下三分益州疲弊此诚危急存亡之秋也。text_langzhref_audio_patharchive_jingyuan_1.wavprompt_langzhprompt_text我是「罗浮」云骑将军景元。不必拘谨「将军」只是一时的身份你称呼我景元便可text_split_methodcut5batch_size1media_typewavstreaming_modetrue其中ref_audio_path的值是文档示例中的参考音频路径替换成你服务器上实际存在的参考音频文件路径即可。POST 方式的请求体中与流式直接相关的字段{ text: 待合成文本, text_lang: zh, ref_audio_path: 参考音频路径, prompt_text: 参考音频对应的文本, prompt_lang: zh, streaming_mode: true, overlap_length: 2, min_chunk_length: 16 }overlap_length是流式模式下语义 token 的重叠长度min_chunk_length是流式模式下语义 token 的最小 chunk 长度文档注明它影响音频块的大小。streaming_mode可用0/1/2/3或true/false文档对各取值的定义如下取值文档定义的行为0/false关闭流式整段返回1/trueBest Quality, Slowest response speed即旧版streaming_mode按分段返回2Medium Quality, Slow response speed真正的逐块流式3Lower Quality, Faster response speed固定长度 chunk 的流式响应更快、质量更低传入不在0/1/2/3或布尔范围内的值时接口返回 HTTP 400body 为{message: the value of streaming_mode must be 0, 1, 2, 3(int) or true/false(bool)}。启用后的服务端行为与限制以下行为来自 TTS.py 中run方法的实际逻辑启用流式后服务端会打印对应提示可据此确认是否走到了预期的分支模型版本限制加载 V3/V4 模型即use_vocoder为真对应配置文件里的v3、v4段时不支持流式推理服务会打印“SoVits V3/4模型不支持流式推理模式已自动回退到分段返回模式”自动改为分段返回return_fragmentTrue。也就是说streaming_mode2/3的逐块流式只在非 V3/V4 模型配置下生效。与并行推理互斥parallel_infer与流式同时开启时会打印“不支持同时开启并行推理和流式推理模式已自动关闭并行推理模式”并行推理被自动关闭。与分桶互斥流式或分段返回模式下split_bucket会被自动关闭并打印“分段返回模式/流式推理模式不支持分桶处理已自动关闭分桶处理”。流式成功开启的提示在parallel_infer关闭且模型非 V3/V4 的条件下服务端打印“流式推理模式已开启”此时走的才是逐块流式路径。V3 模型的额外要求使用 V3/V4vocoder模型时prompt_text不能为空否则抛错prompt_text cannot be empty when using SoVITS_V3。如何验证流式是否生效api_v2.py文件头文档给出的响应约定成功时直接返回音频流HTTP code 200失败时返回包含错误信息的 JSONHTTP code 400。流式模式下响应是StreamingResponsemedia_type为audio/{media_type}。对media_typewav默认值的流式响应代码会先在流中写入一段 WAV 头wave_header_chunk后续数据块按 raw 格式拼接发出——如果你自己解析流注意第一个块带 wav 头、后续块是裸 PCM不要把每个块都当完整 wav 解析。判断方法发一个streaming_mode2或3的请求观察响应是否分块到达客户端侧多次read到数据而不是等一次完整响应同时看服务端日志是否打印了“流式推理模式已开启”而不是回退提示HTTP 400 的 JSON 里带具体 message例如参数缺失text is required、ref_audio_path is required、prompt_lang is required、语言不支持、media_type不支持可选值wav、raw、ogg、aac、或 tts 执行异常message: tts failed 加 Exception 详情按 message 逐项核对请求即可。如果不想在请求里每次都传也可以留意/set_refer_audio接口http://127.0.0.1:9880/set_refer_audio?refer_audio_path...预先设置参考音频但streaming_mode本身仍需在每次/tts请求中指定。小结最短操作路径确认-c指向的tts_infer.yaml中custom段配置的是非 V3/V4 模型否则流式会自动降级为分段返回用python api_v2.py -a 127.0.0.1 -p 9880 -c GPT_SoVITS/configs/tts_infer.yaml启动服务调用/tts时传streaming_mode2中等质量流式或streaming_mode3更快响应、更低质量以“服务端打印流式推理模式已开启 HTTP 200 音频流分块返回”作为启用成功的判断400 JSON 的 message 作为失败排查依据。【免费下载链接】GPT-SoVITS1 min voice data can also be used to train a good TTS model! (few shot voice cloning)项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考