# async_cosyvoice
**Repository Path**: tangshuai-ai/async_cosyvoice
## Basic Information
- **Project Name**: async_cosyvoice
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2025-04-08
- **Last Updated**: 2025-04-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: TTS, llm
## README
# Async CosyVoice
## 项目概述
Async CosyVoice 项目用于加速 cosyvoice2 的推理过程,当前仅支持 Linux 系统,并且依赖 vllm 库。以下是该项目的主要特性:
1. **LLM 推理加速**:借助 vllm 对 LLM 部分的推理进行加速。
2. **Flow 推理情况**:Flow 部分的推理采用官方的 `load_jit` 或 `load_trt` 模式,并使用[hexisyztem](https://github.com/hexisyztem)提供的多estimator实例加速。
3. **加速表现**:
- 单任务推理的 RTF 从原来的 0.25 - 0.30,经过 vllm 加速后可达到 0.1 - 0.15。
- 单任务流式推理场景下,首包延迟约在 150 - 250ms 之间。
- 并发推理时,在rtf<1的前提下,4070能够支持 20 个非流式并发,或者 10 个流式并发。
## 环境准备
请使用 Python 3.10.16 版本,按以下步骤创建并激活 Conda 环境:
```bash
conda create -n cosyvoice2 python=3.10.16 -y
conda activate cosyvoice2
```
## 使用步骤
### 1. 克隆 CosyVoice 项目
```bash
git clone https://github.com/FunAudioLLM/CosyVoice.git
cd CosyVoice
git submodule update --init --recursive
# 安装系统依赖
conda install -y -c conda-forge pynini==2.1.5
sudo apt-get update
sudo apt-get install sox libsox-dev -y
```
### 2. 克隆本项目
在 CosyVoice 项目路径下,克隆本项目:
```bash
git clone https://github.com/qi-hua/async_cosyvoice.git
```
### 3. 安装依赖
进入 `async_cosyvoice` 目录,安装所有依赖(不用再安装原CosyVoice项目依赖):
```bash
cd async_cosyvoice
pip install -r requirements.txt
```
### 4. 下载模型文件
从 [这里](https://www.modelscope.cn/models/iic/CosyVoice2-0.5B/) 下载 CosyVoice2 - 0.5B 模型文件,并将其保存至 `CosyVoice/pretrained_models` 目录。
### 5. 复制文件
将 `async_cosyvoice/CosyVoice2 - 0.5B` 文件夹下的文件复制到下载的 CosyVoice2 - 0.5B 模型文件夹中:
```bash
cp async_cosyvoice/CosyVoice2-0.5B/* pretrained_models/CosyVoice2-0.5B/
```
### 6. 配置参数
可在 `config.py` 文件中设置 vllm 的 `AsyncEngineArgs` 参数和 `SamplingParams` 参数,以及 ESTIMATOR_COUNT:
```python
ENGINE_ARGS = {
# 根据实际情况设置
"gpu_memory_utilization": 0.4,
"max_num_batched_tokens": 1024,
"max_model_len": 2048,
"max_num_seqs": 256,
}
SAMPLING_PARAMS = {
"max_tokens": 2048,
}
ESTIMATOR_COUNT = 2
```
### 7. GRPC 服务使用
在 `runtime/async_grpc` 目录下,运行以下命令启动 GRPC 服务:
```bash
# 1. 由 proto 文件生成依赖代码
cd runtime/async_grpc
python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. cosyvoice.proto
python server.py --load_jit --load_trt --fp16
```
测试 GRPC 服务
```bash
python client.py
```
### 8. FastAPI 服务使用
在 `runtime/fastapi` 目录下,运行以下命令启动 FastAPI 服务:
```bash
cd runtime/fastapi
python server.py --load_jit --load_trt --fp16
```
### 9. spk2info 说明
`spk2info.pt` 文件中保存了 `prompt_text` 及其 token、embedding 数据,可用于 `sft`、`inference_zero_shot_by_spk_id`、`inference_instruct2_by_spk_id`,使用时无需传递参考 `prompt_text` 及音频数据,直接传递 `spk_id` 即可,并可以跳过对参考音频的预处理步骤,直接进入推理步骤。
可通过 `frontend.generate_spk_info` 函数生成新的 `spk2info`,需要传入的参数为:`spk_id: str`、`prompt_text: str`、`prompt_speech_16k: torch.Tensor`、`resample_rate: int = 24000`、`name: str = None`。
## 注意事项
1. 本项目使用的是 vllm == 0.7.3,并开启了 `VLLM_USE_V1 = '1'`。
2. 当前 CUDA 环境为 12.4,部分依赖文件使用的版本为 `vllm==0.7.3`、`torch==2.5.1`、`onnxruntime-gpu==1.19.0`。
3. 启动 cosyvoice2 实例后,需要进行 **预热**,即进行 10 次以上的推理任务,预热 trt 模型。