windows10 阿里GitHub中FunAudioLLM-APP项目(ASR-LLM-TTS;cosyvoice2+sensevoice+LLM大语言模型--通用千问,实现语音识别、人工智能对话和语音转文字功能)环境搭配中,PyTorch安装过程以及其他问题的记录

阿里GitHub中FunAudioLLM-APP项目包含3个部分(cosyvoice2+sensevoice+LLM大语言模型--通用千问),分别实现语音识别、人工智能对话和语音转文字功能,可以无硬件实现小智这样的智能对话。cosyvoice和sensevoice是从另外的项目中下载到FunAudioLLM-APP项目的两个目录里。
FunAudioLLM-APP项目:(https://github.com/FunAudioLLM/FunAudioLLM-APP)

使用国内pip源安装PyTorch遇到的最大问题就是:cu126是CPU版。

终极解法就是下载官方的torch-2.6.0+cu126-cp311-cp311-win_amd64.whl(或者torch-2.3.0+cu121-cp312-cp312-win_amd64.whl)。
下载方法就是找到官网,选择你的平台,python版本,cuda版本等。然后会给出pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126这样的命令。
国内都没有最新torch-2.6.0 GPU版本,所以你使用这条命令的时候,看看哪个whl最大,一般2.3G或者2.4G这个样子。然后使用Aria2之类的工具下载,多线程下载,速度还是可以的,大约20~30分钟。

1.安装驱动,CUDA,cudnn等,这些很容易。

其它适合自己电脑的torch+cuda版本可在torch官网查找
https://pytorch.org/get-started/previous-versions/

安装好,使用命令测试一下,可以看到CUDA12.6,显卡6GB(我的是1060,跑FunAudioLLM-APP中的cosyvoice和sensevoice没有问题,速度可以接受)。

nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Wed_Oct_30_01:18:48_Pacific_Daylight_Time_2024
Cuda compilation tools, release 12.6, V12.6.85
Build cuda_12.6.r12.6/compiler.35059454_0

nvidia-smi
Sun Feb 16 04:25:14 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 561.17 Driver Version: 561.17 CUDA Version: 12.6 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Driver-Model | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=++======|
| 0 NVIDIA GeForce GTX 1060 6GB WDDM | 00000000:01:00.0 On | N/A |
| 43% 39C P8 7W / 120W | 414MiB / 6144MiB | 25% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+

2.下载安装conda

可以下载那个mini版本的,体积下,但需要记住很多命令,纯命令操作。

3.创建conda 环境,并激活新环境,

创建并激活新环境(避免旧依赖干扰)
conda create -n pytorch_gpu python=3.11 -y
conda activate pytorch_gpu
下面就是关键,源要使用指定的--index-url https://download.pytorch.org/whl/cu126。
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
速度很慢,但可以看到torch-2.3.0+cu121-cp312-cp312-win_amd64.whl的下载网址。

4.使用Aria2工具下载,从本地安装torch-2.3.0+cu121-cp312-cp312-win_amd64.whl

如果需要依赖,小的依赖包可以继续从官网下载。
pip3 install .\torch-2.6.0+cu126-cp311-cp311-win_amd64.whl --index-url https://download.pytorch.org/whl/cu126

5.cosyvoice安装的时候,由于是windows,不支持ttsfrd。

所以安装时使用命令:
conda install -c conda-forge pynini=2.1.5 && pip install WeTextProcessing==1.0.2

运行项目代码时会出现failed to import ttsfrd, use WeTextProcessing instead,这个在cosyvoice项目的问题提交中提到过。算是官方找到的答案。

6.安装依赖库的时候,我没有按照官网的requirements.txt安装,原因是我的CUDA12.6,python3.11,官方的部分依赖版本太低。

经验就是先安装torch-2.3.0+cu121-cp312-cp312-win_amd64.whl,然后安装pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126 然后这里要先安装modelscope包(从国内modelscope下载sensevoice和cosyvoice的模型文件。注意要修改modelscope的默认下载路径,不然会都下载到C盘,方法是设置环境变量MODELSCOPE_CACHE=d:.cache\modelscope\)。然后运行项目py文件,缺什么补什么。

下面是我导出的我的环境中的依赖包,以备不时之需。
This file may be used to create an environment using:
$ conda create --name --file
platform: win-64
created-by: conda 24.11.2
absl-py=2.1.0=pypi_0
aiofiles=23.2.1=pypi_0
aiohappyeyeballs=2.4.6=pypi_0
aiohttp=3.11.12=pypi_0
aiosignal=1.3.2=pypi_0
alembic=1.14.1=pypi_0
aliyun-python-sdk-core=2.16.0=pypi_0
aliyun-python-sdk-kms=2.16.5=pypi_0
altair=5.5.0=pypi_0
annotated-types=0.7.0=pypi_0
antlr4-python3-runtime=4.9.3=pypi_0
anyio=4.8.0=pypi_0
argon2-cffi=23.1.0=pypi_0
argon2-cffi-bindings=21.2.0=pypi_0
arrow=1.3.0=pypi_0
asttokens=3.0.0=pypi_0
async-lru=2.0.4=pypi_0
attrs=25.1.0=pypi_0
audioread=3.0.1=pypi_0
autopage=0.5.2=pypi_0
babel=2.17.0=pypi_0
beautifulsoup4=4.13.3=pypi_0
bibtexparser=2.0.0b8=pypi_0
blas=1.0=mkl
bleach=6.2.0=pypi_0
bzip2=1.0.8=h2bbff1b_6
ca-certificates=2025.1.31=h56e8100_0
cachetools=5.5.1=pypi_0
cairo=1.16.0=hc68a040_5
certifi=2025.1.31=pypi_0
cffi=1.17.1=pypi_0
cfgv=3.4.0=pypi_0
charset-normalizer=3.4.1=pypi_0
click=8.1.8=pypi_0
cliff=4.8.0=pypi_0
clldutils=3.24.1=pypi_0
cmaes=0.11.1=pypi_0
cmd2=2.5.11=pypi_0
colorama=0.4.6=pypi_0
coloredlogs=15.0.1=pypi_0
colorlog=6.9.0=pypi_0
comm=0.2.2=pypi_0
conformer=0.3.2=pypi_0
contourpy=1.3.1=pypi_0
crcmod=1.7=pypi_0
cryptography=44.0.1=pypi_0
csvw=3.5.1=pypi_0
cycler=0.12.1=pypi_0
cython=3.0.12=pypi_0
dashscope=1.22.1=pypi_0
debugpy=1.8.12=pypi_0
decorator=5.1.1=pypi_0
defusedxml=0.7.1=pypi_0
diffusers=0.32.2=pypi_0
distlib=0.3.9=pypi_0
dlfcn-win32=1.4.1=h63175ca_0
dlinfo=2.0.0=pypi_0
editdistance=0.8.1=pypi_0
einops=0.8.1=pypi_0
executing=2.2.0=pypi_0
expat=2.6.4=he0c23c2_0
fastapi=0.115.8=pypi_0
fastjsonschema=2.21.1=pypi_0
ffmpy=0.5.0=pypi_0
filelock=3.13.1=pypi_0
flatbuffers=25.2.10=pypi_0
font-ttf-dejavu-sans-mono=2.37=hab24e00_0
font-ttf-inconsolata=3.000=h77eed37_0
font-ttf-source-code-pro=2.038=h77eed37_0
font-ttf-ubuntu=0.83=h77eed37_3
fontconfig=2.14.1=hb33846d_3
fonts-conda-ecosystem=1=0
fonts-conda-forge=1=0
fonttools=4.56.0=pypi_0
fqdn=1.5.1=pypi_0
freetype=2.12.1=ha860e81_0
fribidi=1.0.10=h8d14728_0
frozenlist=1.5.0=pypi_0
fsspec=2024.6.1=pypi_0
funasr=1.2.4=pypi_0
gdown=5.2.0=pypi_0
getopt-win32=0.1=hcfcfb64_1
glib=2.78.4=hd77b12b_0
glib-tools=2.78.4=hd77b12b_0
gradio=5.16.0=pypi_0
gradio-client=1.7.0=pypi_0
graphite2=1.3.13=h63175ca_1003
graphviz=7.1.0=h51cb2cd_0
greenlet=3.1.1=pypi_0
grpcio=1.70.0=pypi_0
gts=0.7.6=h6b5321d_4
h11=0.14.0=pypi_0
harfbuzz=6.0.0=h196d34a_1
httpcore=1.0.7=pypi_0
httpx=0.28.1=pypi_0
huggingface-hub=0.28.1=pypi_0
humanfriendly=10.0=pypi_0
hydra-colorlog=1.2.0=pypi_0
hydra-core=1.3.2=pypi_0
hydra-optuna-sweeper=1.2.0=pypi_0
hyperpyyaml=1.2.2=pypi_0
icu=72.1=h63175ca_0
identify=2.6.7=pypi_0
idna=3.10=pypi_0
importlib-metadata=8.6.1=pypi_0
importlib-resources=6.5.2=pypi_0
inflect=7.3.1=pypi_0
iniconfig=2.0.0=pypi_0
intel-openmp=2023.1.0=h59b6b97_46320
ipykernel=6.29.5=pypi_0
ipython=8.32.0=pypi_0
ipywidgets=8.1.5=pypi_0
isodate=0.7.2=pypi_0
isoduration=20.11.0=pypi_0
jaconv=0.4.0=pypi_0
jamo=0.4.1=pypi_0
jbig=2.1=h8d14728_2003
jedi=0.19.2=pypi_0
jieba=0.42.1=pypi_0
jinja2=3.1.4=pypi_0
jmespath=0.10.0=pypi_0
joblib=1.4.2=pypi_0
jpeg=9e=hcfcfb64_3
json5=0.10.0=pypi_0
jsonpointer=3.0.0=pypi_0
jsonschema=4.23.0=pypi_0
jsonschema-specifications=2024.10.1=pypi_0
jupyter-client=8.6.3=pypi_0
jupyter-core=5.7.2=pypi_0
jupyter-events=0.12.0=pypi_0
jupyter-lsp=2.2.5=pypi_0
jupyter-server=2.15.0=pypi_0
jupyter-server-terminals=0.5.3=pypi_0
jupyterlab=4.3.5=pypi_0
jupyterlab-pygments=0.3.0=pypi_0
jupyterlab-server=2.27.3=pypi_0
jupyterlab-widgets=3.0.13=pypi_0
kaldiio=2.18.0=pypi_0
kiwisolver=1.4.8=pypi_0
language-tags=1.2.0=pypi_0
lazy-loader=0.4=pypi_0
lerc=2.2.1=h0e60522_0
libdeflate=1.7=h8ffe710_5
libexpat=2.6.4=he0c23c2_0
libffi=3.4.4=hd77b12b_1
libgd=2.3.3=ha43c60c_1
libglib=2.78.4=ha17d25a_0
libiconv=1.17=hcfcfb64_2
libpng=1.6.39=h8cc25b3_0
librosa=0.10.2.post1=pypi_0
libtiff=4.3.0=h0c97f57_1
libwebp-base=1.5.0=h3b0e114_0
libxml2=2.13.5=h24da03e_0
lightning=2.5.0.post0=pypi_0
lightning-utilities=0.12.0=pypi_0
llvmlite=0.44.0=pypi_0
lxml=5.3.1=pypi_0
lz4-c=1.9.3=h8ffe710_1
mako=1.3.9=pypi_0
markdown=3.7=pypi_0
markdown-it-py=3.0.0=pypi_0
markupsafe=2.1.5=pypi_0
matcha-tts=0.0.7.2=pypi_0
matplotlib=3.10.0=pypi_0
matplotlib-inline=0.1.7=pypi_0
mdurl=0.1.2=pypi_0
mistune=3.1.1=pypi_0
mkl=2023.1.0=h6b88ed4_46358
mkl-service=2.4.0=py311h827c3e9_2
mkl_fft=1.3.11=py311h827c3e9_0
mkl_random=1.2.8=py311hea22821_0
modelscope=1.22.3=pypi_0
more-itertools=10.6.0=pypi_0
mpmath=1.3.0=pypi_0
msgpack=1.1.0=pypi_0
multidict=6.1.0=pypi_0
narwhals=1.26.0=pypi_0
nbclient=0.10.2=pypi_0
nbconvert=7.16.6=pypi_0
nbformat=5.10.4=pypi_0
nest-asyncio=1.6.0=pypi_0
networkx=3.3=pypi_0
nodeenv=1.9.1=pypi_0
notebook=7.3.2=pypi_0
notebook-shim=0.2.4=pypi_0
numba=0.61.0=pypi_0
numpy=1.26.4=pypi_0
nvidia-cuda-runtime-cu12=12.8.57=pypi_0
omegaconf=2.3.0=pypi_0
onnxruntime=1.18.0=pypi_0
openai-whisper=20231117=pypi_0
openfst=1.8.2=h91493d7_2
openssl=3.4.1=ha4e3fda_0
optuna=2.10.1=pypi_0
orjson=3.10.15=pypi_0
oss2=2.19.1=pypi_0
overrides=7.7.0=pypi_0
packaging=24.2=pypi_0
pandas=2.2.3=pypi_0
pandocfilters=1.5.1=pypi_0
pango=1.50.12=hdffb7b3_1
parso=0.8.4=pypi_0
pbr=6.1.1=pypi_0
pcre2=10.42=h0ff8eda_1
phonemizer=3.3.0=pypi_0
pillow=10.4.0=pypi_0
pip=25.0=py311haa95532_0
pixman=0.44.2=had0cd8c_0
platformdirs=4.3.6=pypi_0
pluggy=1.5.0=pypi_0
pooch=1.8.2=pypi_0
pre-commit=4.1.0=pypi_0
prettytable=3.14.0=pypi_0
prometheus-client=0.21.1=pypi_0
prompt-toolkit=3.0.50=pypi_0
propcache=0.2.1=pypi_0
protobuf=5.29.3=pypi_0
psutil=7.0.0=pypi_0
pure-eval=0.2.3=pypi_0
pyarrow=19.0.0=pypi_0
pycparser=2.22=pypi_0
pycryptodome=3.21.0=pypi_0
pydantic=2.10.6=pypi_0
pydantic-core=2.27.2=pypi_0
pydub=0.25.1=pypi_0
pygments=2.19.1=pypi_0
pyjwt=2.8.0=pypi_0
pylatexenc=2.10=pypi_0
pynini=2.1.5=py311h005e61a_6
pynndescent=0.5.13=pypi_0
pyparsing=3.2.1=pypi_0
pyperclip=1.9.0=pypi_0
pyreadline3=3.5.4=pypi_0
pysocks=1.7.1=pypi_0
pytest=8.3.4=pypi_0
python=3.11.11=h4607a30_0
python-dateutil=2.9.0.post0=pypi_0
python-dotenv=1.0.1=pypi_0
python-json-logger=3.2.1=pypi_0
python-multipart=0.0.20=pypi_0
python_abi=3.11=2_cp311
pytorch-lightning=2.5.0.post0=pypi_0
pytorch-wpe=0.0.1=pypi_0
pytz=2025.1=pypi_0
pywin32=308=pypi_0
pywinpty=2.0.15=pypi_0
pyworld=0.3.4=pypi_0
pyyaml=6.0.2=pypi_0
pyzmq=26.2.1=pypi_0
rdflib=7.1.3=pypi_0
referencing=0.36.2=pypi_0
regex=2024.11.6=pypi_0
requests=2.32.3=pypi_0
rfc3339-validator=0.1.4=pypi_0
rfc3986=1.5.0=pypi_0
rfc3986-validator=0.1.1=pypi_0
rich=13.9.4=pypi_0
rootutils=1.0.7=pypi_0
rpds-py=0.22.3=pypi_0
ruamel-yaml=0.18.10=pypi_0
ruamel-yaml-clib=0.2.12=pypi_0
ruff=0.9.6=pypi_0
safehttpx=0.1.6=pypi_0
safetensors=0.5.2=pypi_0
scikit-learn=1.6.1=pypi_0
scipy=1.15.1=pypi_0
seaborn=0.13.2=pypi_0
segments=2.2.1=pypi_0
semantic-version=2.10.0=pypi_0
send2trash=1.8.3=pypi_0
sentencepiece=0.2.0=pypi_0
setuptools=72.1.0=py311haa95532_0
shellingham=1.5.4=pypi_0
six=1.17.0=pypi_0
sniffio=1.3.1=pypi_0
soundfile=0.13.1=pypi_0
soupsieve=2.6=pypi_0
soxr=0.5.0.post1=pypi_0
sqlalchemy=2.0.38=pypi_0
sqlite=3.45.3=h2bbff1b_0
stack-data=0.6.3=pypi_0
starlette=0.45.3=pypi_0
stevedore=5.4.0=pypi_0
sympy=1.13.1=pypi_0
tabulate=0.9.0=pypi_0
tbb=2021.8.0=h59b6b97_0
tensorboard=2.19.0=pypi_0
tensorboard-data-server=0.7.2=pypi_0
tensorboardx=2.6.2.2=pypi_0
tensorrt=10.8.0.43=pypi_0
tensorrt-cu12=10.8.0.43=pypi_0
tensorrt-cu12-bindings=10.8.0.43=pypi_0
tensorrt-cu12-libs=10.8.0.43=pypi_0
terminado=0.18.1=pypi_0
threadpoolctl=3.5.0=pypi_0
tiktoken=0.9.0=pypi_0
tinycss2=1.4.0=pypi_0
tk=8.6.14=h0416ee5_0
tokenizers=0.19.1=pypi_0
tomlkit=0.13.2=pypi_0
torch=2.6.0+cu126=pypi_0
torch-complex=0.4.4=pypi_0
torchaudio=2.6.0+cu126=pypi_0
torchmetrics=1.6.1=pypi_0
torchvision=0.21.0+cu126=pypi_0
tornado=6.4.2=pypi_0
tqdm=4.67.1=pypi_0
traitlets=5.14.3=pypi_0
transformers=4.40.1=pypi_0
typeguard=4.4.1=pypi_0
typer=0.15.1=pypi_0
types-python-dateutil=2.9.0.20241206=pypi_0
typing-extensions=4.12.2=pypi_0
tzdata=2025.1=pypi_0
ucrt=10.0.22621.0=h57928b3_1
umap-learn=0.5.7=pypi_0
unidecode=1.3.8=pypi_0
uri-template=1.3.0=pypi_0
uritemplate=4.1.1=pypi_0
urllib3=2.3.0=pypi_0
uvicorn=0.34.0=pypi_0
vc=14.42=haa95532_4
vc14_runtime=14.42.34433=h6356254_24
virtualenv=20.29.2=pypi_0
vs2015_runtime=14.42.34433=hfef2bbc_24
wcwidth=0.2.13=pypi_0
webcolors=24.11.1=pypi_0
webencodings=0.5.1=pypi_0
websocket-client=1.8.0=pypi_0
websockets=11.0.3=pypi_0
werkzeug=3.1.3=pypi_0
wetextprocessing=1.0.2=pypi_0
wget=3.2=pypi_0
wheel=0.45.1=py311haa95532_0
widgetsnbextension=4.0.13=pypi_0
xz=5.6.4=h4754444_1
yarl=1.18.3=pypi_0
zhipuai=2.1.5.20250106=pypi_0
zipp=3.21.0=pypi_0
zlib=1.2.13=h8cc25b3_1
zstd=1.5.0=h6255e5f_0

7.语音识别很快,6G显卡很快识别。

语音合成的时候要注意cosyvoice要使用cosyvoice2,不然用声音克隆会很慢,如果使用默认的语音模型还可以接受。如果是克隆,要选cosyvoice2

from cosyvoice.cli.cosyvoice import CosyVoice2
......
cosyvoice = CosyVoice2('pretrained_models/CosyVoice2-0.5B') # 这个模型很快,占用资源也很少,之前我

用版本1,6G显卡+8G共享显卡,用来10多个G。用了版本2,之后只有了4G显卡,瞬间就可以合成语音,当然效果可能用0.5B的差一点点。

8.另外,原项目中model_chat函数返回类型不对

def model_chat(audio, text, history: Optional[History]
) -> Generator[History, Tuple[int,np.ndarray], str]

要改成Generator[History, Tuple[int,np.ndarray], str]
还有就是下面代码也改动了,一个是声音克隆,一个是使用默认声音模型。
代码1:

text_list = [tts_text]
for i in text_list:
for output in cosyvoice.inference_zero_shot(i, prompt_text, prompt_speech_16k): #声音克隆
yield (22050, output['tts_speech'].numpy().flatten())

代码2:

for chun_text in text_list:
# inference_sft:预定义音色,cosyvoice_instruc或者inference_sft模型 , nference_cross_lingual:细粒度控制,inference_instruct2:提示词控制
for out in cosyvoice.inference_sft(chun_text, speaker_name):
yield (22050, out['tts_speech'].numpy().flatten())

其他问题:
之前使用别人代码,克隆的声音只有几秒钟,后来改成版本2,克隆的声音好像不受限制了。不知道是不是代码的问题。

posted @   Arlan  阅读(60)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示