根据我们在 #2968 讨论对 docs/vllm_guide(_zh|_zh_v2).md 的几个修改意见。本来我想直接提交PR,但想一下不如先开个问题单,这样可以先确认一下,其他人有兴趣也可以一起讨论。
我以vllm_guide_zh_v2.md 为基础展开讨论
这句话要去掉,这点最没有异议
Note: repetition_penalty=1.3 内部硬编码,防止短 chunk 重复退化。
关于安装 pip install torch torchaudio 我们已经讨论过 torch的版本问题,但其实对 torchaudio 也适用。
现在 funasr的readme 也是说安装先执行 pip install torch torchaudio , 我之前已经说了让vllm 来决定 torch 和 torchaudio 的版本,而这份文档是是关于vllm的guide,那这句话就更成立。所以 安装环境里去掉pip install torch torchaudio` 改由通过cuda版本决定vllm就可以
实际上 vllm 对 torch 和 torchaudio 版本都有明确说明,每个大版本都有相应跟新
https://github.com/vllm-project/vllm/blob/main/requirements/cpu.txt
https://github.com/vllm-project/vllm/blob/main/requirements/cuda.txt
第6节 「流式语音识别服务」——介绍 partial 预览机制
可以简单介绍 partial 预览机制 ,然后引出问题 每次刷新 partial,encoder 都把"句首→当前"的整段音频从头重编一遍 ,不复用上一次的编码结果。
问题(O(L²) 累积重编码) :正因每次都从句首重编,一句话越长,单次要编的音频越长、刷新次数也越多——总编码量随句长二次增长 。实测一句约 29s 的连续发言会被完整重编十余次,单次 encoder 耗时从几十毫秒爬到数百毫秒。(§4 SDK 流式的"每个 chunk 包含从头到当前的全部音频"是同一问题,长文件同理。)
建议改法 :把 partial 的编码窗口限制到最近 ~8s
另一个小问题,大章节下小章节标题错,比如第六节下面小章节写 "4.1 服务架构" (第五节下面小章节写 3.x)
CUDA_VISIBLE_DEVICES 这个vllm 环境变量 可以做简单介绍,示例全部写 CUDA_VISIBLE_DEVICES=0,易让不熟悉者误以为它必须 是 0 实际上现在0.6B 、1.7B的模型一张卡都可以起好几个实例,所以完全没必要写 CUDA_VISIBLE_DEVICES=0
关于SPK人声分离,我看现在代码里写的基本都是iic/speech_eres2netv2_sv_zh-cn_16k-common 但实际我自己实测,包括我看也有问题单比如 说话人分离好像没效果啊 #2944 Fun-ASR-Nano这个模型 spk 基本没什么效果,但是 https://github.com/modelscope/FunASR/blob/main/examples/industrial_data_pretraining/fun_asr_nano/serve_realtime_ws.py#L433 写死了 这个模型,导致直接不修改代码没法关掉
我们在 serve_realtime_ws.py 是单个 asyncio 事件循环管理所有 WebSocket 连接,但解码是同步阻塞 #2966 讨论过 现阶段 生产并发与多进程部署方法。
根据我们在 #2968 讨论对
docs/vllm_guide(_zh|_zh_v2).md的几个修改意见。本来我想直接提交PR,但想一下不如先开个问题单,这样可以先确认一下,其他人有兴趣也可以一起讨论。我以vllm_guide_zh_v2.md 为基础展开讨论
pip install torch torchaudio我们已经讨论过 torch的版本问题,但其实对 torchaudio 也适用。现在 funasr的readme 也是说安装先执行
pip install torch torchaudio, 我之前已经说了让vllm 来决定 torch 和 torchaudio 的版本,而这份文档是是关于vllm的guide,那这句话就更成立。所以 安装环境里去掉pip install torch torchaudio` 改由通过cuda版本决定vllm就可以实际上 vllm 对 torch 和 torchaudio 版本都有明确说明,每个大版本都有相应跟新
https://github.com/vllm-project/vllm/blob/main/requirements/cpu.txt
https://github.com/vllm-project/vllm/blob/main/requirements/cuda.txt
可以简单介绍 partial 预览机制 ,然后引出问题 每次刷新 partial,encoder 都把"句首→当前"的整段音频从头重编一遍,不复用上一次的编码结果。
问题(O(L²) 累积重编码):正因每次都从句首重编,一句话越长,单次要编的音频越长、刷新次数也越多——总编码量随句长二次增长。实测一句约 29s 的连续发言会被完整重编十余次,单次 encoder 耗时从几十毫秒爬到数百毫秒。(§4 SDK 流式的"每个 chunk 包含从头到当前的全部音频"是同一问题,长文件同理。)
建议改法:把 partial 的编码窗口限制到最近 ~8s
另一个小问题,大章节下小章节标题错,比如第六节下面小章节写 "4.1 服务架构" (第五节下面小章节写 3.x)
CUDA_VISIBLE_DEVICES这个vllm 环境变量可以做简单介绍,示例全部写CUDA_VISIBLE_DEVICES=0,易让不熟悉者误以为它必须是0实际上现在0.6B 、1.7B的模型一张卡都可以起好几个实例,所以完全没必要写CUDA_VISIBLE_DEVICES=0iic/speech_eres2netv2_sv_zh-cn_16k-common但实际我自己实测,包括我看也有问题单比如 说话人分离好像没效果啊 #2944Fun-ASR-Nano这个模型 spk 基本没什么效果,但是 https://github.com/modelscope/FunASR/blob/main/examples/industrial_data_pretraining/fun_asr_nano/serve_realtime_ws.py#L433 写死了 这个模型,导致直接不修改代码没法关掉