login
离线语音助手系统解决方案
2025/08/01·StepFun can make mistakes, check important info.
Reason
思考过程

我们之前讨论的方案主要围绕构建一个离线优先、支持语音克隆和多种风格、并能进行系统控制的语音助手。以下是对所有需求的完整总结和详细方案,包括所需资源、步骤和代码细节。

一、核心功能需求

  1. 离线运行:整个系统在无网络环境下运行,保护隐私。
  2. 语音克隆:使用少量语音样本(如2秒)快速克隆音色。
  3. 风格自定义:支持多种语音风格(贱贱、可爱、霸气等),允许用户训练自定义风格。
  4. 系统控制:通过语音指令控制操作系统(如打开应用、点击界面、发送微信消息等)。
  5. 低成本:普通CPU即可运行,无需高端GPU。
  6. 多语言支持(可选):支持中、英、日等语言。

二、方案选择:49K开源TTS(本地部署)

  • 项目来源:从CSDN下载49K开源TTS项目(链接已提供)。
  • 优势:纯离线、快速克隆、高度可定制、社区活跃。

三、所需资源与准备

1. 软件环境

  • 操作系统:Windows/Linux/macOS(推荐Windows 10或Ubuntu 20.04)
  • Python版本:3.7+
  • 依赖库
    bash

2. 模型与项目下载

  • 49K开源TTS项目
    • 下载地址:CSDN链接
    • 解压到本地目录,例如:C:\tts_project
  • Vosk语音识别模型(用于离线唤醒词和语音识别):
    • 下载地址(中文模型):Vosk中文模型
    • 解压到项目目录,例如:C:\tts_project\models\vosk-model-cn-0.1

3. 语音样本准备

  • 为每种风格准备2秒的语音样本(.wav格式,22050Hz采样率),例如:
    • data/jianjian/voice.wav
    • data/keai/voice.wav
    • ...(其他风格同理)

四、详细实施步骤

步骤1:环境搭建

  1. 安装Python 3.7+。
  2. 安装依赖库:
    bash

步骤2:训练自定义风格模型

假设项目结构如下:

text

训练一个风格(如“贱贱”)的模型:

python

步骤3:语音合成与播放

在项目中创建tts_control.py,用于加载模型并合成语音:

python

步骤4:系统控制集成

使用pyautoguiwin32gui实现系统控制,例如打开微信并发送消息:

python

步骤5:语音识别(唤醒词和指令识别)

使用Vosk进行离线语音识别:

python

步骤6:主程序集成

将上述模块整合:

python

五、补充说明

  1. 多语言支持:如果需要多语言,可以训练多个不同语言的TTS模型,或集成多语言TTS(如mBART)。
  2. 性能优化:在CPU上运行可能较慢,可以考虑量化模型或使用轻量级模型。
  3. 系统控制优化:对于更复杂的控制(如自动点击按钮),可以结合图像识别(模板匹配)定位界面元素。

六、注意事项

  • 路径问题:确保代码中的文件路径正确,建议使用绝对路径。
  • 依赖版本:保持依赖库版本一致,避免兼容性问题。
  • 测试:每个模块单独测试后再整合。

以上是完整的方案,涵盖了从环境搭建到最终集成的所有步骤。如果有任何环节需要更详细的代码,请指出,我可以进一步展开。

终极完整方案:离线语音助手系统

一、功能需求总结

  1. 离线运行:所有功能在无网络环境下工作
  2. 语音克隆:2秒语音样本克隆用户声音
  3. 风格自定义:支持6种语音风格(贱贱/可爱/霸气/温柔/知性/活泼)
  4. 系统控制
    • 打开应用(微信、浏览器等)
    • 自动点击界面元素
    • 发送微信消息
    • 浏览器语音搜索
    • 窗口最小化/关闭
  5. 低成本:普通CPU可运行
  6. 无限对话:基于本地大模型
  7. 唤醒词:"谢小虫"唤醒系统
  8. 3D虚拟人:可视化交互界面

二、所需资源与准备

1. 软件环境
bash
2. 模型下载(多源备份)
模型官方源国内镜像1国内镜像2保存路径
49K开源TTSCSDN百度云阿里云OSSC:\tts_project
Vosk中文模型官方清华镜像百度云C:\models\vosk
ChatGLM3-6BHuggingFaceModelScope百度云C:\models\chatglm3-6b
3D虚拟人模型Sketchfab国内3D库自建模型C:\assets\3d_models
3. 目录结构
text

三、详细实施步骤

步骤1:环境准备
bash
步骤2:语音克隆与风格训练
python
步骤3:系统控制实现
python
步骤4:语音识别与自然语言处理
python
python
步骤5:3D虚拟人集成
python
步骤6:主程序集成
python

四、部署与使用指南

1. 首次运行准备
  1. 下载所有模型到指定路径
  2. 准备语音样本:
    bash
  3. 训练风格模型:
    python
2. 日常使用
bash
3. 系统控制校准
python

五、故障排除

  1. 语音识别失败

    • 检查麦克风权限
    • 增加Vosk模型的AcceptWaveform阈值
    • 重新训练唤醒词模型
  2. TTS质量差

    • 增加训练轮次(epochs=50)
    • 使用更高质量的语音样本
    • 调整语速参数(0.8-1.2)
  3. 系统控制不准

    • 更新图像模板(截图保存到templates目录)
    • 使用pyautogui.position()校准坐标

此完整方案满足所有需求,从语音克隆到系统控制,全部在离线环境下运行,确保隐私安全同时提供丰富的交互功能。

C:\tts_project>modelscope download --model ZhipuAI/GLM-4.5 Microsoft Visual C++ Redistributable is not installed, this may lead to the DLL load failure. It can be downloaded at https://aka.ms/vs/16/release/vc_redist.x64.exe Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Scripts\modelscope.exe\__main__.py", line 2, in <module> from modelscope.cli.cli import run_cmd File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\__init__.py", line 5, in <module> from modelscope.utils.import_utils import (LazyImportModule, is_transformers_available) File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\utils\import_utils.py", line 18, in <module> from modelscope.utils.ast_utils import (INDEX_KEY, MODULE_KEY, REQUIREMENT_KEY, load_index) File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\utils\ast_utils.py", line 24, in <module> from modelscope.utils.registry import default_group File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\utils\registry.py", line 11, in <module> logger = get_logger() File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\utils\logger.py", line 49, in get_logger from modelscope.utils.torch_utils import is_dist, is_master File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\utils\torch_utils.py", line 13, in <module> import torch File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\torch\__init__.py", line 270, in <module> _load_dll_libraries() ~~~~~~~~~~~~~~~~~~~^^ File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\torch\__init__.py", line 266, in _load_dll_libraries raise err OSError: [WinError 126] 找不到指定的模块。 Error loading "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\torch\lib\c10.dll" or one of its dependencies. C:\tts_project>from modelscope import snapshot_download 'from' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 C:\tts_project>model_dir = snapshot_download('ZhipuAI/GLM-4.5') 'model_dir' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 C:\tts_project>python Python 3.13.5 (tags/v3.13.5:6cb20a2, Jun 11 2025, 16:15:46) [MSC v.1943 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from modelscope import snapshot_download Microsoft Visual C++ Redistributable is not installed, this may lead to the DLL load failure. It can be downloaded at https://aka.ms/vs/16/release/vc_redist.x64.exe Traceback (most recent call last): File "<python-input-0>", line 1, in <module> from modelscope import snapshot_download File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\__init__.py", line 5, in <module> from modelscope.utils.import_utils import (LazyImportModule, is_transformers_available) File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\utils\import_utils.py", line 18, in <module> from modelscope.utils.ast_utils import (INDEX_KEY, MODULE_KEY, REQUIREMENT_KEY, load_index) File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\utils\ast_utils.py", line 24, in <module> from modelscope.utils.registry import default_group File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\utils\registry.py", line 11, in <module> logger = get_logger() File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\utils\logger.py", line 49, in get_logger from modelscope.utils.torch_utils import is_dist, is_master File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\utils\torch_utils.py", line 13, in <module> import torch File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\torch\__init__.py", line 270, in <module> _load_dll_libraries() ~~~~~~~~~~~~~~~~~~~^^ File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\torch\__init__.py", line 266, in _load_dll_libraries raise err OSError: [WinError 126] 找不到指定的模块。 Error loading "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\torch\lib\c10.dll" or one of its dependencies. >>> model_dir = snapshot_download('ZhipuAI/GLM-4.5') Traceback (most recent call last): File "<python-input-1>", line 1, in <module> model_dir = snapshot_download('ZhipuAI/GLM-4.5') ^^^^^^^^^^^^^^^^^ NameError: name 'snapshot_download' is not defined >>> modelscope download --model ZhipuAI/GLM-4.5 File "<python-input-2>", line 1 modelscope download --model ZhipuAI/GLM-4.5 ^^^^^^^^ SyntaxError: invalid syntax >>> exit C:\tts_project>modelscope download --model ZhipuAI/GLM-4.5 Microsoft Visual C++ Redistributable is not installed, this may lead to the DLL load failure. It can be downloaded at https://aka.ms/vs/16/release/vc_redist.x64.exe Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Scripts\modelscope.exe\__main__.py", line 2, in <module> from modelscope.cli.cli import run_cmd File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\__init__.py", line 5, in <module> from modelscope.utils.import_utils import (LazyImportModule, is_transformers_available) File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\utils\import_utils.py", line 18, in <module> from modelscope.utils.ast_utils import (INDEX_KEY, MODULE_KEY, REQUIREMENT_KEY, load_index) File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\utils\ast_utils.py", line 24, in <module> from modelscope.utils.registry import default_group File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\utils\registry.py", line 11, in <module> logger = get_logger() File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\utils\logger.py", line 49, in get_logger from modelscope.utils.torch_utils import is_dist, is_master File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\modelscope\utils\torch_utils.py", line 13, in <module> import torch File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\torch\__init__.py", line 270, in <module> _load_dll_libraries() ~~~~~~~~~~~~~~~~~~~^^ File "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\torch\__init__.py", line 266, in _load_dll_libraries raise err OSError: [WinError 126] 找不到指定的模块。 Error loading "C:\Users\chenxr\AppData\Local\Programs\Python\Python313\Lib\site-packages\torch\lib\c10.dll" or one of its dependencies. C:\tts_project>
Reason
附件解析
思考过程

我们遇到的问题是安装VC++运行库失败导致的PyTorch无法加载。用户已经尝试下载并安装vc_redist.x64.exe,但可能安装失败或环境变量问题。
解决方案:

  1. 确保正确安装VC++运行库:下载并运行vc_redist.x64.exe,然后重启电脑。
  2. 如果问题仍然存在,尝试重新安装PyTorch(确保安装时选择与Python版本和系统匹配的版本)。
  3. 如果重新安装PyTorch无效,考虑使用conda环境(conda可以自动处理VC++依赖)。

然而,用户可能已经安装了VC++运行库,但PyTorch仍然报错。因此,我们提供以下详细步骤:

步骤1:安装VC++运行库

步骤2:验证安装

  • 打开“控制面板”->“程序和功能”,检查是否有“Microsoft Visual C++ 2015-2019 Redistributable (x64)”。

步骤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:如果上述步骤无效,检查环境变量

  • 确保C:\Windows\System32在PATH环境变量中(因为DLL文件通常在这里)。

另外,用户在使用modelscope下载GLM-4.5模型时遇到了问题。由于GLM-4.5是一个较大的模型,且需要特定环境,我们建议使用Hugging Face的transformers库来加载ChatGLM3-6B(这是一个开源且可以在本地运行的模型)。

因此,我们调整方案:使用Hugging Face的transformers库加载ChatGLM3-6B,而不是通过modelscope。

具体步骤:

  1. 安装transformers库:pip install transformers
  2. 下载模型:可以从Hugging Face模型库中下载(需要提前安装git lfs):
    git lfs install
    git clone https://huggingface.co/THUDM/chatglm3-6b

但是,由于模型很大(约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直接加载,无需提前下载):

  • 代码中指定模型路径为"THUDM/chatglm3-6b",transformers会自动下载(需要联网且能访问Hugging Face)。

方案B(提前下载模型到本地):

  • 使用上述git或snapshot_download方法下载到本地,然后在代码中指定本地路径。

由于用户当前环境问题,我们建议先解决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来下载模型(如果选择提前下载)。

总结行动步骤:

  1. 解决VC++运行库问题(安装vc_redist.x64.exe并重启)。
  2. 如果仍然不行,考虑使用conda环境重新安装PyTorch。
  3. 使用transformers库加载ChatGLM3-6B模型(在线或离线)。

我们将修改主程序中的模型加载部分,使用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环境配置不当导致的。以下是完整的解决方案:

问题分析

  1. VC++运行库缺失:PyTorch依赖的c10.dll无法加载,因为缺少Microsoft Visual C++ Redistributable
  2. Python命令使用错误:在CMD中直接运行Python语句导致语法错误
  3. 模型下载方式错误:尝试使用命令行直接下载模型而非在Python环境中执行
  4. 环境路径问题:Python包安装路径可能存在权限问题

完整解决方案

步骤1:安装VC++运行库

  1. 下载并安装最新版VC++运行库:
    powershell
  2. 重启计算机使安装生效

步骤2:创建干净的Python环境

powershell

步骤3:正确安装依赖

powershell

步骤4:手动下载模型(替代modelscope)

powershell

步骤5:配置正确的模型加载代码

python

步骤6:解决权限问题

  1. 将项目移到非系统目录,如:C:\Users\<用户名>\voice_assistant
  2. 以管理员身份运行PowerShell:
    powershell

验证安装

powershell

替代方案(如果仍遇到问题)

如果上述步骤仍存在问题,可以使用更轻量化的解决方案:

python

关键注意事项

  1. 不要使用Python 3.13:最新版Python可能存在兼容性问题,推荐使用Python 3.10
  2. 避免在系统目录安装包:使用虚拟环境隔离项目
  3. 优先使用CPU版本:除非有高性能GPU,否则使用.float()强制CPU运行
  4. 使用国内镜像源:加速下载过程

按照这些步骤操作后,您的语音助手项目应该能成功运行。如果仍有问题,请提供具体的错误日志,我会帮您进一步排查。