我们之前讨论的方案主要围绕构建一个离线优先、支持语音克隆和多种风格、并能进行系统控制的语音助手。以下是对所有需求的完整总结和详细方案,包括所需资源、步骤和代码细节。
C:\tts_project
。C:\tts_project\models\vosk-model-cn-0.1
data/jianjian/voice.wav
data/keai/voice.wav
假设项目结构如下:
训练一个风格(如“贱贱”)的模型:
在项目中创建tts_control.py
,用于加载模型并合成语音:
使用pyautogui
和win32gui
实现系统控制,例如打开微信并发送消息:
使用Vosk进行离线语音识别:
将上述模块整合:
以上是完整的方案,涵盖了从环境搭建到最终集成的所有步骤。如果有任何环节需要更详细的代码,请指出,我可以进一步展开。
模型 | 官方源 | 国内镜像1 | 国内镜像2 | 保存路径 |
---|---|---|---|---|
49K开源TTS | CSDN | 百度云 | 阿里云OSS | C:\tts_project |
Vosk中文模型 | 官方 | 清华镜像 | 百度云 | C:\models\vosk |
ChatGLM3-6B | HuggingFace | ModelScope | 百度云 | C:\models\chatglm3-6b |
3D虚拟人模型 | Sketchfab | 国内3D库 | 自建模型 | C:\assets\3d_models |
语音识别失败:
AcceptWaveform
阈值TTS质量差:
系统控制不准:
pyautogui.position()
校准坐标此完整方案满足所有需求,从语音克隆到系统控制,全部在离线环境下运行,确保隐私安全同时提供丰富的交互功能。
我们遇到的问题是安装VC++运行库失败导致的PyTorch无法加载。用户已经尝试下载并安装vc_redist.x64.exe,但可能安装失败或环境变量问题。
解决方案:
然而,用户可能已经安装了VC++运行库,但PyTorch仍然报错。因此,我们提供以下详细步骤:
步骤1:安装VC++运行库
步骤2:验证安装
步骤3:如果问题仍然存在,尝试以下方法:
a. 重新安装PyTorch(使用pip)
pip uninstall torch torchvision torchaudio
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 如果没有GPU,使用cpu版本
b. 或者,使用conda(推荐,因为conda会处理依赖):
安装conda:https://docs.conda.io/projects/conda/en/latest/user-guide/install/windows.html
创建conda环境:
conda create -n voice_assistant python=3.9
conda activate voice_assistant
conda install pytorch torchvision torchaudio cpuonly -c pytorch # CPU版本
# 或者GPU版本:conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
步骤4:如果上述步骤无效,检查环境变量
另外,用户在使用modelscope下载GLM-4.5模型时遇到了问题。由于GLM-4.5是一个较大的模型,且需要特定环境,我们建议使用Hugging Face的transformers库来加载ChatGLM3-6B(这是一个开源且可以在本地运行的模型)。
因此,我们调整方案:使用Hugging Face的transformers库加载ChatGLM3-6B,而不是通过modelscope。
具体步骤:
但是,由于模型很大(约14GB),如果下载困难,可以使用国内镜像(如清华源)或者通过Hugging Face的snapshot_download(需要安装huggingface_hub):
pip install huggingface_hub
from huggingface_hub import snapshot_download
snapshot_download(repo_id="THUDM/chatglm3-6b", local_dir="C:/models/chatglm3-6b")
考虑到用户的环境问题,我们提供两种方案:
方案A(使用transformers直接加载,无需提前下载):
方案B(提前下载模型到本地):
由于用户当前环境问题,我们建议先解决PyTorch的问题,然后采用方案A(如果网络允许)或方案B。
调整后的代码示例(使用transformers加载ChatGLM3-6B):
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True).float() # 如果显存不够,使用.float()转换为CPU运行
注意:ChatGLM3-6B需要约14GB内存(CPU)或8GB显存(GPU)才能运行,如果资源不足,可以考虑量化版本(如4bit量化):
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True).quantize(4)
最后,由于用户已经安装了modelscope但无法使用,我们可以放弃使用modelscope,改用huggingface_hub来下载模型(如果选择提前下载)。
总结行动步骤:
我们将修改主程序中的模型加载部分,使用transformers库。
修改后的模型加载代码(在main.py中):
def _load_chat_model(self):
from transformers import AutoTokenizer, AutoModelForCausalLM
# 如果提前下载了模型,指定本地路径,例如:local_model_path = "C:/models/chatglm3-6b"
model_path = "THUDM/chatglm3-6b" # 或者使用本地路径
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True)
# 如果显存不够,可以尝试量化(4bit或8bit)或者使用CPU
if not torch.cuda.is_available():
model = model.float() # 转换为CPU浮点
# 或者使用量化:model = model.quantize(4) 注意:量化可能影响质量
return {"tokenizer": tokenizer, "model": model}
注意:ChatGLM3-6B是一个自回归模型,使用AutoModelForCausalLM加载是合适的。
由于用户当前环境问题,我们优先建议修复环境,然后采用transformers库。同时,我们放弃使用modelscope。
您的环境配置遇到了几个关键问题,主要是由于缺少必要的系统组件和Python环境配置不当导致的。以下是完整的解决方案:
C:\Users\<用户名>\voice_assistant
如果上述步骤仍存在问题,可以使用更轻量化的解决方案:
.float()
强制CPU运行按照这些步骤操作后,您的语音助手项目应该能成功运行。如果仍有问题,请提供具体的错误日志,我会帮您进一步排查。