当前位置: 首页 > news >正文

Windows避坑部署CosyVoice多语言大语言模型

#工作记录

前言

在实际部署与应用过程中,项目的运行环境适配性对其稳定性与功能性的发挥至关重要。CosyVoice 项目虽具备强大的语音处理能力,但受限于开发与测试环境的侧重方向,其对运行环境存在特定要求

该项目在 Linux 和 Docker 生态下的兼容性与优化程度较高,能够较为流畅地实现各项功能;然而,在 Windows 系统环境中,尤其是纯 Windows 本地部署场景下,由于系统架构差异、库版本兼容性等因素影响,会面临诸多适配难题。

以下将针对这些局限性,详细记录在纯Windows环境下的部署及报错排查与处理方法(详见文章末尾的引用资料内)。

一、新建conda虚拟环境

在搭建 CosyVoice 项目运行环境时,需新建 conda 虚拟环境,具体操作要求如下:​

  1. Python 版本选择:选择 Python 3.10 或 Python 3.11 版本。此选择基于项目核心依赖库的适配性,能确保项目运行所需的库正常安装与运行。​
  2. 环境命名:将新建的 conda 虚拟环境命名为 CosyVoice,便于后续对项目环境的管理与识别。

#技术笔记

  • 为何采用 conda 虚拟环境进行部署?​

CosyVoice 项目的依赖管理中,pynini是关键包之一。

在 Windows 系统环境下,截至目前,pynini仅能通过 conda 命令实现稳定且流畅的安装。

若使用virtualenv虚拟环境,无法保证pynini的正确安装。

而pynini安装失败,将直接导致项目另一重要依赖wetextprocessing无法完整安装,进而影响整个项目的正常运行,因此 conda 虚拟环境是更优选择。​

  • 为何限定 Python 版本为 3.10 或 3.11?​

CosyVoice 项目需要安装DeepSpeed库以提升训练性能。

在 Windows 系统下,DeepSpeed目前仅支持通过.whl文件进行安装。

且现有DeepSpeed .whl文件资源,仅提供了适配 Python 3.9或 Python 3.10 和 Python 3.11 三个版本的安装包。

项目官方推荐版本为Python 3.10 ,低于3.10版本的Python可能对某些较新的特性支持不够好。

总之,若选择其他 Python 版本,可能将无法找到适配的DeepSpeed安装文件,导致无法正常安装DeepSpeed,影响项目训练环节的功能实现 。

二、安装pynini

这里为了照顾到后续wetextprocessing的顺利安装,需要指定以下版本:

​​​​​​​conda install -y -c conda-forge pynini==2.1.5

激活CosyVoice虚拟环境后安装。

三、克隆项目

项目地址:

FunAudioLLM/CosyVoice:多语言大语音生成模型,提供推理、训练和部署全栈能力。

 克隆完成后用PyCharm或VS Code打开项目。

三、修改和拆分requirements.txt文件分步进行安装

复制requirements.txt文件副本,拆分requirements.txt文件为以下两个单独的文件:

  1. conda_requirements_win.txt
  2. pip_requirements_win.txt

1、conda_requirements_win.txt

conda_requirements_win.txt使用conda命令自动处理依赖关系安装,文件内容修改为:

_r-mutex=1.0.0
aiofiles=22.1.0
annotated-types=0.6.0
antlr-python-runtime=4.9.3
anyio=4.7.0
appdirs=1.4.4
argon2-cffi=21.3.0
argon2-cffi-bindings=21.2.0
arrow-cpp=19.0.0
asttokens=3.0.0
async-lru=2.0.4
async-timeout=5.0.1
audioread=3.0.1
aws-c-auth=0.6.19
aws-c-cal=0.5.20
aws-c-common=0.8.5
aws-c-compression=0.2.16
aws-c-event-stream=0.2.15
aws-c-http=0.6.25
aws-c-io=0.13.10
aws-c-mqtt=0.7.13
aws-c-s3=0.1.51
aws-c-sdkutils=0.1.6
aws-checksums=0.1.13
aws-crt-cpp=0.18.16
aws-sdk-cpp=1.11.212
babel=2.16.0
beautifulsoup4=4.12.3
blas=1.0
bleach=6.2.0
boost-cpp=1.82.0
bottleneck=1.4.2
brotli-python=1.0.9
bzip2=1.0.8
c-ares=1.19.1
ca-certificates=2025.4.26
cairo=1.16.0
certifi=2025.4.26
cffi=1.17.1
click=8.1.8
colorama=0.4.6
comm=0.2.1
cryptography=44.0.1
cudatoolkit=11.8.0
cython=3.0.11
debugpy=1.8.11
decorator=5.1.1
defusedxml=0.7.1
deprecated=1.2.13
diffusers-torch=0.18.2
dill=0.3.6
dlfcn-win32=1.4.1
dnspython=2.4.2
email-validator=2.2.0
email_validator=2.2.0
exceptiongroup=1.2.0
executing=0.8.3
expat=2.7.0
ffmpeg=4.2.2
font-ttf-dejavu-sans-mono=2.37
font-ttf-inconsolata=3.000
font-ttf-source-code-pro=2.038
font-ttf-ubuntu=0.83
fontconfig=2.14.1
fonts-conda-ecosystem=1
fonts-conda-forge=1
freeglut=3.4.0
freetype=2.13.3
fribidi=1.0.10
getopt-win32=0.1
gflags=2.2.2
glib=2.78.4
glib-tools=2.78.4
glog=0.5.0
graphite2=1.3.13
graphviz=7.1.0
gst-plugins-base=1.22.3
gstreamer=1.22.3
gts=0.7.6
h11=0.14.0
harfbuzz=6.0.0
httpcore=1.0.2
httptools=0.6.4
httpx=0.27.0
huggingface_accelerate=1.4.0
hydra-core=1.3.2
icc_rt=2022.1.0
icu=70.1
importlib-metadata=8.5.0
intel-openmp=2023.1.0
ipykernel=6.29.5
jedi=0.19.2
jinja2=3.1.6
joblib=1.4.2
jpeg=9e
json5=0.9.25
jsonschema=4.23.0
jupyter-lsp=2.2.5
jupyter_client=8.6.3
jupyter_core=5.7.2
jupyter_events=0.12.0
jupyter_server=2.15.0
jupyter_server_terminals=0.5.3
jupyterlab=4.3.4
jupyterlab_pygments=0.3.0
jupyterlab_server=2.27.3
kiwisolver=1.4.8
krb5=1.20.1
lame=3.100
lazy_loader=0.4
lcms2=2.16
lerc=4.0.0
libabseil=20250127.0
libboost=1.82.0
libbrotlicommon=1.0.9
libbrotlidec=1.0.9
libbrotlienc=1.0.9
libclang=15.0.7
libclang13=15.0.7
libcurl=8.12.1
libdeflate=1.22
libevent=2.1.12
libexpat=2.7.0
libffi=3.4.4
libflac=1.4.3
libgd=2.3.3
libglib=2.78.4
libgrpc=1.71.0
libiconv=1.18
libogg=1.3.5
libopus=1.5.2
libpng=1.6.39
libprotobuf=5.29.3
libre2-11=2024.07.02
libsodium=1.0.18
libsqlite=3.49.1
libssh2=1.11.1
libthrift=0.15.0
libtiff=4.7.0
libtorch=2.5.1
libuv=1.48.0
libvorbis=1.3.7
libwebp=1.5.0
libwebp-base=1.5.0
libxml2=2.13.8
libxslt=1.1.41
libzlib=1.2.13
llvmlite=0.44.0
lz4-c=1.9.4
m2w64-bwidget=1.9.10
m2w64-bzip2=1.0.6
m2w64-expat=2.1.1
m2w64-fftw=3.3.4
m2w64-flac=1.3.1
m2w64-gcc-libgfortran=5.3.0
m2w64-gcc-libs=5.3.0
m2w64-gcc-libs-core=5.3.0
m2w64-gettext=0.19.7
m2w64-gmp=6.1.0
m2w64-gsl=2.1
m2w64-libiconv=1.14
m2w64-libjpeg-turbo=1.4.2
m2w64-libogg=1.3.2
m2w64-libpng=1.6.21
m2w64-libsndfile=1.0.26
m2w64-libsodium=1.0.10
m2w64-libtiff=4.0.6
m2w64-libvorbis=1.3.5
m2w64-libwinpthread-git=5.0.0.4634.697f757
m2w64-libxml2=2.9.3
m2w64-mpfr=3.1.4
m2w64-openblas=0.2.19
m2w64-pcre=8.38
m2w64-speex=1.2rc2
m2w64-speexdsp=1.2rc3
m2w64-tcl=8.6.5
m2w64-tk=8.6.5
m2w64-tktable=2.10
m2w64-wineditline=2.101
m2w64-xz=5.2.2
m2w64-zeromq=4.1.4
m2w64-zlib=1.2.8
markdown-it-py=2.2.0
matplotlib-inline=0.1.6
mdurl=0.1.0
mistune=3.1.2
mkl=2023.1.0
mkl-service=2.4.0
mkl_fft=1.3.11
mkl_random=1.2.8
mpg123=1.32.9
mpmath=1.3.0
msgpack-python=1.0.3
msys2-conda-epoch=20160418
multiprocess=0.70.14
nbclient=0.10.2
nbconvert-core=7.16.6
nbformat=5.10.4
nest-asyncio=1.6.0
notebook=7.3.2
notebook-shim=0.2.4
numexpr=2.10.1
omegaconf=2.3.0
openfst=1.8.2
openjpeg=2.5.2
openssl=3.5.0
opentelemetry-api=1.30.0
orc=2.1.1
overrides=7.4.0
pandocfilters=1.5.0
pango=1.50.12
pcre2=10.42
pixman=0.46.0
platformdirs=4.3.7
ply=3.11
pooch=1.4.0
prometheus_client=0.21.1
prompt_toolkit=3.0.43
propcache=0.3.1
pure_eval=0.2.2
pycparser=2.21
pydub=0.25.1
pynini=2.1.5
pyqt=5.15.10
pyqt5-sip=12.13.0
pysocks=1.7.1
python=3.10.16
python-dateutil=2.9.0post0
python-dotenv=1.1.0
python-fastjsonschema=2.20.0
python-json-logger=3.2.1
python-tzdata=2025.2
python-xxhash=3.5.0
python_abi=3.10
pywin32=308
pywinpty=2.0.15
pyworld=0.3.5
pyzmq=26.2.0
qt-main=5.15.8
qtwebkit=5.212
r-base=3.6.1
re2=2024.07.02
referencing=0.30.2
regex=2024.11.6
rich-toolkit=0.11.3
rpds-py=0.22.3
safehttpx=0.1.6
safetensors=0.5.3
scikit-learn=1.6.1
send2trash=1.8.2
sip=6.7.12
sleef=3.5.1
snappy=1.2.1
soxr=0.1.3
soxr-python=0.5.0.post1
sqlite=3.45.3
stack_data=0.2.0
standard-aifc=3.13.0
standard-sunau=3.13.0
terminado=0.17.1
tinycss2=1.4.0
tk=8.6.14
tokenizers=0.21.0
tomli=2.0.1
tornado=6.4.2
typer=0.15.3
typer-slim=0.15.3
typing_extensions=4.12.2
tzdata=2025b
ucrt=10.0.22621.0
unicodedata2=15.1.0
utf8proc=2.6.1
uvicorn-standard=0.32.1
vc=14.42
vc14_runtime=14.42.34438
vs2015_runtime=14.42.34438
watchfiles=0.24.0
wcwidth=0.2.5
webencodings=0.5.1
websocket-client=1.8.0
wheel=0.45.1
win_inet_pton=1.1.0
winpty=0.4.3
wrapt=1.17.0
xxhash=0.8.0
xz=5.6.4
yaml=0.2.5
zeromq=4.3.5
zipp=3.21.0
zlib=1.2.13
zstd=1.5.6

2、pip_requirements_win.txt

pip_requirements_win.txt使用pip命令安装,文件内容修改(拆分)为:

absl-py==2.2.2
addict==2.4.0
aiohappyeyeballs==2.6.1
aiohttp==3.11.18
aiosignal==1.3.2
aliyun-python-sdk-core==2.16.0
aliyun-python-sdk-kms==2.16.5
altair==5.5.0
attrs==25.3.0
backcall==0.2.0
blinker==1.9.0
brotli==3.0.1
brotlipy==0.7.1
cachetools==5.5.2
certifi==2025.4.26
cffi==1.17.1
charset-normalizer==3.4.2
cnstd==1.2.5.2
coloredlogs==15.0.1
conformer==0.3.2
contourpy==1.3.2
crcmod==1.7
cycler==0.12.1
datasets==2.18.0
deepspeed==0.16.5
diffusers==0.27.2
einops==0.8.1
fastapi==0.115.12
fastapi-cli==0.0.4
filelock==3.18.0
flask==3.1.1
flask-cors==5.0.1
flatbuffers==25.2.10
fonttools==4.57.0
frozenlist==1.6.0
fsspec==2024.2.0
gast==0.6.0
gdown==5.1.0
glob2==0.7
gmpy2==2.1.2
google-auth==2.40.1
google-auth-oauthlib==1.0.0
gradio==5.29.0
gradio-client==1.10.0
groovy==0.1.2
grpcio==1.57.0
grpcio-tools==1.57.0
hjson==3.1.0
huggingface-hub==0.31.2
humanfriendly==10.0
hyperpyyaml==1.2.2
idna==3.10
importlib-resources==6.5.2
inflect==7.3.1
intel-cmplr-lib-rt==2025.1.1
intel-cmplr-lic-rt==2025.1.1
itsdangerous==2.2.0
jmespath==0.10.0
librosa==0.10.2
lightning==2.2.4
lightning-utilities==0.14.3
markdown==3.8
markupsafe==2.1.5
matplotlib==3.10.3
modelscope==1.15.0
more-itertools==10.7.0
multidict==6.4.3
narwhals==1.39.0
networkx==3.1
ninja==1.11.1.4
numba==0.61.2
numpy==1.24.0
nvidia-cuda-runtime-cu12==12.9.37
nvidia-ml-py==12.575.51
oauthlib==3.2.2
onnx==1.17.0
onnxruntime==1.21.1
onnxruntime-gpu==1.21.1
openai-whisper==20240930
opencv-python==4.11.0.86
orjson==3.10.16
oss2==2.19.1
packaging==23.0
pandas==1.5.3
parso==0.8.3
peft==0.15.2
pexpect==4.8.0
pickleshare==0.7.5
pillow==9.4.0
pip==25.1.1
pluggy==1.0.0
prompt-toolkit==3.0.36
protobuf==4.25.0
psutil==5.9.0
ptyprocess==0.7.0
py-cpuinfo==9.0.0
pyarrow==18.1.0
pyarrow-hotfix==0.7
pyasn1==0.6.1
pyasn1-modules==0.4.2
pybind11==2.13.6
pyclipper==1.3.0.post6
pycosat==0.6.6
pycryptodome==3.22.0
pydantic==2.7.0
pydantic-core==2.18.1
pygments==2.15.1
pynvml==12.0.0
pyparsing==3.2.3
pyreadline3==3.5.4
python-multipart==0.0.18
pytorch-lightning==2.3.3
pytz==2025.2
pyyaml==6.0
rapidocr-onnxruntime==1.3.25
requests-oauthlib==2.0.0
rich==13.7.1
rsa==4.9.1
ruamel-yaml==0.18.10
ruamel-yaml-clib==0.2.12
ruff==0.11.6
scipy==1.15.2
seaborn==0.13.2
semantic-version==2.10.0
setuptools==80.4.0
shapely==2.1.0
shellingham==1.5.4
simplejson==3.20.1
six==1.17.0
sniffio==1.3.1
sortedcontainers==2.4.0
soundfile==0.12.1
soupsieve==2.4
starlette==0.46.2
sympy==1.13.1
tbb==2022.1.0
tcmlib==1.3.0
tensorboard==2.14.0
tensorboard-data-server==0.7.2
tensorrt-cu12-libs==10.10.0.31
threadpoolctl==3.6.0
tiktoken==0.9.0
tn==0.0.4
tomlkit==0.12.0
toolz==0.12.0
torch==2.6.0+cu124
torchaudio==2.6.0+cu124
torchmetrics==1.7.1
torchvision==0.21.0+cu124
tqdm==4.65.0
traitlets==5.7.1
transformers==4.51.3
ttsfrd==0.1.0
ttsfrd-dependency==0.1
typeguard==4.4.2
types-dataclasses==0.6.6
typing-extensions==4.13.2
ujson==5.10.0
ultralytics==8.3.127
ultralytics-thop==2.0.14
umf==0.10.0
unidecode==1.4.0
urllib3==2.4.0
uvicorn==0.30.0
websockets==11.0.3
werkzeug==3.1.3
wetextprocessing==1.0.3
wget==3.2
yapf==0.43.0
yarl==1.20.0
zstandard==0.19.0

四、安装*requirements*

(一)conda命令安装conda_requirements_win.txt

conda install --file conda_requirements_win.txt

 

 (二)pip命令安装pip_requirements_win.txt

pip install --use-pep517 -r pip_requirements_win.txt

pip install --requirement pip_requirements_win.txt

pip install -r pip_requirements_win.txt

 

 

五、安装DeepSpeed 

DeepSpeed的.whl文件下载地址之一:

车轮 - DeepSpeed

下载 python3.11的deepspeed-0.16.5-py3-none-any.whl文件,移动到项目根目录后,从本地安装。

pip install deepspeed-0.16.5-py3-none-any.whl

 到这里,依赖基本顺利安装完毕,然后我们需要验证一下torch的CUDA GPU支持:

import torch  # 导入 PyTorch 库print("PyTorch 版本:", torch.__version__)  # 打印 PyTorch 的版本号# 检查 CUDA 是否可用,并设置设备("cuda:0" 或 "cpu")
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print("设备:", device)  # 打印当前使用的设备
print("CUDA 可用:", torch.cuda.is_available())  # 打印 CUDA 是否可用
print("cuDNN 已启用:", torch.backends.cudnn.enabled)  # 打印 cuDNN 是否已启用# 打印 PyTorch 支持的 CUDA 和 cuDNN 版本
print("支持的 CUDA 版本:", torch.version.cuda)
print("cuDNN 版本:", torch.backends.cudnn.version())# 创建两个随机张量(默认在 CPU 上)
x = torch.rand(5, 3)
y = torch.rand(5, 3)# 将张量移动到指定设备(CPU 或 GPU)
x = x.to(device)
y = y.to(device)# 对张量进行逐元素相加
z = x + y# 打印结果
print("张量 z 的值:")
print(z)  # 输出张量 z 的内容

输出应该是类似这样的: 

六、 下载模型

新建一个简单的.py文件,比如model_down.py,复制并粘贴项目README.MD文档中给出的如下代码:

# SDK模型下载
from modelscope import snapshot_download
snapshot_download('iic/CosyVoice2-0.5B', local_dir='pretrained_models/CosyVoice2-0.5B')
snapshot_download('iic/CosyVoice-300M', local_dir='pretrained_models/CosyVoice-300M')
snapshot_download('iic/CosyVoice-300M-SFT', local_dir='pretrained_models/CosyVoice-300M-SFT')
snapshot_download('iic/CosyVoice-300M-Instruct', local_dir='pretrained_models/CosyVoice-300M-Instruct')
snapshot_download('iic/CosyVoice-ttsfrd', local_dir='pretrained_models/CosyVoice-ttsfrd')
# git模型下载,请确保已安装git lfs
mkdir -p pretrained_models
git clone https://www.modelscope.cn/iic/CosyVoice2-0.5B.git pretrained_models/CosyVoice2-0.5B
git clone https://www.modelscope.cn/iic/CosyVoice-300M.git pretrained_models/CosyVoice-300M
git clone https://www.modelscope.cn/iic/CosyVoice-300M-SFT.git pretrained_models/CosyVoice-300M-SFT
git clone https://www.modelscope.cn/iic/CosyVoice-300M-Instruct.git pretrained_models/CosyVoice-300M-Instruct
git clone https://www.modelscope.cn/iic/CosyVoice-ttsfrd.git pretrained_models/CosyVoice-ttsfrd

保存并在项目目录下、项目的虚拟环境终端中运行:

python model_down.py

这将下载模型到本地。

SDK模型下载的方式,模型文件会被先下载到C盘,然后再被链接指向到项目目录下 。这可能是由modelscope的特性决定的。

七、安装ttsfrd(文本规范化工具)​​ 

进入模型目录解压特定包并安装ttsfrd

cd pretrained_models/CosyVoice-ttsfrd/
unzip resource.zip -d .
pip install ttsfrd_dependency-0.1-py3-none-any.whl #依赖包
pip install ttsfrd

或者直接:

pip install ttsfrd

​小

  • 这一步的作用​:提升 CosyVoice 的文本规范化性能(更快、更准)。
  • 是否必须?​​ ❌ 不是,可以跳过,不影响基本功能。
  • 如何安装?​​ 按照步骤解压并运行 pip install 即可(确保系统匹配)。

如果我们只是想快速测试 CosyVoice,可以跳过这一步;如果追求更高性能,建议安装 ttsfrd

八、运行程序

python webui.py --port 50000 --model_dir pretrained_models/CosyVoice-300M

或2.05B模型:

python webui.py --port 50000 --model_dir pretrained_models/CosyVoice2-0.5B

 

浏览器访问输出中给出的地址:

如果没有另外指定端口号,一般是:

http://localhost:50000/

然后上传一段英文演讲语言进行跨语种复刻测试:

 

 

测试成功输出,并且没有新的报错输出,说明程序正常运行。 

九、报错的排查和处理

由于该项目对 Linux 和 Docker 环境的适配性更佳,经对比 Linux 系统下的环境依赖配置,以及 Docker 容器内的依赖清单,并结合调试实践发现:项目在较低版本的运行环境中表现更为稳定。在 Windows 系统环境下,部分旧版库的调用逻辑与当前主流调用方式存在显著差异,这使得报错问题在当前项目版本中几乎无法完全规避。若坚持在纯 Windows 系统下部署,且不采用 WSL(Windows Subsystem for Linux)或 Docker 容器等替代方案,需提前做好应对报错排查与处理的准备工作。

以下是整理记录的报错处理方案,以供参考:

windows部署cosyvoice环境依赖文件分享-CSDN博客

可用于快捷安装DeepSpeed的whl地址-CSDN博客 

修复CosyVoice中的ImportError: cannot import name ‘cached_download‘ from ‘huggingface_hub‘报错的记录-CSDN博客

修复CosyVoice中的ModuleNotFoundError: No module named ‘diffusers.models.lora‘记录_no module named 'diffusers-CSDN博客 

LINK : fatal error LNK1181: 无法打开输入文件“aio.lib” test.c LINK : fatal error LNK1181: 无法打开输入文件“cufile.lib-CSDN博客 

消除AttributeError: module ‘ttsfrd‘ has no attribute ‘TtsFrontendEngine‘报错输出的记录_attributeerror: module 'ttsfrd' has no attribute '-CSDN博客 

修复CosyVoice中的NameError: name ‘ZhNormalizer‘ is not defined报错的记录-CSDN博客

 

修复CosyVoice中的NameError: name ‘ZhNormalizer‘ is not defined和ImportError: cannot import name ‘EnN报错的记录-CSDN博客  

相关文章:

Windows避坑部署CosyVoice多语言大语言模型

#工作记录 前言 在实际部署与应用过程中,项目的运行环境适配性对其稳定性与功能性的发挥至关重要。CosyVoice 项目虽具备强大的语音处理能力,但受限于开发与测试环境的侧重方向,其对运行环境存在特定要求。 该项目在 Linux 和 Docker 生态…...

《实现模式》以Golang视角解读 价值观和原则 day 1

为什么阅读实现模式? 为什么阅读《实现模式》?Kent Beck 的《实现模式》其核心思想——编写清晰、易于理解且易于维护的代码,对于软件工程的新手而言,直接深入复杂的设计模式或架构理念可能会感到困惑。《实现模式》则弥合了设计…...

解决 PicGo 上传 GitHub图床及Marp中Github图片编译常见难题指南

[目录] 0.行文概述 1.PicGo图片上传失败 2.*关于在Vscode中Marp图片的编译问题* 3.总结与启示行文概述 写作本文的动机是本人看到了Awesome Marp,发现使用 Markdown \texttt{Markdown} Markdown做PPT若加持一些 CSS , JavaScript \texttt{CSS},\texttt{JavaScript} …...

LeetCode 820 单词的压缩编码题解

LeetCode 820 单词的压缩编码题解 题目描述 题目链接 给定一个单词列表,将其编码为一个索引字符串S,格式为"单词1#单词2#…"。要求当某个单词是另一个单词的后缀时,该单词可以被省略。求最终编码字符串的最小长度。 解题思路 逆…...

Windows软件插件-写wav

下载本插件 本插件,将PCM音频流写入WAV音频文件。或将PCM音频流压缩为ALAW格式,写入WAV文件。可以创作大文件(超过4字节所能表示的大小)。插件类型为DLL,可以在win32和MFC程序中使用。使用本插件创建的ALAW格式WAV音频…...

基于 Spring Boot 瑞吉外卖系统开发(十五)

基于 Spring Boot 瑞吉外卖系统开发(十五) 前台用户登录 在登录页面输入验证码,单击“登录”按钮,页面会携带输入的手机号和验证码向“/user/login”发起请求。 定义UserMapper接口 Mapper public interface UserMapper exte…...

【Linux高级IO】多路转接之epoll

多路复用之epoll 一,认识epoll二,epoll的相关接口1. epoll_create2. epoll_ctl3. epoll_wait 三,epoll的原理四,epoll的两种工作模式(ET和LT)1. 两种工作模式2. 对比ET和LT 五,总结 在了解到sel…...

Java 性能调优全解析:从设计模式到 JVM 的 7 大核心方向实践

引言 在高并发、低延迟的技术场景中,Java 性能优化需要系统化的方法论支撑。本文基于7 大核心优化方向(复用优化、计算优化、结果集优化、资源冲突优化、算法优化、高效实现、JVM 优化),结合权威框架与真实案例,构建从…...

“海外滴滴”Uber的Arm迁移实录:重构大规模基础设施​

云工作负载在性价比上的自然演进路径: Intel ➜ AMD ➜ ARM 不信?来看看 Uber 的做法: 01/Arm架构:云计算新时代 2023 年 2 月,Uber 正式开启了一项战略性迁移:将从本地数据中心迁移至云端,…...

java加强 -File

File类的对象可以代表文件/文件夹,并可以调用其提供的方法对象文件进行操作。 File对象既可以代表文件,也可以代表文件夹。 创建File对象,获取某个文件的信息 语法: File 对象名 new File("需要访问文件的绝对路径&…...

SQL注入 ---04

1 简单的sql注入 要求: 要有sql注入: 1,变量 2,变量要带入数据库进行查询 3,没有对变量进行过滤或者过滤不严谨 mysql> select * from users where id2 limit 0,1; 当我的语句这样写时查寻到的结果 当我修改为&…...

MySQL知识点总结(持续更新)

聚合函数通常用于对数据进行统计和聚合操作。以下是一些常见数据库系统(如 MySQL、PostgreSQL、Oracle、SQL Server 等)中常用的聚合函数: 常见的数据库聚合函数: COUNT():计算指定列中非空值的数量 SELECT COUNT(*) …...

数字信号处理-大实验1.1

MATLAB仿真实验目录 验证实验:常见离散信号产生和实现验证实验:离散系统的时域分析应用实验:语音信号的基音周期(频率)测定 目录 一、常见离散信号产生和实现 1.1 实验目的 1.2 实验要求与内容 1.3 实验…...

Qt操作SQLite数据库教程

Qt 中操作 SQLite 数据库的步骤如下&#xff1a; 1. 添加 SQLite 驱动并打开数据库 #include <QSqlDatabase> #include <QSqlError> #include <QSqlQuery>// 创建数据库连接 QSqlDatabase db QSqlDatabase::addDatabase("QSQLITE"); db.setData…...

【PSINS工具箱】基于工具箱的单独GNSS导航、单独INS导航、两者结合组合导航,三种导航的对比程序。附完整的代码

本文给出基于PSINS工具箱的单独GNSS导航、单独INS导航、两者结合组合导航(153EKF)的程序。并提供三者的轨迹对比、误差对比。 文章目录 运行结果MATLAB代码代码的简单介绍简介2. 平均绝对误差 (MAE)主要模块运行结果 三轴轨迹图: 各轴误差曲线: 命令行窗口的结果输出: …...

开发者的测试复盘:架构分层测试策略与工具链闭环设计实战

摘要‌ 针对测试复盘流于形式、覆盖率虚高等行业痛点&#xff0c;本文提出一套结合架构分层与工具链闭环的解决方案&#xff1a; ‌分层测试策略精准化‌&#xff1a;通过单元测试精准狙击核心逻辑、契约测试驱动接口稳定性、黄金链路固化端到端场景&#xff0c;实现缺陷拦截率…...

手写CString类

学习和理解字符串处理机制&#xff1a;手写 CString 类是深入学习字符串处理和内存管理的有效方式。通过实现构造函数、析构函数、赋值运算符等&#xff0c;能够理解字符串在内存中的存储方式、动态内存分配和释放的原理&#xff0c;以及如何处理字符串的复制、拼接、查找等操作…...

electron结合vue,直接访问静态文件如何跳转访问路径

在最外的app.vue或者index.vue的js模块编写 let refdade ref(1);//刷新&#xff0c;获得请求// 获取完整的查询字符串&#xff08;例如: "?dade/myms"&#xff09;const searchParams new URLSearchParams(window.location.search);// 获取 dade 参数的值&#xf…...

解读RTOS 第七篇 · 驱动框架与中间件集成

1. 引言 在面向生产环境的 RTOS 系统中,硬件驱动框架与中间件层是连接底层外设与上层应用的桥梁。一个模块化、可扩展的驱动框架能够简化外设管理,提升代码可维护性;而丰富的中间件生态则为网络通信、文件系统、图形界面、安全加密等功能提供开箱即用的支持。本章将从驱动模…...

Java GUI开发全攻略:Swing、JavaFX与AWT

Swing 界面开发 Swing 是 Java 中用于创建图形用户界面&#xff08;GUI&#xff09;的库。它提供了丰富的组件&#xff0c;如按钮、文本框、标签等。 import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;public class SwingExa…...

Cursor 0.5版本发布,新功能介绍

Cursor,这款流行的AI编程平台,刚刚在其v0.50更新中推出了一系列新功能。 首先,请将您的Cursor IDE更新到最新版本。当您打开Cursor时,您应该会在屏幕左下方收到关于最新版本发布的通知。 更多上下文控制: 对上下文的精细可见性,以及最新模型的MAX模式。 聊天升级: 导出…...

Android学习总结之Glide自定义三级缓存(实战篇)

一、为什么需要三级缓存 内存缓存&#xff08;Memory Cache&#xff09; 内存缓存旨在快速显示刚浏览过的图片&#xff0c;例如在滑动列表时来回切换的图片。在 Glide 中&#xff0c;内存缓存使用 LruCache 算法&#xff08;最近最少使用&#xff09;&#xff0c;能自动清理长…...

Maven 下载安装与配置教程

## 1. Maven 简介 Maven 是一个项目管理和构建自动化工具&#xff0c;主要用于 Java 项目。Maven 可以帮助开发者管理项目的构建、报告和文档&#xff0c;简化项目依赖管理。 ## 2. 下载 Maven 1. 访问 Maven 官方网站 [https://maven.apache.org/download.cgi](https://maven.…...

一篇解决Redis:持久化机制

目录 认识持久化 持久化方案 RDB&#xff08;Redis DataBase&#xff09; 手动触发 自动触发 小结 AOF(Append-Only File) AOF缓冲区刷新机制 AOF重写机制 AOF重写流程 ​编辑 混合持久化 认识持久化 我们都知道Mysql有四大特征&#xff0c;原子性&#xff0c;持久…...

使用IDEA创建Maven版本的web项目以及lombok的使用

1.新建项目 2.修改pom.xml 3.修改项目结构 4.在main/java下面写一个Servlet测试一下 然后当前页面往下滑 -Dfile.encodingUTF-8编写一句输出语句&#xff0c;测试是否成功部署配置&#xff0c;并选择到正确的位置&#xff1a; 回车以后 再回到idea里面&#xff0c;发现控…...

2025年AI开发者在开发者占比?

AI开发者在全球开发者中的占比目前没有一个统一且精确的数值&#xff0c;但根据行业报告和调研数据&#xff0c;可以给出以下大致的范围和趋势分析&#xff1a; 1. 综合估算范围 全球范围&#xff1a;AI/ML&#xff08;机器学习&#xff09;开发者约占开发者总数的 5%-15%&…...

SpringBoot整合MQTT实战:基于EMQX构建高可靠物联网通信,从零到一实现设备云端双向对话

一、引言 随着物联网(IoT)技术的快速发展&#xff0c;MQTT(Message Queuing Telemetry Transport)协议因其轻量级、低功耗和高效的特点&#xff0c;已成为物联网设备通信的事实标准。本文将详细介绍如何使用SpringBoot框架整合MQTT协议&#xff0c;基于开源MQTT代理EMQX实现设…...

Windows更新暂停七天关键注册表

环境&#xff1a;windows10 工具&#xff1a;procmon 下载地址&#xff1a;https://learn.microsoft.com/zh-cn/sysinternals/downloads/procmon 监控截图&#xff1a; 界面截图&#xff1a; 注&#xff1a; 1.北京时间差8小时 2.至少是从第二天恢复&#xff0c;即至少暂停…...

小白学习java第18天(上):spring

Spring &#xff1a;是一个轻量级&#xff08;一个小依赖就可以实现还不是轻量级&#xff09;的控制反转&#xff08;IOC&#xff09;和面向切面编程&#xff08;AOP&#xff09;的框架&#xff01; 优点&#xff1a; 1.Spring 是一个开源免费的框架&#xff08;容器&#xf…...

用Array.from实现创建一个1-100的数组

一、代码实现 let arr Array.from({length: 100}, (_, i) > i 1); 二、代码分析 1、Array.from(arrayLike, mapFn) &#xff08;1&#xff09;arrayLike 类数组对象&#xff08;如 { length: 100 }&#xff09;本身没有索引属性&#xff08;如 0: undefined, 1: undefi…...

什么是物联网 IoT 平台?

目录 物联网IoT平台的定义 物联网 IoT 平台发展历程 物联网IoT平台数据的特征 物联网IoT平台的处理流程 专为物联网 IoT 平台处理而生的时序数据库 物联网 IoT 平台时序数据处理面临的挑战及解决方案 收益与价值 物联网 IoT 平台企业案例 至数摇光 x TDengine 华自科技…...

PostgREST:无需后端 快速构建RESTful API服务

在现代 Web 开发中&#xff0c;API 已成为连接前后端的核心桥梁&#xff0c;传统的做法是通过后端框架来构建API接口&#xff0c;然后由前后端人员进行联调。 PostgREST是基于无服务器的一种实现方案&#xff0c;允许开发者将PostgreSQL数据库直接暴露为RESTful API&#xff0…...

3天北京旅游规划

北京 第一天应该集中在故宫和市中心区域&#xff0c;比如天安门、人民广场。这样可以体验到北京的历史和政治文化。午餐推荐烤鸭&#xff0c;因为这可是北京的特色。下午可以安排南锣鼓巷&#xff0c;既有古色古香的胡同&#xff0c;又有丰富的美食选择。 第二天的话&#xff0…...

MySQL--day1--数据库概述

&#xff08;以下内容全部来自上述课程&#xff09; 概述 1. 为什么要用数据库 持久化&#xff1a;内存中的数据断电之后就不存在了&#xff0c;所以需要持久化–>需要相关介质。 其中的一个介质就是数据库&#xff1a;存储数据量大、存储数据类型多 2. 数据库与数据库…...

[思维模式-38]:看透事物的关系:什么是事物的关系?事物之间的关系的种类?什么是因果关系?如何通过数学的方式表达因果关系?

一、什么是事物的关系&#xff1f; 事物的关系是指不同事物之间存在的各种联系和相互作用&#xff0c;它反映了事物之间的相互依存、相互影响、相互制约等特性。以下从不同维度为你详细阐述&#xff1a; 1、关系的类型 因果关系 定义&#xff1a;一个事件&#xff08;原因&a…...

图像识别与 OCR 应用实践

图像识别是一种让计算机具备“看”与“理解”图像能力的人工智能技术&#xff0c;其目标是从图像或视频中提取有意义的信息&#xff0c;如物体、人物、场景或文字。在现实生活中&#xff0c;这项技术被广泛应用于面部识别、自动驾驶、安防监控、医疗诊断、图像搜索等多个领域。…...

深入理解卷积神经网络:从基础原理到实战应用

在人工智能领域&#xff0c;卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;简称 CNN&#xff09;凭借其强大的图像识别、处理能力&#xff0c;成为深度学习中不可或缺的技术。无论是自动驾驶汽车识别道路标志&#xff0c;还是医学影像分析辅助疾病诊断&…...

51单片机——交通指示灯控制器设计

设计目标 1、设计一交通灯控制&#xff0c;控制东西方向的红、黄、绿灯和南北方向的红、黄、绿灯。 2、可手动控制和自动控制&#xff0c;设置两个输入控制开关。 手动/自动开关&#xff0c;通过P11的按键输入控制 3、手动&#xff1a;设置开关P11&#xff0c;两种情况&#x…...

vue2 头像上传+裁剪组件封装

背景&#xff1a;最近在进行公司业务开发时&#xff0c;遇到了头像上传限制尺寸的需求&#xff0c;即限制为一寸证件照&#xff08;宽295像素&#xff0c;高413像素&#xff09;。 用到的第三方库&#xff1a; "vue-cropper": "^0.5.5" 完整组件代码&…...

面向对象设计模式之代理模式详解

文章目录 面向对象设计模式之代理模式详解面向对象思想&#xff1a;现代软件开发的基石代理模式&#xff1a;巧妙的中间层设计JavaScript 语法点与代理模式的结合JavaScript 实现代理模式示例代理模式的应用场景 面向对象设计模式之代理模式详解 在现代软件开发的浩瀚领域中&a…...

Leetcode209做题笔记

力扣209 题目分析&#xff1a;想象一个窗口遍历着这个数组&#xff0c;不断扩大右边界&#xff0c;让r。往窗口中添加数字&#xff1a; 此时我们找到了这个窗口&#xff0c;它的和满足了大于等于target的条件&#xff0c;题目让我求最短的&#xff0c;那么我们就尝试来缩短它&…...

SVG 知识详解:从入门到精通

SVG 知识详解&#xff1a;从入门到精通 作为一名前端开发者&#xff0c;我经常会被SVG的魅力所折服。这种基于XML的矢量图形格式&#xff0c;不仅能完美适配各种屏幕分辨率&#xff0c;还能通过CSS和JavaScript进行灵活控制。今天&#xff0c;就让我们一起来深入探索SVG的世界…...

编译openssl源码

openssl版本 1.1.1c windows 安装环境 perl 先安装perl&#xff0c;生成makefile需要 https://strawberryperl.com/releases.html nasm nasm 也是生成makefile需要 https://www.nasm.us/ 安装完perl输入一下nasm&#xff0c;看看能不能找到&#xff0c;找不到的话需要配…...

土壤温湿盐分传感器用于节水农业灌溉引领者三针设计原理便于安装维护

土壤温度部分是由精密铂电阻和高精度变送器两部分组成。变送器部分由电源模块、温度传感模块、变送模块、温度补偿模块及数据处理模块等组成&#xff0c;彻底解决铂电阻因自身特点导入的测量误差&#xff0c;变送器内有零漂电路和温度补偿电路&#xff0c;对使用环境有较高的适…...

Kotlin Compose 与传统 Android UI 开发对比

在移动应用开发领域,Android 开发一直是技术演进的前沿阵地,而 UI 开发作为用户与应用交互的核心环节,其技术体系的变革更是备受瞩目。 技术演进背景 Android UI 开发体系发展脉络 原生 View 体系阶段 在早期的 Android 开发中,原生 View 体系占据了主导地位。开发者通…...

docker-compose——安装redis

文章目录 一、编写docker-compose.yaml文件二、编写redis.conf文件三、启动docker-compose 一、编写docker-compose.yaml文件 version: 3.3 services:redis:image: redis:latestcontainer_name: redisrestart: alwaysports:- 6379:6379volumes:- ./redis/data:/data- ./redis/…...

MFC 调用海康相机进行软触发

初始化相机类文件 #pragma once #include "MvCameraControl.h" class CMvCamera { public:CMvCamera();~CMvCamera();//初始化相机int InitCamera();int SaveCurrentImage(CString filePath);//关闭相机void CloseCamera();//设置int SetEnumValue(IN const char* s…...

第二章 变量和运算符

主要内容 关键字和标识符变量和常量八大基本数据类型Scanner键盘输入基本数据类型的类型转换算术运算符赋值运算符扩展赋值运算符比较运算符逻辑运算符三目运算符运算符的优先级别 学习目标 知识点要求关键字和标识符理解变量和常量掌握八大基本数据类型掌握Scanner键盘输入…...

【starrocks】StarRocks 常见 HTTP 操作与导入错误排查指南

文章目录 一、Stream Load&#xff1a;通过 HTTP 导入数据二、导入状态查询三、取消导入任务四、节点状态监控查看所有 Backend 状态&#xff1a;查看所有 Frontend 状态&#xff1a; 五、导入失败的排查方式1. 查询导入任务状态2. 下载详细错误日志3. 查看 FE/BE 节点日志FE 日…...

网络协议分析 实验七 FTP、HTTP、DHCP

文章目录 实验7.1 FTP协议练习二 使用浏览器登入FTP练习三 在窗口模式下&#xff0c;上传/下传数据文件实验7.2 HTTP(Hyper Text Transfer Protocol)练习二 页面提交练习三 访问比较复杂的主页实验7.3 DHCP(Dynamic Host Configuration Protocol) 实验7.1 FTP协议 dir LIST&…...